File tree Expand file tree Collapse file tree 3 files changed +19
-5
lines changed Expand file tree Collapse file tree 3 files changed +19
-5
lines changed Original file line number Diff line number Diff line change @@ -200,6 +200,17 @@ describe "install" do
200
200
end
201
201
end
202
202
203
+ it " fails to install when dependency requirement (commit) changed in production" do
204
+ metadata = {dependencies: {inprogress: {git: git_url(:inprogress ), commit: git_commits(:inprogress )[1 ]}}}
205
+ lock = {inprogress: git_commits(:inprogress ).first}
206
+
207
+ with_shard(metadata, lock) do
208
+ ex = expect_raises(FailedCommand ) { run " shards install --no-color --production" }
209
+ ex.stdout.should contain(" Outdated shard.lock" )
210
+ refute_installed " inprogress"
211
+ end
212
+ end
213
+
203
214
it " updates when dependency requirement changed" do
204
215
metadata = {dependencies: {web: " 2.0.0" }}
205
216
lock = {web: " 1.0.0" }
Original file line number Diff line number Diff line change @@ -66,6 +66,10 @@ private def setup_repositories
66
66
create_git_release " renamed" , " 0.2.0" , " name: new_name\n version: 0.2.0"
67
67
create_git_version_commit " renamed" , " 0.3.0" , " name: another_name\n version: 0.3.0"
68
68
69
+ create_git_repository " inprogress"
70
+ create_git_version_commit " inprogress" , " 0.1.0"
71
+ create_git_version_commit " inprogress" , " 0.1.0"
72
+
69
73
create_git_repository " transitive"
70
74
create_file " transitive" , " src/version.cr" , %( require "version"; puts Version::STRING)
71
75
create_git_release " transitive" , " 0.2.0" , <<-YAML
Original file line number Diff line number Diff line change @@ -33,10 +33,10 @@ module Shards
33
33
private def validate (packages )
34
34
packages.each do |package |
35
35
if lock = locks.find { |d | d.name == package.name }
36
- if version = lock.version?
37
- validate_locked_version(package, version)
38
- elsif commit = lock[" commit" ]?
36
+ if commit = lock[" commit" ]?
39
37
validate_locked_commit(package, commit)
38
+ elsif version = lock.version?
39
+ validate_locked_version(package, version)
40
40
else
41
41
raise InvalidLock .new # unknown lock resolver
42
42
end
@@ -48,12 +48,11 @@ module Shards
48
48
49
49
private def validate_locked_version (package , version )
50
50
return if package.version == version
51
- return if Versions .matches?(version, package.spec.version)
52
51
raise LockConflict .new(" #{ package.name } requirements changed" )
53
52
end
54
53
55
54
private def validate_locked_commit (package , commit )
56
- return if commit == package. commit
55
+ return if package. commit == commit
57
56
raise LockConflict .new(" #{ package.name } requirements changed" )
58
57
end
59
58
You can’t perform that action at this time.
0 commit comments