File tree Expand file tree Collapse file tree 3 files changed +26
-4
lines changed Expand file tree Collapse file tree 3 files changed +26
-4
lines changed Original file line number Diff line number Diff line change @@ -98,6 +98,10 @@ module Shards
98
98
self << package
99
99
end
100
100
101
+ if dependency.name != package.spec.name
102
+ raise Error .new(" Error shard name (#{ package.spec.name } ) doesn't match dependency name (#{ dependency.name } )" )
103
+ end
104
+
101
105
package.requirements << dependency.version
102
106
package
103
107
end
Original file line number Diff line number Diff line change @@ -224,4 +224,16 @@ class InstallCommandTest < Minitest::Test
224
224
refute Dir .exists?(File .join(application_path, " libs" , " fails" ))
225
225
end
226
226
end
227
+
228
+ def test_fails_when_shard_name_doesnt_match
229
+ metadata = {
230
+ dependencies: {
231
+ typo: { git: git_url(:mock ), version: " *" }
232
+ }
233
+ }
234
+ with_shard(metadata) do
235
+ ex = assert_raises(FailedCommand ) { run " shards install --no-color" }
236
+ assert_match " Error shard name (mock) doesn't match dependency name (typo)" , ex.stdout
237
+ end
238
+ end
227
239
end
Original file line number Diff line number Diff line change @@ -34,14 +34,20 @@ module Shards
34
34
yml << " \n "
35
35
value.each do |name , version |
36
36
yml << " " << name << " :\n "
37
- yml << " git: " << git_url(name).inspect << " \n "
38
37
39
- if version.is_a?(String )
38
+ case version
39
+ when String
40
+ yml << " git: " << git_url(name).inspect << " \n "
40
41
yml << " version: " << version.inspect << " \n "
41
- elsif version
42
+ when Hash
43
+ unless version.keys.includes?(:git )
44
+ yml << " git: " << git_url(name).inspect << " \n "
45
+ end
42
46
version.each do |k , v |
43
- yml << " " << k << " : " << v << " \n "
47
+ yml << " " << k << " : " << v.inspect << " \n "
44
48
end
49
+ else
50
+ yml << " git: " << git_url(name).inspect << " \n "
45
51
end
46
52
end
47
53
else
You can’t perform that action at this time.
0 commit comments