social_snippet 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/.gitignore +2 -0
- data/.travis.yml +22 -3
- data/Gemfile +25 -2
- data/Guardfile +9 -0
- data/README.md +6 -1
- data/Rakefile +51 -1
- data/appveyor.yml +36 -0
- data/bin/ssnip +10 -0
- data/bin/sspm +10 -0
- data/lib/social_snippet.rb +15 -4
- data/lib/social_snippet/api.rb +238 -0
- data/lib/social_snippet/command_line.rb +4 -0
- data/lib/social_snippet/command_line/command.rb +158 -0
- data/lib/social_snippet/command_line/ssnip.rb +2 -0
- data/lib/social_snippet/command_line/ssnip/main_command.rb +26 -0
- data/lib/social_snippet/command_line/sspm.rb +3 -0
- data/lib/social_snippet/command_line/sspm/main_command.rb +63 -0
- data/lib/social_snippet/command_line/sspm/sub_commands.rb +16 -0
- data/lib/social_snippet/command_line/sspm/sub_commands/complete_command.rb +28 -0
- data/lib/social_snippet/command_line/sspm/sub_commands/info_command.rb +28 -0
- data/lib/social_snippet/command_line/sspm/sub_commands/install_command.rb +103 -0
- data/lib/social_snippet/command_line/sspm/sub_commands/publish_command.rb +51 -0
- data/lib/social_snippet/command_line/sspm/sub_commands/search_command.rb +32 -0
- data/lib/social_snippet/command_line/sspm/sub_commands/update_command.rb +37 -0
- data/lib/social_snippet/config.rb +92 -0
- data/lib/social_snippet/context.rb +89 -0
- data/lib/social_snippet/core.rb +40 -0
- data/lib/social_snippet/inserter.rb +64 -0
- data/lib/social_snippet/logger.rb +9 -0
- data/lib/social_snippet/registry.rb +3 -0
- data/lib/social_snippet/registry/registry_client.rb +15 -0
- data/lib/social_snippet/registry/registry_resources.rb +3 -0
- data/lib/social_snippet/registry/registry_resources/base.rb +80 -0
- data/lib/social_snippet/registry/registry_resources/repositories.rb +23 -0
- data/lib/social_snippet/repository.rb +6 -0
- data/lib/social_snippet/repository/drivers.rb +3 -0
- data/lib/social_snippet/repository/drivers/base_repository.rb +192 -0
- data/lib/social_snippet/repository/drivers/git_repository.rb +76 -0
- data/lib/social_snippet/repository/repository_errors.rb +5 -0
- data/lib/social_snippet/repository/repository_factory.rb +59 -0
- data/lib/social_snippet/repository/repository_installer.rb +86 -0
- data/lib/social_snippet/repository/repository_manager.rb +177 -0
- data/lib/social_snippet/resolvers.rb +4 -0
- data/lib/social_snippet/resolvers/base_resolver.rb +103 -0
- data/lib/social_snippet/resolvers/dep_resolver.rb +61 -0
- data/lib/social_snippet/resolvers/insert_resolver.rb +100 -0
- data/lib/social_snippet/snippet.rb +14 -0
- data/lib/social_snippet/tag.rb +198 -0
- data/lib/social_snippet/tag_parser.rb +61 -0
- data/lib/social_snippet/version.rb +26 -1
- data/social_snippet.gemspec +18 -3
- data/spec/helpers/codeclimate_helper.rb +4 -0
- data/spec/helpers/fakefs_helper.rb +15 -0
- data/spec/helpers/webmock_helper.rb +16 -0
- data/spec/lib/api_spec.rb +106 -0
- data/spec/lib/command_line/sspm_install_spec.rb +224 -0
- data/spec/lib/command_line/sspm_search_spec.rb +167 -0
- data/spec/lib/command_line/sspm_spec.rb +81 -0
- data/spec/lib/config_spec.rb +56 -0
- data/spec/lib/context_spec.rb +48 -0
- data/spec/lib/core_spec.rb +126 -0
- data/spec/lib/inserter_spec.rb +177 -0
- data/spec/lib/registry_client_spec.rb +173 -0
- data/spec/lib/repository/base_repository_spec.rb +104 -0
- data/spec/lib/repository/git_repository_spec.rb +83 -0
- data/spec/lib/repository/repository_factory_spec.rb +31 -0
- data/spec/lib/repository/repository_installer_spec.rb +63 -0
- data/spec/lib/repository/repository_manager_spec.rb +201 -0
- data/spec/lib/tag_parser_spec.rb +173 -0
- data/spec/lib/tag_spec.rb +93 -0
- data/spec/spec_helper.rb +106 -0
- data/test/base_repository_test.rb +375 -0
- data/test/command_test.rb +39 -0
- data/test/context_test.rb +31 -0
- data/test/core_test.rb +2091 -0
- data/test/git_repository_test.rb +114 -0
- data/test/install_command_test.rb +28 -0
- data/test/repository_manager_test.rb +109 -0
- data/test/tag_parser_test.rb +47 -0
- data/test/tag_test.rb +217 -0
- data/test/version_test.rb +56 -0
- metadata +271 -14
@@ -0,0 +1,224 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module SocialSnippet::CommandLine
|
4
|
+
|
5
|
+
describe SSpm::SubCommands::InstallCommand do
|
6
|
+
|
7
|
+
before do
|
8
|
+
allow_any_instance_of(
|
9
|
+
::SocialSnippet::Registry::RegistryResources::Base
|
10
|
+
).to receive(:rest_client) do
|
11
|
+
::RestClient::Resource.new "http://api.server/api/dummy"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:my_repo_info) do
|
16
|
+
{
|
17
|
+
"name" => "my-repo",
|
18
|
+
"desc" => "This is new repository.",
|
19
|
+
"url" => "git://github.com/user/my-repo",
|
20
|
+
"dependencies" => {
|
21
|
+
},
|
22
|
+
}
|
23
|
+
end # result
|
24
|
+
|
25
|
+
before do
|
26
|
+
WebMock
|
27
|
+
.stub_request(
|
28
|
+
:get,
|
29
|
+
"http://api.server/api/dummy/repositories/my-repo",
|
30
|
+
)
|
31
|
+
.to_return(
|
32
|
+
:status => 200,
|
33
|
+
:body => my_repo_info.to_json,
|
34
|
+
:headers => {
|
35
|
+
"Content-Type" => "application/json",
|
36
|
+
},
|
37
|
+
)
|
38
|
+
end # GET /repositories/my-repo/dependencies
|
39
|
+
|
40
|
+
let(:new_repo_info) do
|
41
|
+
{
|
42
|
+
"name" => "new-repo",
|
43
|
+
"desc" => "This is new repository.",
|
44
|
+
"url" => "git://github.com/user/new-repo",
|
45
|
+
"dependencies" => {
|
46
|
+
"my-repo" => "1.0.0",
|
47
|
+
},
|
48
|
+
}
|
49
|
+
end # result
|
50
|
+
|
51
|
+
before do
|
52
|
+
WebMock
|
53
|
+
.stub_request(
|
54
|
+
:get,
|
55
|
+
"http://api.server/api/dummy/repositories/new-repo",
|
56
|
+
)
|
57
|
+
.to_return(
|
58
|
+
:status => 200,
|
59
|
+
:body => new_repo_info.to_json,
|
60
|
+
:headers => {
|
61
|
+
"Content-Type" => "application/json",
|
62
|
+
},
|
63
|
+
)
|
64
|
+
end # GET /repositories/new-repo/dependencies
|
65
|
+
|
66
|
+
before do
|
67
|
+
allow(::SocialSnippet::Repository::RepositoryFactory).to receive(:clone).with(/my-repo/) do |url|
|
68
|
+
class FakeRepo
|
69
|
+
attr_reader :path
|
70
|
+
end
|
71
|
+
|
72
|
+
repo = FakeRepo.new
|
73
|
+
allow(repo).to receive(:path).and_return "/path/to/my-repo"
|
74
|
+
allow(repo).to receive(:name).and_return "my-repo"
|
75
|
+
allow(repo).to receive(:create_cache).and_return ""
|
76
|
+
allow(repo).to receive(:has_versions?).and_return true
|
77
|
+
allow(repo).to receive(:latest_version).and_return "1.2.3"
|
78
|
+
allow(repo).to receive(:dependencies).and_return({})
|
79
|
+
repo
|
80
|
+
end
|
81
|
+
end # prepare my-repo
|
82
|
+
|
83
|
+
before do
|
84
|
+
allow(::SocialSnippet::Repository::RepositoryFactory).to receive(:clone).with(/new-repo/) do |url|
|
85
|
+
class FakeRepo
|
86
|
+
attr_reader :path
|
87
|
+
end
|
88
|
+
|
89
|
+
repo = FakeRepo.new
|
90
|
+
allow(repo).to receive(:path).and_return "/path/to/new-repo"
|
91
|
+
allow(repo).to receive(:name).and_return "new-repo"
|
92
|
+
allow(repo).to receive(:create_cache).and_return ""
|
93
|
+
allow(repo).to receive(:has_versions?).and_return true
|
94
|
+
allow(repo).to receive(:latest_version).and_return "1.2.4"
|
95
|
+
allow(repo).to receive(:dependencies).and_return new_repo_info["dependencies"]
|
96
|
+
repo
|
97
|
+
end
|
98
|
+
end # prepare new-repo
|
99
|
+
|
100
|
+
before do
|
101
|
+
allow(::FileUtils).to receive(:cp_r) do
|
102
|
+
# do nothing
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
#
|
107
|
+
# main
|
108
|
+
#
|
109
|
+
let(:install_command_output) { ::StringIO.new }
|
110
|
+
let(:install_command_logger) { ::SocialSnippet::Logger.new install_command_output }
|
111
|
+
before { allow(fake_social_snippet).to receive(:logger).and_return install_command_logger }
|
112
|
+
|
113
|
+
describe "$ sspm install" do
|
114
|
+
|
115
|
+
context "create snippet.json" do
|
116
|
+
|
117
|
+
before do
|
118
|
+
FileUtils.touch "snippet.json"
|
119
|
+
File.write "snippet.json", {
|
120
|
+
:dependencies => {
|
121
|
+
"foo" => "1.2.3",
|
122
|
+
"bar" => "0.0.1"
|
123
|
+
},
|
124
|
+
}.to_json
|
125
|
+
end
|
126
|
+
|
127
|
+
example do
|
128
|
+
install_command = SSpm::SubCommands::InstallCommand.new([])
|
129
|
+
expect(fake_social_snippet.api).to receive(:install_repository_by_name).with("foo", "1.2.3", kind_of(Hash)).once
|
130
|
+
expect(fake_social_snippet.api).to receive(:install_repository_by_name).with("bar", "0.0.1", kind_of(Hash)).once
|
131
|
+
install_command.run
|
132
|
+
end
|
133
|
+
|
134
|
+
end # create snippet.json
|
135
|
+
|
136
|
+
end # $ sspm install
|
137
|
+
|
138
|
+
describe "$ sspm install my-repo" do
|
139
|
+
|
140
|
+
let(:install_command_output) { ::StringIO.new }
|
141
|
+
let(:install_command_logger) { ::SocialSnippet::Logger.new install_command_output }
|
142
|
+
|
143
|
+
before do
|
144
|
+
install_command_logger.level = ::SocialSnippet::Logger::Severity::INFO
|
145
|
+
allow(fake_social_snippet).to receive(:logger).and_return install_command_logger
|
146
|
+
install_command = SSpm::SubCommands::InstallCommand.new ["my-repo"]
|
147
|
+
install_command.init
|
148
|
+
install_command.run
|
149
|
+
end
|
150
|
+
|
151
|
+
subject { install_command_output.string }
|
152
|
+
it { should match(/my-repo/) }
|
153
|
+
it { should match(/Installing/) }
|
154
|
+
it { should match(/Cloning/) }
|
155
|
+
it { should match(/Success/) }
|
156
|
+
it { should_not match(/dependencies/) }
|
157
|
+
|
158
|
+
context "$ sspm install my-repo (second)" do
|
159
|
+
|
160
|
+
let(:second_install_command_output) { ::StringIO.new }
|
161
|
+
let(:second_install_command_logger) { ::SocialSnippet::Logger.new second_install_command_output }
|
162
|
+
|
163
|
+
subject do
|
164
|
+
install_command_logger.level = ::SocialSnippet::Logger::Severity::INFO
|
165
|
+
allow(fake_social_snippet).to receive(:logger).and_return second_install_command_logger
|
166
|
+
install_command = SSpm::SubCommands::InstallCommand.new ["my-repo"]
|
167
|
+
install_command.init
|
168
|
+
install_command.run
|
169
|
+
second_install_command_output.string
|
170
|
+
end
|
171
|
+
|
172
|
+
it { should match(/my-repo/) }
|
173
|
+
it { should_not match(/Installing/) }
|
174
|
+
it { should_not match(/Cloning/) }
|
175
|
+
it { should_not match(/Success/) }
|
176
|
+
it { should_not match(/dependencies/) }
|
177
|
+
|
178
|
+
end # (reinstall) $ sspm install my-repo
|
179
|
+
|
180
|
+
end # $ sspm install my-repo
|
181
|
+
|
182
|
+
describe "$ sspm install new-repo" do
|
183
|
+
|
184
|
+
before do
|
185
|
+
install_command = SSpm::SubCommands::InstallCommand.new ["new-repo"]
|
186
|
+
install_command.init
|
187
|
+
install_command.run
|
188
|
+
end
|
189
|
+
|
190
|
+
subject { install_command_output.string }
|
191
|
+
it { should match(/my-repo/) }
|
192
|
+
it { should match(/new-repo/) }
|
193
|
+
it { should match(/my-repo.*new-repo/m) }
|
194
|
+
it { should match(/Installing: new-repo#1.2.4/) }
|
195
|
+
it { should match(/Installing: my-repo#1.0.0/) }
|
196
|
+
it { should match(/Cloning/) }
|
197
|
+
it { should match(/Success/) }
|
198
|
+
it { should match(/Finding new-repo#1.2.4's/) }
|
199
|
+
|
200
|
+
end # $ sspm install new-repo
|
201
|
+
|
202
|
+
describe "$ sspm install --dry-run new-repo" do
|
203
|
+
|
204
|
+
before do
|
205
|
+
install_command = SSpm::SubCommands::InstallCommand.new ["--dry-run", "new-repo"]
|
206
|
+
install_command.init
|
207
|
+
install_command.run
|
208
|
+
end
|
209
|
+
|
210
|
+
subject { install_command_output.string }
|
211
|
+
it { should match(/my-repo/) }
|
212
|
+
it { should match(/new-repo/) }
|
213
|
+
it { should match(/new-repo.*my-repo/m) }
|
214
|
+
it { should match(/Installing: new-repo#1.2.4/) }
|
215
|
+
it { should match(/Installing: my-repo#1.0.0/) }
|
216
|
+
it { should match(/Cloning/) }
|
217
|
+
it { should match(/Finding new-repo#1.2.4's/) }
|
218
|
+
it { should match(/Success/) }
|
219
|
+
|
220
|
+
end # $ sspm install new-repo
|
221
|
+
|
222
|
+
end # SSpm::SubCommands::InstallCommand
|
223
|
+
|
224
|
+
end # SocialSnippet::CommandLine
|
@@ -0,0 +1,167 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module SocialSnippet::CommandLine
|
4
|
+
|
5
|
+
describe SSpm::SubCommands::SearchCommand do
|
6
|
+
|
7
|
+
let(:fake_repos) do
|
8
|
+
[
|
9
|
+
{
|
10
|
+
"name" => "my-repo",
|
11
|
+
"desc" => "This is my repository.",
|
12
|
+
"url" => "git://github.com/user/my-repo",
|
13
|
+
},
|
14
|
+
{
|
15
|
+
"name" => "new-repo",
|
16
|
+
"desc" => "This is new repository.",
|
17
|
+
"url" => "git://github.com/user/new-repo",
|
18
|
+
},
|
19
|
+
]
|
20
|
+
end
|
21
|
+
|
22
|
+
before do
|
23
|
+
allow_any_instance_of(::SocialSnippet::Registry::RegistryResources::Base).to receive(:rest_client) do
|
24
|
+
RestClient::Resource.new "http://api.server/api/dummy"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context "create instance" do
|
29
|
+
|
30
|
+
let(:search_command_output) { ::StringIO.new }
|
31
|
+
let(:search_command_logger) { ::SocialSnippet::Logger.new search_command_output }
|
32
|
+
before { allow(fake_social_snippet).to receive(:logger).and_return search_command_logger }
|
33
|
+
|
34
|
+
describe "$ search repo" do
|
35
|
+
|
36
|
+
let(:search_command) { SSpm::SubCommands::SearchCommand.new(["repo"]) }
|
37
|
+
before { search_command.init }
|
38
|
+
|
39
|
+
before do
|
40
|
+
WebMock
|
41
|
+
.stub_request(
|
42
|
+
:get,
|
43
|
+
"http://api.server/api/dummy/repositories?q=repo",
|
44
|
+
)
|
45
|
+
.to_return(
|
46
|
+
:status => 200,
|
47
|
+
:body => fake_repos.to_json,
|
48
|
+
:headers => {
|
49
|
+
"Content-Type" => "application/json",
|
50
|
+
},
|
51
|
+
)
|
52
|
+
end # GET /repositories?q=repo
|
53
|
+
|
54
|
+
context "run" do
|
55
|
+
|
56
|
+
before { search_command.run }
|
57
|
+
|
58
|
+
context "name" do
|
59
|
+
|
60
|
+
it "my-repo" do
|
61
|
+
expect(search_command_output.string).to match(/my-repo/)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "new-repo" do
|
65
|
+
expect(search_command_output.string).to match(/my-repo/)
|
66
|
+
end
|
67
|
+
|
68
|
+
end # name
|
69
|
+
|
70
|
+
context "desc" do
|
71
|
+
|
72
|
+
it "my-repo" do
|
73
|
+
expect(search_command_output.string).to match(/my repository/)
|
74
|
+
end
|
75
|
+
|
76
|
+
it "new-repo" do
|
77
|
+
expect(search_command_output.string).to match(/new repository/)
|
78
|
+
end
|
79
|
+
|
80
|
+
end # desc
|
81
|
+
|
82
|
+
context "url" do
|
83
|
+
|
84
|
+
it "my-repo" do
|
85
|
+
expect(search_command_output.string).to_not match(/#{"git://github.com/user/my-repo"}/)
|
86
|
+
end
|
87
|
+
|
88
|
+
it "new-repo" do
|
89
|
+
expect(search_command_output.string).to_not match(/#{"git://github.com/user/new-repo"}/)
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
|
94
|
+
end # run
|
95
|
+
|
96
|
+
end # $ search repo
|
97
|
+
|
98
|
+
describe "$ search --name --no-desc repo" do
|
99
|
+
|
100
|
+
let(:search_command) { SSpm::SubCommands::SearchCommand.new(["--name", "--no-desc", "repo"]) }
|
101
|
+
before { search_command.init }
|
102
|
+
|
103
|
+
before do
|
104
|
+
WebMock
|
105
|
+
.stub_request(
|
106
|
+
:get,
|
107
|
+
"http://api.server/api/dummy/repositories?q=repo",
|
108
|
+
)
|
109
|
+
.to_return(
|
110
|
+
:status => 200,
|
111
|
+
:body => fake_repos.to_json,
|
112
|
+
:headers => {
|
113
|
+
"Content-Type" => "application/json",
|
114
|
+
},
|
115
|
+
)
|
116
|
+
end # GET /repositories?q=repo
|
117
|
+
|
118
|
+
context "run" do
|
119
|
+
|
120
|
+
before { search_command.run }
|
121
|
+
|
122
|
+
context "name" do
|
123
|
+
|
124
|
+
it "my-repo" do
|
125
|
+
expect(search_command_output.string).to match(/my-repo/)
|
126
|
+
end
|
127
|
+
|
128
|
+
it "new-repo" do
|
129
|
+
expect(search_command_output.string).to match(/my-repo/)
|
130
|
+
end
|
131
|
+
|
132
|
+
end # name
|
133
|
+
|
134
|
+
context "no desc" do
|
135
|
+
|
136
|
+
it "my-repo" do
|
137
|
+
expect(search_command_output.string).to_not match(/my repository/)
|
138
|
+
end
|
139
|
+
|
140
|
+
it "new-repo" do
|
141
|
+
expect(search_command_output.string).to_not match(/new repository/)
|
142
|
+
end
|
143
|
+
|
144
|
+
end # desc
|
145
|
+
|
146
|
+
context "no url" do
|
147
|
+
|
148
|
+
it "my-repo" do
|
149
|
+
expect(search_command_output.string).to_not match(/#{"git://github.com/user/my-repo"}/)
|
150
|
+
end
|
151
|
+
|
152
|
+
it "new-repo" do
|
153
|
+
expect(search_command_output.string).to_not match(/#{"git://github.com/user/new-repo"}/)
|
154
|
+
end
|
155
|
+
|
156
|
+
end
|
157
|
+
|
158
|
+
end # run
|
159
|
+
|
160
|
+
end # $ search --name repo
|
161
|
+
|
162
|
+
end # create instance
|
163
|
+
|
164
|
+
end # SSpm::SubCommands::SearchCommand
|
165
|
+
|
166
|
+
end # SocialSnippet::CommandLine::Sspm
|
167
|
+
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module SocialSnippet::CommandLine
|
4
|
+
|
5
|
+
describe SSpm::MainCommand do
|
6
|
+
|
7
|
+
describe "$ sspm search repo" do
|
8
|
+
|
9
|
+
let(:sspm_command) { SSpm::MainCommand.new ["search", "repo"] }
|
10
|
+
|
11
|
+
example do
|
12
|
+
expect(sspm_command).to receive(:call_subcommand).with(:SearchCommand).once
|
13
|
+
sspm_command.init
|
14
|
+
sspm_command.run
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "$ sspm complete" do
|
20
|
+
|
21
|
+
let(:sspm_command) { SSpm::MainCommand.new ["complete", "// @snip <repo"] }
|
22
|
+
|
23
|
+
example do
|
24
|
+
expect(sspm_command).to receive(:call_subcommand).with(:CompleteCommand).once
|
25
|
+
sspm_command.init
|
26
|
+
sspm_command.run
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "$ sspm install my-repo" do
|
32
|
+
|
33
|
+
let(:sspm_command) { SSpm::MainCommand.new ["install", "my-repo"] }
|
34
|
+
|
35
|
+
example do
|
36
|
+
expect(sspm_command).to receive(:call_subcommand).with(:InstallCommand).once
|
37
|
+
sspm_command.init
|
38
|
+
sspm_command.run
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "$ sspm update" do
|
44
|
+
|
45
|
+
let(:sspm_command) { SSpm::MainCommand.new ["update"] }
|
46
|
+
|
47
|
+
example do
|
48
|
+
expect(sspm_command).to receive(:call_subcommand).with(:UpdateCommand).once
|
49
|
+
sspm_command.init
|
50
|
+
sspm_command.run
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "$ sspm publish {url}" do
|
56
|
+
|
57
|
+
let(:sspm_command) { SSpm::MainCommand.new ["publish", "https://github.com/user/repo"] }
|
58
|
+
|
59
|
+
example do
|
60
|
+
expect(sspm_command).to receive(:call_subcommand).with(:PublishCommand).once
|
61
|
+
sspm_command.init
|
62
|
+
sspm_command.run
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
describe "$ sspm info {repo-name}" do
|
68
|
+
|
69
|
+
let(:sspm_command) { SSpm::MainCommand.new ["info", "my-repo"] }
|
70
|
+
|
71
|
+
example do
|
72
|
+
expect(sspm_command).to receive(:call_subcommand).with(:InfoCommand).once
|
73
|
+
sspm_command.init
|
74
|
+
sspm_command.run
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
end # SSpm::MainCommand
|
80
|
+
|
81
|
+
end # SocialSnippet::CommandLine
|