File: lock_spec.cr

package info (click to toggle)
shards 0.19.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 904 kB
  • sloc: makefile: 117
file content (72 lines) | stat: -rw-r--r-- 2,426 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
require "./spec_helper"
require "../../src/lock"

module Shards
  describe Lock do
    it "parses" do
      create_git_repository "library", "0.1.0"

      lock = Lock.from_yaml <<-YAML
      version: 1.0
      shards:
        repo:
          github: user/repo
          version: 1.2.3
        example:
          git: #{git_url(:library)}
          commit: #{git_commits(:library)[0]}
        new_git:
          git: https://example.com/new.git
          version: 1.2.3+git.commit.0d246ee6c52d4e758651b8669a303f04be9a2a96
        new_path:
          path: ../path
          version: 0.1.2
      YAML

      lock.version.should eq("1.0")

      shards = lock.shards
      shards.size.should eq(4)

      shards[0].name.should eq("repo")
      shards[0].resolver.should eq(GitResolver.new("repo", "https://github.com/user/repo.git"))
      shards[0].version.should eq(version "1.2.3")
      shards[0].to_s.should eq("repo (1.2.3)")

      shards[1].name.should eq("example")
      shards[1].resolver.should eq(GitResolver.new("example", git_url(:library)))
      shards[1].version.should eq(version "0.1.0+git.commit.#{git_commits(:library)[0]}")
      shards[1].to_s.should eq("example (0.1.0 at #{git_commits(:library)[0][0...7]})")

      shards[2].name.should eq("new_git")
      shards[2].resolver.should eq(GitResolver.new("new_git", "https://example.com/new.git"))
      shards[2].version.should eq(version "1.2.3+git.commit.0d246ee6c52d4e758651b8669a303f04be9a2a96")
      shards[2].to_s.should eq("new_git (1.2.3 at 0d246ee)")

      shards[3].name.should eq("new_path")
      shards[3].resolver.should eq(PathResolver.new("new_path", "../path"))
      shards[3].version.should eq(version "0.1.2")
      shards[3].to_s.should eq("new_path (0.1.2 at ../path)")
    end

    it "raises on unknown version" do
      expect_raises(InvalidLock, "Unsupported #{LOCK_FILENAME}.") { Lock.from_yaml("version: 99\n") }
    end

    it "raises on invalid format" do
      expect_raises(Error, "Invalid #{LOCK_FILENAME}.") { Lock.from_yaml("") }

      expect_raises(Error, "Invalid #{LOCK_FILENAME}.") { Lock.from_yaml("version: 1.0\n") }

      expect_raises(Error, "Invalid #{LOCK_FILENAME}.") { Lock.from_yaml("version: 1.0\nshards:\n") }
    end

    it "parses empty shards" do
      lock = Lock.from_yaml <<-YAML
        version: 2.0
        shards: {}
        YAML
      lock.shards.empty?.should be_true
    end
  end
end