social_snippet 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
|