social_snippet 0.0.9 → 0.0.10

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.
Files changed (70) hide show
  1. checksums.yaml +8 -8
  2. data/.travis.yml +11 -4
  3. data/README.md +6 -6
  4. data/Rakefile +19 -1
  5. data/lib/social_snippet.rb +11 -0
  6. data/lib/social_snippet/api/install_repository_api.rb +23 -82
  7. data/lib/social_snippet/api/manifest_api.rb +3 -3
  8. data/lib/social_snippet/api/update_repository_api.rb +34 -35
  9. data/lib/social_snippet/command_line/sspm/sub_commands/install_command.rb +7 -7
  10. data/lib/social_snippet/config.rb +18 -8
  11. data/lib/social_snippet/core.rb +13 -0
  12. data/lib/social_snippet/document.rb +2 -0
  13. data/lib/social_snippet/document_backend.rb +2 -0
  14. data/lib/social_snippet/document_backend/yaml_document.rb +252 -0
  15. data/lib/social_snippet/document_backend/yaml_document/query.rb +45 -0
  16. data/lib/social_snippet/repository.rb +2 -2
  17. data/lib/social_snippet/repository/driver_factory.rb +42 -0
  18. data/lib/social_snippet/repository/drivers.rb +3 -2
  19. data/lib/social_snippet/repository/drivers/driver_base.rb +100 -0
  20. data/lib/social_snippet/repository/drivers/entry.rb +11 -0
  21. data/lib/social_snippet/repository/drivers/git_driver.rb +100 -0
  22. data/lib/social_snippet/repository/models.rb +15 -0
  23. data/lib/social_snippet/repository/models/package.rb +97 -0
  24. data/lib/social_snippet/repository/models/repository.rb +94 -0
  25. data/lib/social_snippet/repository/repository_manager.rb +79 -67
  26. data/lib/social_snippet/resolvers/base_resolver.rb +13 -17
  27. data/lib/social_snippet/rspec/test_document.rb +305 -0
  28. data/lib/social_snippet/rspec/test_driver.rb +76 -0
  29. data/lib/social_snippet/rspec/test_storage.rb +459 -0
  30. data/lib/social_snippet/storage.rb +1 -0
  31. data/lib/social_snippet/storage_backend.rb +3 -0
  32. data/lib/social_snippet/storage_backend/file_system_storage.rb +71 -0
  33. data/lib/social_snippet/storage_backend/storage_base.rb +35 -0
  34. data/lib/social_snippet/version.rb +8 -3
  35. data/spec/helpers/codeclimate_helper.rb +1 -1
  36. data/spec/helpers/fakefs_helper.rb +10 -0
  37. data/spec/helpers/social_snippet_helper.rb +117 -0
  38. data/spec/lib/api/insert_snippet_spec.rb +95 -2
  39. data/spec/lib/api/update_repository_spec.rb +196 -0
  40. data/spec/lib/command_line/sspm_install_spec.rb +169 -180
  41. data/spec/lib/command_line/sspm_update_spec.rb +56 -0
  42. data/spec/lib/config_spec.rb +6 -8
  43. data/spec/lib/core_spec.rb +21 -38
  44. data/spec/lib/file_system_storage_spec.rb +170 -0
  45. data/spec/lib/insert_resolver_spec.rb +15 -2
  46. data/spec/lib/registry_client_spec.rb +6 -9
  47. data/spec/lib/repository/driver_base_spec.rb +89 -0
  48. data/spec/lib/repository/git_driver_spec.rb +10 -0
  49. data/spec/lib/repository/package_spec.rb +172 -0
  50. data/spec/lib/repository/repository_factory_spec.rb +67 -22
  51. data/spec/lib/repository/repository_manager_spec.rb +71 -114
  52. data/spec/lib/repository/repository_spec.rb +191 -0
  53. data/spec/lib/yaml_document_spec.rb +14 -0
  54. data/spec/spec_helper.rb +8 -93
  55. data/test/config_test.rb +6 -7
  56. data/test/driver_base_test.rb +201 -0
  57. data/test/git_driver_test.rb +51 -0
  58. data/test/insert_snippet_test.rb +256 -349
  59. data/test/repository_manager_test.rb +7 -16
  60. data/test/yaml_document_test.rb +97 -0
  61. metadata +44 -16
  62. data/lib/social_snippet/repository/drivers/base_repository.rb +0 -189
  63. data/lib/social_snippet/repository/drivers/git_repository.rb +0 -74
  64. data/lib/social_snippet/repository/repository_factory.rb +0 -59
  65. data/lib/social_snippet/repository/repository_installer.rb +0 -85
  66. data/spec/lib/repository/base_repository_spec.rb +0 -104
  67. data/spec/lib/repository/git_repository_spec.rb +0 -83
  68. data/spec/lib/repository/repository_installer_spec.rb +0 -63
  69. data/test/base_repository_test.rb +0 -375
  70. data/test/git_repository_test.rb +0 -114
@@ -1,31 +1,76 @@
1
1
  require "spec_helper"
2
2
 
3
- module SocialSnippet::Repository
3
+ describe ::SocialSnippet::Repository::DriverFactory do
4
4
 
5
- describe RepositoryFactory do
5
+ let(:driver_factory) { ::SocialSnippet::Repository::DriverFactory.new fake_core }
6
6
 
7
- describe "#is_git_repo" do
7
+ class FakeGitDriver < ::SocialSnippet::Repository::Drivers::DriverBase
8
8
 
9
- context "git protocol" do
10
- context "git://url/to/repo" do
11
- it { expect(RepositoryFactory.is_git_repo(URI.parse("git://url/to/repo"))).to be_truthy }
12
- end
13
- end # git protocol
9
+ def self.target_url?(s)
10
+ /^git:\/\// === s
11
+ end
14
12
 
15
- context "github.com" do
16
- context "git://" do
17
- it { expect(RepositoryFactory.is_git_repo(URI.parse("git://github.com/user/repo"))).to be_truthy }
18
- end
19
- context "http://" do
20
- it { expect(RepositoryFactory.is_git_repo(URI.parse("http://github.com/user/repo"))).to be_truthy }
21
- end
22
- context "https://" do
23
- it { expect(RepositoryFactory.is_git_repo(URI.parse("https://github.com/user/repo"))).to be_truthy }
24
- end
25
- end # github.com
13
+ def fetch
14
+ end
26
15
 
27
- end # is_git_repo
16
+ def snippet_json
17
+ {
18
+ "name" => "fake-repo",
19
+ }
20
+ end
28
21
 
29
- end # RepositoryFactory
22
+ def latest_version
23
+ "1.2.3"
24
+ end
25
+
26
+ def rev_hash(ref)
27
+ if ref === "1.2.3"
28
+ "rev-1.2.3"
29
+ else
30
+ raise "error"
31
+ end
32
+ end
33
+
34
+ def each_directory
35
+ [
36
+ ::SocialSnippet::Repository::Drivers::Entry.new("path"),
37
+ ::SocialSnippet::Repository::Drivers::Entry.new("path/to"),
38
+ ].each do |dir|
39
+ yield dir
40
+ end
41
+ end
42
+
43
+ def each_file
44
+ [
45
+ ::SocialSnippet::Repository::Drivers::Entry.new("snippet.json", {:name => "fake-repo"}.to_json),
46
+ ::SocialSnippet::Repository::Drivers::Entry.new("path/to/file", "file"),
47
+ ].each do |dir|
48
+ yield dir
49
+ end
50
+ end
51
+
52
+ def refs
53
+ ["1.2.3"]
54
+ end
55
+
56
+ end
57
+
58
+ context "reset drivers" do
59
+
60
+ before { driver_factory.reset_drivers }
61
+
62
+ context "add FakeGitDriver" do
63
+
64
+ before { driver_factory.add_driver FakeGitDriver }
65
+
66
+ context "clone git://github.com/user/repo" do
67
+ let(:driver) { driver_factory.clone "git://github.com/user/repo" }
68
+ it { expect(driver.snippet_json["name"]).to eq "fake-repo" }
69
+ end
70
+
71
+ end
72
+
73
+ end
74
+
75
+ end # driver_factory
30
76
 
31
- end # SocialSnippet::Repository
@@ -4,8 +4,6 @@ module SocialSnippet::Repository
4
4
 
5
5
  describe RepositoryManager do
6
6
 
7
- before { stub_const "ENV", "SOCIAL_SNIPPET_HOME" => "/path/to" }
8
-
9
7
  let(:rest_resource) { ::RestClient::Resource.new "http://api.server/api/dummy" }
10
8
 
11
9
  before do
@@ -14,30 +12,29 @@ module SocialSnippet::Repository
14
12
  end
15
13
  end # use dummy api server
16
14
 
17
- let(:logger) do
18
- logger = ::SocialSnippet::Logger.new(STDOUT)
19
- logger.level = ::SocialSnippet::Logger::Severity::UNKNOWN
20
- logger
21
- end
22
-
23
- let(:config) do
24
- ::SocialSnippet::Config.new(social_snippet)
25
- end
26
-
27
- let(:social_snippet) do
28
- class Fake; end
29
- Fake.new
30
- end
31
-
32
- before do
33
- allow(social_snippet).to receive(:logger).and_return logger
34
- allow(social_snippet).to receive(:config).and_return config
15
+ before do # prepare repo_a
16
+ repo = ::SocialSnippet::Repository::Models::Repository.create(
17
+ :name => "repo_a",
18
+ :url => "dummy://driver.test/user/repo_a",
19
+ )
20
+ repo.add_ref "master", "rev-master"
21
+ repo.add_ref "develop", "rev-develop"
22
+ repo.add_ref "1.2.3", "rev-1.2.3"
23
+ repo.update_attributes! :current_ref => "master"
24
+
25
+ # prepare package
26
+ repo.add_package "1.2.3"
27
+ package = ::SocialSnippet::Repository::Models::Package.create(
28
+ :repo_name => "repo_a",
29
+ :rev_hash => "rev-1.2.3",
30
+ )
31
+ package.add_file "snippet.json", {
32
+ :name => "repo_a",
33
+ :main => "src",
34
+ :desc => "this is repo_a",
35
+ }.to_json
35
36
  end
36
37
 
37
- let(:repo_manager) { RepositoryManager.new social_snippet }
38
- let(:commit_id) { "dummycommitid" }
39
- let(:short_commit_id) { commit_id[0..7] }
40
-
41
38
  describe "#resolve_snippet_path" do
42
39
 
43
40
  context "without repo" do
@@ -51,7 +48,7 @@ module SocialSnippet::Repository
51
48
  let(:tag) { ::SocialSnippet::Tag.new("// @snip<./file2.cpp>") }
52
49
 
53
50
  context "result" do
54
- subject { repo_manager.resolve_snippet_path(context, tag) }
51
+ subject { fake_core.repo_manager.resolve_snippet_path(context, tag) }
55
52
  it { should eq "path/to/file2.cpp" }
56
53
  end
57
54
 
@@ -63,7 +60,7 @@ module SocialSnippet::Repository
63
60
  before { context.move tag.path }
64
61
 
65
62
  context "result" do
66
- subject { repo_manager.resolve_snippet_path(context, tag) }
63
+ subject { fake_core.repo_manager.resolve_snippet_path(context, tag) }
67
64
  it { should eq "path/to/subdir/file3.cpp" }
68
65
  end
69
66
 
@@ -75,31 +72,6 @@ module SocialSnippet::Repository
75
72
 
76
73
  context "with repo" do
77
74
 
78
- let(:repo_path) { "#{ENV["SOCIAL_SNIPPET_HOME"]}/repo" }
79
-
80
- before do
81
- FileUtils.mkdir_p "#{repo_path}/repo_a"
82
- FileUtils.mkdir_p "#{repo_path}/repo_a/.git"
83
- FileUtils.touch "#{repo_path}/repo_a/snippet.json"
84
-
85
- File.write "#{repo_path}/repo_a/snippet.json", [
86
- '{',
87
- ' "name": "repo_a",',
88
- ' "desc": "this is repo_a",',
89
- ' "language": "C++",',
90
- ' "main": "src"',
91
- '}',
92
- ].join($/)
93
-
94
- allow(repo_manager).to receive(:find_repository).with("repo_a") do |path|
95
- repo = ::SocialSnippet::Repository::Drivers::BaseRepository.new("#{repo_path}/repo_a")
96
- expect(repo).to receive(:commit_id).and_return commit_id
97
- repo.load_snippet_json
98
- repo.create_cache repo_manager.repo_cache_path
99
- repo
100
- end
101
- end
102
-
103
75
  context "cur = path/to/file.cpp" do
104
76
 
105
77
  let(:context) { ::SocialSnippet::Context.new("path/to/file.cpp") }
@@ -109,8 +81,8 @@ module SocialSnippet::Repository
109
81
  let(:tag) { ::SocialSnippet::Tag.new("// @snip<repo_a:path/to/file2.cpp>") }
110
82
 
111
83
  context "result" do
112
- subject { repo_manager.resolve_snippet_path(context, tag) }
113
- it { should eq "/path/to/repo_cache/repo_a/#{commit_id[0..7]}/src/path/to/file2.cpp" }
84
+ subject { fake_core.repo_manager.resolve_snippet_path(context, tag) }
85
+ it { should eq ::File.join(fake_core.config.home, "packages", "repo_a", "rev-1.2.3", "src", "path", "to", "file2.cpp") }
114
86
  end
115
87
 
116
88
  end # snip<./file2.cpp>
@@ -121,85 +93,70 @@ module SocialSnippet::Repository
121
93
 
122
94
  end # resolve_snippet_path
123
95
 
124
- describe "#find_repository" do
125
-
126
- let(:repo_path) { "#{ENV["SOCIAL_SNIPPET_HOME"]}/repo" }
96
+ describe "#find_package" do
127
97
 
128
- context "passed empty name" do
98
+ context "find_package nil" do
129
99
 
130
- it { expect(repo_manager.find_repository(nil)).to be_nil }
131
- it { expect(repo_manager.find_repository("")).to be_nil }
100
+ subject do
101
+ lambda { fake_core.repo_manager.find_package nil }
102
+ end
103
+ it { should raise_error }
132
104
 
133
105
  end
134
106
 
135
- context "create repo_a as a git repo" do
136
-
137
- before do
138
- FileUtils.mkdir_p "#{repo_path}/repo_a"
139
- FileUtils.mkdir_p "#{repo_path}/repo_a/.git"
140
- FileUtils.touch "#{repo_path}/repo_a/snippet.json"
141
-
142
- File.write "#{repo_path}/repo_a/snippet.json", [
143
- '{',
144
- ' "name": "repo_a",',
145
- ' "desc": "this is repo_a",',
146
- ' "language": "C++"',
147
- '}',
148
- ].join($/)
107
+ context "find_package empty_str" do
108
+ subject do
109
+ lambda { fake_core.repo_manager.find_package "" }
149
110
  end
111
+ it { should raise_error }
112
+ end
150
113
 
151
- before do
152
- expect(::SocialSnippet::Repository::Drivers::GitRepository).to receive(:new) do |path|
153
- ::SocialSnippet::Repository::Drivers::BaseRepository.new(path)
154
- end
155
- expect_any_instance_of(::SocialSnippet::Repository::Drivers::BaseRepository).to receive(:commit_id).and_return commit_id
156
- end
114
+ context "create repo_a as a git repo" do
157
115
 
158
116
  context "find repo_a" do
159
- let(:repo) { repo_manager.find_repository("repo_a") }
160
- it { expect(repo.name).to eq "repo_a" }
161
- it { expect(repo.desc).to eq "this is repo_a" }
117
+ let(:repo) { fake_core.repo_manager.find_package("repo_a") }
118
+ it { expect(repo.snippet_json["name"]).to eq "repo_a" }
119
+ it { expect(repo.snippet_json["desc"]).to eq "this is repo_a" }
162
120
  end # find repo_a
163
121
 
164
122
  end # create three repos
165
123
 
166
- end # find_repository
124
+ end # find_package
167
125
 
168
126
  describe "find_repositories_start_with" do
169
127
 
170
- let(:dummy_install_path) { "/path/to/install/path" }
171
-
172
- before do
173
- FileUtils.mkdir_p "#{dummy_install_path}"
174
- FileUtils.mkdir_p "#{dummy_install_path}/my-repo"
175
- FileUtils.mkdir_p "#{dummy_install_path}/new-repo"
176
- FileUtils.mkdir_p "#{dummy_install_path}/my-graph-lib"
177
- FileUtils.mkdir_p "#{dummy_install_path}/my-math-lib"
178
- allow(repo_manager.installer).to receive(:path).and_return dummy_install_path
179
- end # prepare install_path
180
-
181
- context "find my-" do
182
- subject { repo_manager.find_repositories_start_with("my-") }
183
- it { should include "my-repo" }
184
- it { should_not include "new-repo" }
185
- it { should include "my-graph-lib" }
186
- it { should include "my-math-lib" }
187
- end
128
+ context "prepare repositories" do
188
129
 
189
- context "find my-re" do
190
- subject { repo_manager.find_repositories_start_with("my-re") }
191
- it { should include "my-repo" }
192
- it { should_not include "new-repo" }
193
- it { should_not include "my-graph-lib" }
194
- it { should_not include "my-math-lib" }
195
- end
130
+ before do
131
+ ::SocialSnippet::Repository::Models::Repository.create :name => "my-repo"
132
+ ::SocialSnippet::Repository::Models::Repository.create :name => "my-graph-lib"
133
+ ::SocialSnippet::Repository::Models::Repository.create :name => "my-math-lib"
134
+ end
135
+
136
+ context "find my-" do
137
+ subject { fake_core.repo_manager.find_repositories_start_with("my-") }
138
+ it { should include "my-repo" }
139
+ it { should_not include "new-repo" }
140
+ it { should include "my-graph-lib" }
141
+ it { should include "my-math-lib" }
142
+ end
143
+
144
+ context "find my-re" do
145
+ subject { fake_core.repo_manager.find_repositories_start_with("my-re") }
146
+ it { should include "my-repo" }
147
+ it { should_not include "new-repo" }
148
+ it { should_not include "my-graph-lib" }
149
+ it { should_not include "my-math-lib" }
150
+ end
151
+
152
+ context "find new-" do
153
+ subject { fake_core.repo_manager.find_repositories_start_with("new-") }
154
+ it { should_not include "new-repo" }
155
+ it { should_not include "my-repo" }
156
+ it { should_not include "my-graph-lib" }
157
+ it { should_not include "my-math-lib" }
158
+ end
196
159
 
197
- context "find new-" do
198
- subject { repo_manager.find_repositories_start_with("new-") }
199
- it { should include "new-repo" }
200
- it { should_not include "my-repo" }
201
- it { should_not include "my-graph-lib" }
202
- it { should_not include "my-math-lib" }
203
160
  end
204
161
 
205
162
  end # find_repositories_start_with
@@ -0,0 +1,191 @@
1
+ require "spec_helper"
2
+
3
+ describe ::SocialSnippet::Repository::Models::Repository do
4
+
5
+ let(:repo_url) { "git://github.com/user/my-repo" }
6
+ let(:repo) do
7
+ ::SocialSnippet::Repository::Models::Repository.new(
8
+ :url => repo_url,
9
+ )
10
+ end
11
+
12
+ before { ::SocialSnippet::Repository::Models::Repository.core = fake_core }
13
+
14
+ describe "#package_versions" do
15
+
16
+ context "add refs" do
17
+
18
+ before do
19
+ repo.add_ref "master", "rev-master"
20
+ repo.add_ref "1.0.0", "rev-1.0.0"
21
+ repo.add_ref "1.0.1", "rev-1.0.1"
22
+ repo.add_ref "1.1.0", "rev-1.1.0"
23
+ end
24
+
25
+ context "check package versions" do
26
+ subject { repo.package_versions }
27
+ it { should be_empty }
28
+ end
29
+
30
+ context "check package_ref_keys" do
31
+ subject { repo.package_ref_keys }
32
+ it { should be_empty }
33
+ end
34
+
35
+ context "add packages" do
36
+
37
+ before do
38
+ repo.add_package "master"
39
+ repo.add_package "1.0.0"
40
+ repo.add_package "1.0.1"
41
+ end
42
+
43
+ context "check package_ref_keys" do
44
+ subject { repo.package_ref_keys }
45
+ it { should_not be_empty }
46
+ it { should include "master" }
47
+ end
48
+
49
+ context "check latest_version" do
50
+ subject { repo.latest_version }
51
+ it { should eq "1.1.0" }
52
+ end
53
+
54
+ context "check latest_package_version" do
55
+ subject { repo.latest_package_version }
56
+ it { should eq "1.0.1" }
57
+ end
58
+
59
+ context "check package_minor_versions" do
60
+ subject { repo.package_minor_versions }
61
+ it { should include "1.0" }
62
+ it { should_not include "1.1" }
63
+ end
64
+
65
+ context "add package" do
66
+
67
+ before do
68
+ repo.add_package "1.1.0"
69
+ end
70
+
71
+ context "check latest_version" do
72
+ subject { repo.latest_version }
73
+ it { should eq "1.1.0" }
74
+ end
75
+
76
+ context "check latest_package_version" do
77
+ subject { repo.latest_package_version }
78
+ it { should eq "1.1.0" }
79
+ end
80
+
81
+ context "check package_minor_versions" do
82
+ subject { repo.package_minor_versions }
83
+ it { should include "1.0" }
84
+ it { should include "1.1" }
85
+ end
86
+
87
+ end
88
+
89
+ end
90
+
91
+ end
92
+
93
+ end #add_package
94
+
95
+ describe "#add_ref" do
96
+ context "add master" do
97
+ before { repo.add_ref "master", "rev-master" }
98
+ subject { repo.refs }
99
+ it { should include "master" }
100
+ it { expect(repo.rev_hash["master"]).to eq "rev-master" }
101
+ context "add develop" do
102
+ before { repo.add_ref "develop", "rev-develop" }
103
+ subject { repo.refs }
104
+ it { should include "develop" }
105
+ it { expect(repo.rev_hash["master"]).to eq "rev-master" }
106
+ it { expect(repo.rev_hash["develop"]).to eq "rev-develop" }
107
+ end
108
+ end
109
+ end #add_ref
110
+
111
+ describe "#versions" do
112
+ subject { repo.versions }
113
+ context "add master" do
114
+ before { repo.add_ref "master", "rev-master" }
115
+ it { should_not include "master" }
116
+ context "add 1.2.3" do
117
+ before { repo.add_ref "1.2.3", "rev-develop" }
118
+ it { should_not be_empty }
119
+ it { should include "1.2.3" }
120
+ end
121
+ end
122
+ end #versions
123
+
124
+ describe "#has_versions?" do
125
+ subject { repo.has_versions? }
126
+ context "add master" do
127
+ before { repo.add_ref "master", "rev-master" }
128
+ it { should be_falsey }
129
+ context "add 1.2.3" do
130
+ before { repo.add_ref "1.2.3", "rev-1.2.3" }
131
+ it { should be_truthy}
132
+ end
133
+ context "add 4.5" do
134
+ before { repo.add_ref "4.5", "rev-4.5" }
135
+ it { should be_falsey }
136
+ end
137
+ end
138
+ end #versions
139
+
140
+ describe "#latest_version" do
141
+ subject { repo.latest_version }
142
+ context "add master" do
143
+ before { repo.add_ref "master", "rev-master" }
144
+ it { should be_nil }
145
+ context "add 10.0.0" do
146
+ before { repo.add_ref "10.0.0", "rev-10.0.0" }
147
+ it { should eq "10.0.0" }
148
+ context "add 10.0.1" do
149
+ before { repo.add_ref "10.0.1", "rev-10.0.1" }
150
+ it { should eq "10.0.1" }
151
+ context "add 10.1.0" do
152
+ before { repo.add_ref "10.1.0", "rev-10.1.0" }
153
+ it { should eq "10.1.0" }
154
+ context "add 9.999.9" do
155
+ before { repo.add_ref "9.999.9", "rev-9.999.9" }
156
+ it { should eq "10.1.0" }
157
+ context "latest_version 9" do
158
+ subject { repo.latest_version 9 }
159
+ it { should eq "9.999.9" }
160
+ end
161
+ end
162
+ end
163
+ end
164
+ end
165
+ end
166
+ end #latest_version
167
+
168
+ describe "test persistence" do
169
+
170
+ context "repo.name = my-repo" do
171
+
172
+ before { repo.name = "my-repo" }
173
+
174
+ context "save!" do
175
+
176
+ before { repo.save! }
177
+
178
+ context "find my-repo" do
179
+ let(:my_repo) { ::SocialSnippet::Repository::Models::Repository.find_by :name => "my-repo" }
180
+ it { expect(my_repo.name).to eq "my-repo" }
181
+ it { expect(my_repo.url).to eq "git://github.com/user/my-repo" }
182
+ end
183
+
184
+ end # save repository
185
+
186
+ end # repo.set_name my-repo
187
+
188
+ end # test to store data
189
+
190
+ end # ::SocialSnippet::Repository::Models::Repository
191
+