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.
- checksums.yaml +8 -8
- data/.travis.yml +11 -4
- data/README.md +6 -6
- data/Rakefile +19 -1
- data/lib/social_snippet.rb +11 -0
- data/lib/social_snippet/api/install_repository_api.rb +23 -82
- data/lib/social_snippet/api/manifest_api.rb +3 -3
- data/lib/social_snippet/api/update_repository_api.rb +34 -35
- data/lib/social_snippet/command_line/sspm/sub_commands/install_command.rb +7 -7
- data/lib/social_snippet/config.rb +18 -8
- data/lib/social_snippet/core.rb +13 -0
- data/lib/social_snippet/document.rb +2 -0
- data/lib/social_snippet/document_backend.rb +2 -0
- data/lib/social_snippet/document_backend/yaml_document.rb +252 -0
- data/lib/social_snippet/document_backend/yaml_document/query.rb +45 -0
- data/lib/social_snippet/repository.rb +2 -2
- data/lib/social_snippet/repository/driver_factory.rb +42 -0
- data/lib/social_snippet/repository/drivers.rb +3 -2
- data/lib/social_snippet/repository/drivers/driver_base.rb +100 -0
- data/lib/social_snippet/repository/drivers/entry.rb +11 -0
- data/lib/social_snippet/repository/drivers/git_driver.rb +100 -0
- data/lib/social_snippet/repository/models.rb +15 -0
- data/lib/social_snippet/repository/models/package.rb +97 -0
- data/lib/social_snippet/repository/models/repository.rb +94 -0
- data/lib/social_snippet/repository/repository_manager.rb +79 -67
- data/lib/social_snippet/resolvers/base_resolver.rb +13 -17
- data/lib/social_snippet/rspec/test_document.rb +305 -0
- data/lib/social_snippet/rspec/test_driver.rb +76 -0
- data/lib/social_snippet/rspec/test_storage.rb +459 -0
- data/lib/social_snippet/storage.rb +1 -0
- data/lib/social_snippet/storage_backend.rb +3 -0
- data/lib/social_snippet/storage_backend/file_system_storage.rb +71 -0
- data/lib/social_snippet/storage_backend/storage_base.rb +35 -0
- data/lib/social_snippet/version.rb +8 -3
- data/spec/helpers/codeclimate_helper.rb +1 -1
- data/spec/helpers/fakefs_helper.rb +10 -0
- data/spec/helpers/social_snippet_helper.rb +117 -0
- data/spec/lib/api/insert_snippet_spec.rb +95 -2
- data/spec/lib/api/update_repository_spec.rb +196 -0
- data/spec/lib/command_line/sspm_install_spec.rb +169 -180
- data/spec/lib/command_line/sspm_update_spec.rb +56 -0
- data/spec/lib/config_spec.rb +6 -8
- data/spec/lib/core_spec.rb +21 -38
- data/spec/lib/file_system_storage_spec.rb +170 -0
- data/spec/lib/insert_resolver_spec.rb +15 -2
- data/spec/lib/registry_client_spec.rb +6 -9
- data/spec/lib/repository/driver_base_spec.rb +89 -0
- data/spec/lib/repository/git_driver_spec.rb +10 -0
- data/spec/lib/repository/package_spec.rb +172 -0
- data/spec/lib/repository/repository_factory_spec.rb +67 -22
- data/spec/lib/repository/repository_manager_spec.rb +71 -114
- data/spec/lib/repository/repository_spec.rb +191 -0
- data/spec/lib/yaml_document_spec.rb +14 -0
- data/spec/spec_helper.rb +8 -93
- data/test/config_test.rb +6 -7
- data/test/driver_base_test.rb +201 -0
- data/test/git_driver_test.rb +51 -0
- data/test/insert_snippet_test.rb +256 -349
- data/test/repository_manager_test.rb +7 -16
- data/test/yaml_document_test.rb +97 -0
- metadata +44 -16
- data/lib/social_snippet/repository/drivers/base_repository.rb +0 -189
- data/lib/social_snippet/repository/drivers/git_repository.rb +0 -74
- data/lib/social_snippet/repository/repository_factory.rb +0 -59
- data/lib/social_snippet/repository/repository_installer.rb +0 -85
- data/spec/lib/repository/base_repository_spec.rb +0 -104
- data/spec/lib/repository/git_repository_spec.rb +0 -83
- data/spec/lib/repository/repository_installer_spec.rb +0 -63
- data/test/base_repository_test.rb +0 -375
- data/test/git_repository_test.rb +0 -114
data/spec/lib/core_spec.rb
CHANGED
@@ -11,46 +11,29 @@ module SocialSnippet
|
|
11
11
|
|
12
12
|
describe "#insert_snippet" do
|
13
13
|
|
14
|
-
context "
|
14
|
+
context "prepare repository" do
|
15
15
|
|
16
16
|
before do
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
::
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
17
|
+
repo = ::SocialSnippet::Repository::Models::Repository.create(
|
18
|
+
:name => "my-repo",
|
19
|
+
:current_ref => "master",
|
20
|
+
)
|
21
|
+
repo.add_ref "master", "rev-master"
|
22
|
+
package = ::SocialSnippet::Repository::Models::Package.create(
|
23
|
+
:repo_name => "my-repo",
|
24
|
+
:rev_hash => "rev-master",
|
25
|
+
)
|
26
|
+
package.add_file "snippet.json", {
|
27
|
+
:name => "my-repo",
|
28
|
+
:main => "src",
|
29
|
+
}.to_json
|
30
|
+
package.add_directory "src"
|
31
|
+
package.add_file "src/get_42.cpp", [
|
32
|
+
"int get_42() {",
|
33
|
+
" return 42;",
|
34
|
+
"}",
|
33
35
|
].join($/)
|
34
|
-
|
35
|
-
# src/get_42.cpp
|
36
|
-
::File.write "#{repo_path}/my-repo/src/get_42.cpp", [
|
37
|
-
'int get_42() {',
|
38
|
-
' return 42;',
|
39
|
-
'}',
|
40
|
-
].join($/)
|
41
|
-
|
42
|
-
repo_config = Proc.new do |path|
|
43
|
-
repo = ::SocialSnippet::Repository::Drivers::BaseRepository.new("#{repo_path}/my-repo")
|
44
|
-
allow(repo).to receive(:commit_id).and_return commit_id
|
45
|
-
allow(repo).to receive(:refs).and_return []
|
46
|
-
repo.load_snippet_json
|
47
|
-
repo.create_cache repo_cache_path
|
48
|
-
repo
|
49
|
-
end
|
50
|
-
|
51
|
-
allow(fake_core.repo_manager).to receive(:find_repository).with("my-repo") { repo_config.call }
|
52
|
-
allow(fake_core.repo_manager).to receive(:find_repository).with("my-repo", short_commit_id) { repo_config.call }
|
53
|
-
end # prepare for my-repo
|
36
|
+
end
|
54
37
|
|
55
38
|
context "there are no @snip tags" do
|
56
39
|
|
@@ -100,7 +83,7 @@ module SocialSnippet
|
|
100
83
|
[
|
101
84
|
'#include <iostream>',
|
102
85
|
'',
|
103
|
-
'// @snippet <my-repo#
|
86
|
+
'// @snippet <my-repo#master:get_42.cpp>',
|
104
87
|
'int get_42() {',
|
105
88
|
' return 42;',
|
106
89
|
'}',
|
@@ -0,0 +1,170 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe ::SocialSnippet::StorageBackend::FileSystemStorage do
|
4
|
+
|
5
|
+
let(:storage) { ::SocialSnippet::StorageBackend::FileSystemStorage.new }
|
6
|
+
|
7
|
+
include_context :TestStorage
|
8
|
+
|
9
|
+
context "test storage class" do
|
10
|
+
|
11
|
+
describe "#read" do
|
12
|
+
|
13
|
+
context "read path/to/file" do
|
14
|
+
|
15
|
+
example do
|
16
|
+
expect { storage.read "path/to/file" }.to raise_error ::Errno::ENOENT
|
17
|
+
end
|
18
|
+
context "prepare path/to/file" do
|
19
|
+
|
20
|
+
before do
|
21
|
+
::FileUtils.mkdir_p "path/to"
|
22
|
+
::FileUtils.touch "path/to/file"
|
23
|
+
end
|
24
|
+
|
25
|
+
context "read path/to/file" do
|
26
|
+
example do
|
27
|
+
expect { storage.read "path/to/file" }.to_not raise_error
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end # prepare path/to/file
|
32
|
+
|
33
|
+
end # read path/to/file
|
34
|
+
|
35
|
+
end #read
|
36
|
+
|
37
|
+
describe "#write" do
|
38
|
+
|
39
|
+
context "write path/to/file" do
|
40
|
+
before do
|
41
|
+
::FileUtils.mkdir_p "path/to"
|
42
|
+
storage.write "path/to/file", "data-123"
|
43
|
+
end
|
44
|
+
context "::File.read path/to/file" do
|
45
|
+
subject { ::File.read "path/to/file" }
|
46
|
+
it { should eq "data-123" }
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end #write
|
51
|
+
|
52
|
+
describe "#glob" do
|
53
|
+
|
54
|
+
context "glob path/to/*" do
|
55
|
+
subject { storage.glob "path/to/*" }
|
56
|
+
it { should be_empty }
|
57
|
+
|
58
|
+
context "prepare files" do
|
59
|
+
|
60
|
+
before do
|
61
|
+
::FileUtils.mkdir_p "path/to"
|
62
|
+
::FileUtils.touch "path/to/file1"
|
63
|
+
::FileUtils.touch "path/to/file2"
|
64
|
+
::FileUtils.touch "path/to/file3"
|
65
|
+
::FileUtils.mkdir_p "path/to/directory"
|
66
|
+
end
|
67
|
+
|
68
|
+
context "glob path/to/*" do
|
69
|
+
subject { storage.glob "path/to/*" }
|
70
|
+
it { should_not be_empty }
|
71
|
+
it { should include /path\/to\/file1$/ }
|
72
|
+
it { should include /path\/to\/directory$/ }
|
73
|
+
end
|
74
|
+
|
75
|
+
context "glob path/to/f*" do
|
76
|
+
subject { storage.glob "path/to/f*" }
|
77
|
+
it { should_not be_empty }
|
78
|
+
it { should include /path\/to\/file1$/ }
|
79
|
+
it { should_not include /path\/to\/directory$/ }
|
80
|
+
end
|
81
|
+
|
82
|
+
context "glob path/to/not_found*" do
|
83
|
+
subject { storage.glob "path/to/not_found*" }
|
84
|
+
it { should be_empty }
|
85
|
+
it { should_not include /path\/to\/file1$/ }
|
86
|
+
it { should_not include /path\/to\/directory$/ }
|
87
|
+
end
|
88
|
+
|
89
|
+
context "glob path/to/file1" do
|
90
|
+
subject { storage.glob "path/to/file1" }
|
91
|
+
it { should_not be_empty }
|
92
|
+
it { should include /path\/to\/file1$/ }
|
93
|
+
it { should_not include /path\/to\/file2$/ }
|
94
|
+
it { should_not include /path\/to\/file3$/ }
|
95
|
+
it { should_not include /path\/to\/directory$/ }
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
end #glob
|
103
|
+
|
104
|
+
describe "#exists?" do
|
105
|
+
|
106
|
+
context "prepare files" do
|
107
|
+
|
108
|
+
before do
|
109
|
+
::FileUtils.mkdir_p "path/to"
|
110
|
+
::FileUtils.touch "path/to/file1"
|
111
|
+
::FileUtils.touch "path/to/file2"
|
112
|
+
::FileUtils.touch "path/to/file3"
|
113
|
+
::FileUtils.mkdir_p "path/to/dir"
|
114
|
+
end
|
115
|
+
|
116
|
+
it { expect(storage.exists? "path/to/file1").to be_truthy }
|
117
|
+
it { expect(storage.exists? "path/to/file2").to be_truthy }
|
118
|
+
it { expect(storage.exists? "path/to/file3").to be_truthy }
|
119
|
+
it { expect(storage.exists? "path/to/dir").to be_truthy }
|
120
|
+
|
121
|
+
end
|
122
|
+
|
123
|
+
end #exists?
|
124
|
+
|
125
|
+
describe "#file?" do
|
126
|
+
|
127
|
+
context "prepare files" do
|
128
|
+
|
129
|
+
before do
|
130
|
+
::FileUtils.mkdir_p "path/to"
|
131
|
+
::FileUtils.touch "path/to/file1"
|
132
|
+
::FileUtils.touch "path/to/file2"
|
133
|
+
::FileUtils.touch "path/to/file3"
|
134
|
+
::FileUtils.mkdir_p "path/to/dir"
|
135
|
+
end
|
136
|
+
|
137
|
+
it { expect(storage.file? "path/to/file1").to be_truthy }
|
138
|
+
it { expect(storage.file? "path/to/file2").to be_truthy }
|
139
|
+
it { expect(storage.file? "path/to/file3").to be_truthy }
|
140
|
+
it { expect(storage.file? "path/to/dir").to be_falsey }
|
141
|
+
|
142
|
+
end
|
143
|
+
|
144
|
+
end #file?
|
145
|
+
|
146
|
+
describe "#directory?" do
|
147
|
+
|
148
|
+
context "prepare files" do
|
149
|
+
|
150
|
+
before do
|
151
|
+
::FileUtils.mkdir_p "path/to"
|
152
|
+
::FileUtils.touch "path/to/file1"
|
153
|
+
::FileUtils.touch "path/to/file2"
|
154
|
+
::FileUtils.touch "path/to/file3"
|
155
|
+
::FileUtils.mkdir_p "path/to/dir"
|
156
|
+
end
|
157
|
+
|
158
|
+
it { expect(storage.directory? "path/to/file1").to be_falsey }
|
159
|
+
it { expect(storage.directory? "path/to/file2").to be_falsey }
|
160
|
+
it { expect(storage.directory? "path/to/file3").to be_falsey }
|
161
|
+
it { expect(storage.directory? "path/to/dir").to be_truthy }
|
162
|
+
|
163
|
+
end
|
164
|
+
|
165
|
+
end #directory?
|
166
|
+
|
167
|
+
end # test storage class
|
168
|
+
|
169
|
+
end # ::SocialSnippet::StorageBackend::FileSystemStorage
|
170
|
+
|
@@ -5,8 +5,21 @@ describe SocialSnippet::Resolvers::InsertResolver do
|
|
5
5
|
context "prepare stubs" do
|
6
6
|
|
7
7
|
before do
|
8
|
-
allow(fake_core.repo_manager).to receive(:
|
9
|
-
|
8
|
+
allow(fake_core.repo_manager).to receive(:find_repository) do |name|
|
9
|
+
repo = ::SocialSnippet::Repository::Models::Repository.new(
|
10
|
+
:repo_name => name,
|
11
|
+
)
|
12
|
+
repo
|
13
|
+
end
|
14
|
+
allow(fake_core.repo_manager).to receive(:find_package) do |name|
|
15
|
+
pkg = ::SocialSnippet::Repository::Models::Package.new(
|
16
|
+
:repo_name => name,
|
17
|
+
:rev_hash => "rev-#{name}",
|
18
|
+
)
|
19
|
+
pkg.add_file "snippet.json", {
|
20
|
+
:name => name,
|
21
|
+
}.to_json
|
22
|
+
pkg
|
10
23
|
end
|
11
24
|
allow(fake_core.repo_manager).to receive(:get_snippet) do |c, t|
|
12
25
|
::SocialSnippet::Snippet.new_text(t.repo)
|
@@ -21,22 +21,19 @@ module SocialSnippet
|
|
21
21
|
Config.new social_snippet
|
22
22
|
end
|
23
23
|
|
24
|
-
before
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
before do
|
25
|
+
allow(social_snippet).to receive(:storage).and_return fake_storage
|
26
|
+
allow(social_snippet).to receive(:logger).and_return fake_logger
|
27
|
+
allow(social_snippet).to receive(:config).and_return config
|
28
28
|
end
|
29
29
|
|
30
|
+
before { allow(config).to receive(:sspm_url).and_return "http://api.server/api/v0" }
|
31
|
+
|
30
32
|
let(:social_snippet) do
|
31
33
|
class Fake; end
|
32
34
|
Fake.new
|
33
35
|
end
|
34
36
|
|
35
|
-
before do
|
36
|
-
allow(social_snippet).to receive(:config).and_return config
|
37
|
-
allow(social_snippet).to receive(:logger).and_return logger
|
38
|
-
end
|
39
|
-
|
40
37
|
before do
|
41
38
|
WebMock
|
42
39
|
.stub_request(
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe ::SocialSnippet::Repository::Drivers::DriverBase do
|
4
|
+
|
5
|
+
let(:repo_url) { "git://github.com/user/repo" }
|
6
|
+
let(:repo_name) { "my-repo" }
|
7
|
+
let(:driver) do
|
8
|
+
::SocialSnippet::Repository::Drivers::DriverBase.new repo_url
|
9
|
+
end
|
10
|
+
|
11
|
+
before do
|
12
|
+
allow(driver).to receive(:fetch).and_return true
|
13
|
+
end
|
14
|
+
|
15
|
+
before do
|
16
|
+
allow(driver).to receive(:snippet_json) do
|
17
|
+
{
|
18
|
+
"name" => "my-repo",
|
19
|
+
}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
before do
|
24
|
+
allow(driver).to receive(:current_ref) do
|
25
|
+
"master"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
before do
|
30
|
+
allow(driver).to receive(:refs).and_return [
|
31
|
+
"0.0.0",
|
32
|
+
"0.0.1",
|
33
|
+
"0.0.2",
|
34
|
+
]
|
35
|
+
end
|
36
|
+
|
37
|
+
before do
|
38
|
+
allow(driver).to receive(:rev_hash) do |ref|
|
39
|
+
case ref
|
40
|
+
when "master"
|
41
|
+
"rev-master"
|
42
|
+
when "develop"
|
43
|
+
"rev-develop"
|
44
|
+
when "feature/abc"
|
45
|
+
"rev-feature-abc"
|
46
|
+
when "0.0.0"
|
47
|
+
"rev-0.0.0"
|
48
|
+
when "0.0.1"
|
49
|
+
"rev-0.0.1"
|
50
|
+
when "0.0.2"
|
51
|
+
"rev-0.0.2"
|
52
|
+
else
|
53
|
+
raise "error"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
before do
|
59
|
+
allow(driver).to(
|
60
|
+
receive(:each_directory)
|
61
|
+
.and_yield(::SocialSnippet::Repository::Drivers::Entry.new "dir1")
|
62
|
+
.and_yield(::SocialSnippet::Repository::Drivers::Entry.new "dir1/subdir1")
|
63
|
+
.and_yield(::SocialSnippet::Repository::Drivers::Entry.new "dir1/subdir2")
|
64
|
+
.and_yield(::SocialSnippet::Repository::Drivers::Entry.new "dir1/subdir3")
|
65
|
+
.and_yield(::SocialSnippet::Repository::Drivers::Entry.new "dir2")
|
66
|
+
.and_yield(::SocialSnippet::Repository::Drivers::Entry.new "dir3")
|
67
|
+
)
|
68
|
+
end
|
69
|
+
|
70
|
+
before do
|
71
|
+
allow(driver).to(
|
72
|
+
receive(:each_file)
|
73
|
+
.and_yield(::SocialSnippet::Repository::Drivers::Entry.new "file1", "")
|
74
|
+
.and_yield(::SocialSnippet::Repository::Drivers::Entry.new "dir1/file2", "")
|
75
|
+
.and_yield(::SocialSnippet::Repository::Drivers::Entry.new "dir1/subdir1/file3", "")
|
76
|
+
.and_yield(::SocialSnippet::Repository::Drivers::Entry.new "dir1/subdir2/file4", "")
|
77
|
+
.and_yield(::SocialSnippet::Repository::Drivers::Entry.new "dir1/subdir3/file5", "")
|
78
|
+
.and_yield(::SocialSnippet::Repository::Drivers::Entry.new "dir2/file6", "")
|
79
|
+
.and_yield(::SocialSnippet::Repository::Drivers::Entry.new "dir3/file7", "")
|
80
|
+
)
|
81
|
+
end
|
82
|
+
|
83
|
+
context "driver.latest_version" do
|
84
|
+
subject { driver.latest_version }
|
85
|
+
it { should eq "0.0.2" }
|
86
|
+
end
|
87
|
+
|
88
|
+
end # ::SocialSnippet::Repository::Drivers::DriverBase
|
89
|
+
|
@@ -0,0 +1,172 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe ::SocialSnippet::Repository::Models::Package do
|
4
|
+
|
5
|
+
let(:repo_name) { "my-repo" }
|
6
|
+
let(:rev_hash) { "commit-id" }
|
7
|
+
let(:package) do
|
8
|
+
::SocialSnippet::Repository::Models::Package.new(
|
9
|
+
:repo_name => repo_name,
|
10
|
+
:rev_hash => rev_hash,
|
11
|
+
)
|
12
|
+
end
|
13
|
+
|
14
|
+
before { ::SocialSnippet::Repository::Models::Package.core = fake_core }
|
15
|
+
|
16
|
+
describe "#display_name" do
|
17
|
+
context "package.display_name" do
|
18
|
+
subject { package.display_name }
|
19
|
+
it { should eq "#{repo_name}@#{rev_hash}" }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context "add snippet.json" do
|
24
|
+
|
25
|
+
before do
|
26
|
+
package.add_file "snippet.json", {
|
27
|
+
:name => "package-name",
|
28
|
+
:desc => "package-desc",
|
29
|
+
:main => "package-main"
|
30
|
+
}.to_json
|
31
|
+
end
|
32
|
+
|
33
|
+
context "check snippet.json" do
|
34
|
+
it { expect(package.snippet_json["name"]).to eq "package-name" }
|
35
|
+
it { expect(package.snippet_json["desc"]).to eq "package-desc" }
|
36
|
+
it { expect(package.snippet_json["main"]).to eq "package-main" }
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "#paths" do
|
40
|
+
|
41
|
+
context "add file" do
|
42
|
+
before { package.add_file "file", "file-data" }
|
43
|
+
subject { package.paths }
|
44
|
+
it { should include "file" }
|
45
|
+
context "check filesystem" do
|
46
|
+
subject { ::FileTest.file? fake_core.config.package_path(repo_name, rev_hash, "file") }
|
47
|
+
it { should be_truthy }
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context "add dir" do
|
52
|
+
before { package.add_directory "dir" }
|
53
|
+
subject { package.paths }
|
54
|
+
it { should include "dir/" }
|
55
|
+
context "check filesystem" do
|
56
|
+
subject { ::FileTest.directory? fake_core.config.package_path(repo_name, rev_hash, "dir") }
|
57
|
+
it { should be_truthy }
|
58
|
+
end
|
59
|
+
context "add dir/file" do
|
60
|
+
before { package.add_file "dir/file", "dir/file-data" }
|
61
|
+
subject { package.paths }
|
62
|
+
it { should include "dir/file" }
|
63
|
+
context "check filesystem" do
|
64
|
+
subject { ::FileTest.file? fake_core.config.package_path(repo_name, rev_hash, "dir/file") }
|
65
|
+
it { should be_truthy }
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context "add dir/" do
|
71
|
+
before { package.add_directory "dir/" }
|
72
|
+
subject { package.paths }
|
73
|
+
it { should include "dir/" }
|
74
|
+
context "check filesystem" do
|
75
|
+
subject { ::FileTest.directory? fake_core.config.package_path(repo_name, rev_hash, "dir") }
|
76
|
+
it { should be_truthy }
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
end # files
|
81
|
+
|
82
|
+
describe "#glob" do
|
83
|
+
|
84
|
+
context "prepare files" do
|
85
|
+
|
86
|
+
before do
|
87
|
+
package.add_file "file1.cpp", ""
|
88
|
+
package.add_file "file2.rb", ""
|
89
|
+
package.add_file "file3.cpp", ""
|
90
|
+
package.add_directory "subdir"
|
91
|
+
package.add_file "subdir/file4.cpp", ""
|
92
|
+
package.add_file "subdir/file5.rb", ""
|
93
|
+
end
|
94
|
+
|
95
|
+
context "glob *.cpp" do
|
96
|
+
subject { package.glob "*.cpp" }
|
97
|
+
it { should include "file1.cpp" }
|
98
|
+
it { should_not include "file2.rb" }
|
99
|
+
it { should include "file3.cpp" }
|
100
|
+
it { should_not include "subdir/file4.cpp" }
|
101
|
+
it { should_not include "subdir/file5.rb" }
|
102
|
+
end
|
103
|
+
|
104
|
+
context "glob subdir/*.rb" do
|
105
|
+
subject { package.glob "subdir/*.rb" }
|
106
|
+
it { should_not include "file1.cpp" }
|
107
|
+
it { should_not include "file2.rb" }
|
108
|
+
it { should_not include "file3.cpp" }
|
109
|
+
it { should_not include "subdir/file4.cpp" }
|
110
|
+
it { should include "subdir/file5.rb" }
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
|
115
|
+
end #glob
|
116
|
+
|
117
|
+
describe "serialization" do
|
118
|
+
|
119
|
+
context "prepare files" do
|
120
|
+
|
121
|
+
before do
|
122
|
+
package.add_file "file1.cpp", ""
|
123
|
+
package.add_file "file2.rb", ""
|
124
|
+
package.add_file "file3.cpp", ""
|
125
|
+
package.add_directory "subdir"
|
126
|
+
package.add_file "subdir/file4.cpp", ""
|
127
|
+
package.add_file "subdir/file5.rb", ""
|
128
|
+
end
|
129
|
+
|
130
|
+
context "save package" do
|
131
|
+
|
132
|
+
before { package.save! }
|
133
|
+
|
134
|
+
context "load package" do
|
135
|
+
let(:loaded_package) do
|
136
|
+
::SocialSnippet::Repository::Models::Package.find_by(
|
137
|
+
:repo_name => "my-repo",
|
138
|
+
:rev_hash => "commit-id",
|
139
|
+
)
|
140
|
+
end
|
141
|
+
|
142
|
+
context "glob *.cpp" do
|
143
|
+
subject { loaded_package.glob "*.cpp" }
|
144
|
+
it { should include "file1.cpp" }
|
145
|
+
it { should_not include "file2.rb" }
|
146
|
+
it { should include "file3.cpp" }
|
147
|
+
it { should_not include "subdir/file4.cpp" }
|
148
|
+
it { should_not include "subdir/file5.rb" }
|
149
|
+
end
|
150
|
+
|
151
|
+
context "glob subdir/*.rb" do
|
152
|
+
subject { loaded_package.glob "subdir/*.rb" }
|
153
|
+
it { should_not include "file1.cpp" }
|
154
|
+
it { should_not include "file2.rb" }
|
155
|
+
it { should_not include "file3.cpp" }
|
156
|
+
it { should_not include "subdir/file4.cpp" }
|
157
|
+
it { should include "subdir/file5.rb" }
|
158
|
+
end
|
159
|
+
|
160
|
+
end
|
161
|
+
|
162
|
+
end
|
163
|
+
|
164
|
+
end # save package
|
165
|
+
|
166
|
+
end # serialization
|
167
|
+
|
168
|
+
end # add snippet.json
|
169
|
+
|
170
|
+
end # ::SocialSnippet::Repository::Models::Package
|
171
|
+
|
172
|
+
|