File tree Expand file tree Collapse file tree 3 files changed +38
-4
lines changed Expand file tree Collapse file tree 3 files changed +38
-4
lines changed Original file line number Diff line number Diff line change @@ -341,6 +341,30 @@ describe "install" do
341
341
end
342
342
end
343
343
344
+ it " test install old with version when shard was renamed" do
345
+ metadata = {
346
+ dependencies: {
347
+ old_name: {git: git_url(:renamed ), version: " 0.1.0" },
348
+ },
349
+ }
350
+ with_shard(metadata) do
351
+ run " shards install"
352
+ assert_installed " old_name" , " 0.1.0"
353
+ end
354
+ end
355
+
356
+ it " test install new when shard was renamed" do
357
+ metadata = {
358
+ dependencies: {
359
+ new_name: {git: git_url(:renamed )},
360
+ },
361
+ }
362
+ with_shard(metadata) do
363
+ run " shards install"
364
+ assert_installed " new_name" , " 0.2.0"
365
+ end
366
+ end
367
+
344
368
it " installs executables at version" do
345
369
metadata = {
346
370
dependencies: {binary: " 0.1.0" },
Original file line number Diff line number Diff line change @@ -61,6 +61,10 @@ private def setup_repositories
61
61
create_file " version" , " src/version.cr" , %( module Version; STRING = "version @ 0.1.0"; end)
62
62
create_git_release " version" , " 0.1.0"
63
63
64
+ create_git_repository " renamed"
65
+ create_git_release " renamed" , " 0.1.0" , " name: old_name\n version: 0.1.0"
66
+ create_git_release " renamed" , " 0.2.0" , " name: new_name\n version: 0.2.0"
67
+
64
68
create_git_repository " transitive"
65
69
create_file " transitive" , " src/version.cr" , %( require "version"; puts Version::STRING)
66
70
create_git_release " transitive" , " 0.2.0" , <<-YAML
Original file line number Diff line number Diff line change @@ -46,6 +46,11 @@ module Shards
46
46
packages = [] of Package
47
47
result.each do |v |
48
48
spec = v.payload.as(Spec ) || raise " BUG: returned graph payload was not a Spec"
49
+ v.requirements.each do |dependency |
50
+ unless dependency.name == spec.name
51
+ raise Error .new(" Error shard name (#{ spec.name } ) doesn't match dependency name (#{ dependency.name } )" )
52
+ end
53
+ end
49
54
resolver = spec.resolver || raise " BUG: returned Spec has no resolver"
50
55
version = spec.version
51
56
@@ -60,7 +65,11 @@ module Shards
60
65
packages
61
66
end
62
67
63
- def name_for (dependency )
68
+ def name_for (spec : Shards ::Spec )
69
+ spec.resolver.not_nil!.dependency.name
70
+ end
71
+
72
+ def name_for (dependency : Shards ::Dependency )
64
73
dependency.name
65
74
end
66
75
@@ -74,9 +83,6 @@ module Shards
74
83
result = versions.map do |version |
75
84
@specs [{dependency.name, version}] ||= begin
76
85
resolver.spec(version).tap do |spec |
77
- unless dependency.name == spec.name
78
- raise Error .new(" Error shard name (#{ spec.name } ) doesn't match dependency name (#{ dependency.name } )" )
79
- end
80
86
spec.version = version
81
87
end
82
88
end
You can’t perform that action at this time.
0 commit comments