r10k 3.13.0 → 3.14.0

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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/docker.yml +1 -1
  3. data/.github/workflows/rspec_tests.yml +2 -2
  4. data/.travis.yml +1 -1
  5. data/CHANGELOG.mkd +10 -0
  6. data/doc/dynamic-environments/configuration.mkd +24 -0
  7. data/doc/puppetfile.mkd +13 -0
  8. data/lib/r10k/environment/name.rb +14 -9
  9. data/lib/r10k/environment/tarball.rb +78 -0
  10. data/lib/r10k/environment.rb +1 -0
  11. data/lib/r10k/forge/module_release.rb +2 -1
  12. data/lib/r10k/git/cache.rb +4 -13
  13. data/lib/r10k/git/rugged/base_repository.rb +12 -1
  14. data/lib/r10k/git/rugged/cache.rb +8 -0
  15. data/lib/r10k/git/stateful_repository.rb +2 -0
  16. data/lib/r10k/initializers.rb +10 -0
  17. data/lib/r10k/module/tarball.rb +101 -0
  18. data/lib/r10k/module.rb +1 -0
  19. data/lib/r10k/module_loader/puppetfile.rb +10 -1
  20. data/lib/r10k/source/git.rb +18 -18
  21. data/lib/r10k/tarball.rb +183 -0
  22. data/lib/r10k/util/cacheable.rb +31 -0
  23. data/lib/r10k/util/downloader.rb +134 -0
  24. data/lib/r10k/version.rb +1 -1
  25. data/locales/r10k.pot +39 -23
  26. data/r10k.gemspec +2 -2
  27. data/spec/fixtures/tarball/tarball.tar.gz +0 -0
  28. data/spec/integration/git/rugged/cache_spec.rb +33 -0
  29. data/spec/shared-contexts/tarball.rb +32 -0
  30. data/spec/spec_helper.rb +1 -0
  31. data/spec/unit/action/deploy/module_spec.rb +2 -2
  32. data/spec/unit/environment/name_spec.rb +18 -0
  33. data/spec/unit/environment/tarball_spec.rb +45 -0
  34. data/spec/unit/git/cache_spec.rb +2 -15
  35. data/spec/unit/git/rugged/cache_spec.rb +19 -0
  36. data/spec/unit/module/tarball_spec.rb +70 -0
  37. data/spec/unit/module_loader/puppetfile_spec.rb +4 -1
  38. data/spec/unit/tarball_spec.rb +57 -0
  39. data/spec/unit/util/cacheable_spec.rb +23 -0
  40. data/spec/unit/util/downloader_spec.rb +98 -0
  41. metadata +29 -16
@@ -6,21 +6,29 @@ describe R10K::Environment::Name do
6
6
  it "does not modify the given name when no strip_component is given" do
7
7
  bn = described_class.new('myenv', source: 'source', prefix: false)
8
8
  expect(bn.dirname).to eq 'myenv'
9
+ expect(bn.name).to eq 'myenv'
10
+ expect(bn.original_name).to eq 'myenv'
9
11
  end
10
12
 
11
13
  it "removes the first occurance of a regex match when a regex is given" do
12
14
  bn = described_class.new('myenv', source: 'source', prefix: false, strip_component: '/env/')
13
15
  expect(bn.dirname).to eq 'my'
16
+ expect(bn.name).to eq 'my'
17
+ expect(bn.original_name).to eq 'myenv'
14
18
  end
15
19
 
16
20
  it "does not modify the given name when there is no regex match" do
17
21
  bn = described_class.new('myenv', source: 'source', prefix: false, strip_component: '/bar/')
18
22
  expect(bn.dirname).to eq 'myenv'
23
+ expect(bn.name).to eq 'myenv'
24
+ expect(bn.original_name).to eq 'myenv'
19
25
  end
20
26
 
21
27
  it "removes the given name's prefix when it matches strip_component" do
22
28
  bn = described_class.new('env/prod', source: 'source', prefix: false, strip_component: 'env/')
23
29
  expect(bn.dirname).to eq 'prod'
30
+ expect(bn.name).to eq 'prod'
31
+ expect(bn.original_name).to eq 'env/prod'
24
32
  end
25
33
 
26
34
  it "raises an error when given an integer" do
@@ -34,21 +42,29 @@ describe R10K::Environment::Name do
34
42
  it "uses the branch name as the dirname when prefixing is off" do
35
43
  bn = described_class.new('mybranch', :source => 'source', :prefix => false)
36
44
  expect(bn.dirname).to eq 'mybranch'
45
+ expect(bn.name).to eq 'mybranch'
46
+ expect(bn.original_name).to eq 'mybranch'
37
47
  end
38
48
 
39
49
  it "prepends the source name when prefixing is on" do
40
50
  bn = described_class.new('mybranch', :source => 'source', :prefix => true)
41
51
  expect(bn.dirname).to eq 'source_mybranch'
52
+ expect(bn.name).to eq 'mybranch'
53
+ expect(bn.original_name).to eq 'mybranch'
42
54
  end
43
55
 
44
56
  it "prepends the prefix name when prefixing is overridden" do
45
57
  bn = described_class.new('mybranch', {:prefix => "bar", :sourcename => 'foo'})
46
58
  expect(bn.dirname).to eq 'bar_mybranch'
59
+ expect(bn.name).to eq 'mybranch'
60
+ expect(bn.original_name).to eq 'mybranch'
47
61
  end
48
62
 
49
63
  it "uses the branch name as the dirname when prefixing is nil" do
50
64
  bn = described_class.new('mybranch', {:prefix => nil, :sourcename => 'foo'})
51
65
  expect(bn.dirname).to eq 'mybranch'
66
+ expect(bn.name).to eq 'mybranch'
67
+ expect(bn.original_name).to eq 'mybranch'
52
68
  end
53
69
  end
54
70
 
@@ -149,6 +165,8 @@ describe R10K::Environment::Name do
149
165
  it "replaces invalid characters in #{branch} with underscores" do
150
166
  bn = described_class.new(branch.dup, {:correct => true})
151
167
  expect(bn.dirname).to eq branch.gsub(/\W/, '_')
168
+ expect(bn.name).to eq branch
169
+ expect(bn.original_name).to eq branch
152
170
  end
153
171
  end
154
172
 
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+ require 'r10k/environment'
3
+
4
+ describe R10K::Environment::Tarball do
5
+ let(:tgz_path) do
6
+ File.expand_path('spec/fixtures/tarball/tarball.tar.gz', PROJECT_ROOT)
7
+ end
8
+
9
+ let(:checksum) { '36afcfc2378b8235902d6e647fce7479da6898354d620388646c595a1155ed67' }
10
+ let(:base_params) { { source: tgz_path, version: checksum, modules: { } } }
11
+
12
+ subject { described_class.new('envname', '/some/imaginary/path', 'dirname', base_params) }
13
+
14
+ describe "initializing" do
15
+ it "accepts valid base class initialization arguments" do
16
+ expect(subject.name).to eq 'envname'
17
+ end
18
+ end
19
+
20
+ describe "storing attributes" do
21
+ it "can return the environment name" do
22
+ expect(subject.name).to eq 'envname'
23
+ end
24
+
25
+ it "can return the environment basedir" do
26
+ expect(subject.basedir).to eq '/some/imaginary/path'
27
+ end
28
+
29
+ it "can return the environment dirname" do
30
+ expect(subject.dirname).to eq 'dirname'
31
+ end
32
+
33
+ it "can return the environment path" do
34
+ expect(subject.path.to_s).to eq '/some/imaginary/path/dirname'
35
+ end
36
+
37
+ it "can return the environment source" do
38
+ expect(subject.tarball.source).to eq tgz_path
39
+ end
40
+
41
+ it "can return the environment version" do
42
+ expect(subject.tarball.checksum).to eq checksum
43
+ end
44
+ end
45
+ end
@@ -21,7 +21,8 @@ describe R10K::Git::Cache do
21
21
  end
22
22
  end
23
23
 
24
- subject { subclass.new('git://some/git/remote') }
24
+ let(:remote) { 'git://some/git/remote' }
25
+ subject { subclass.new(remote) }
25
26
 
26
27
  describe "updating the cache" do
27
28
  it "only updates the cache once" do
@@ -62,18 +63,4 @@ describe R10K::Git::Cache do
62
63
  subject.cached?
63
64
  end
64
65
  end
65
-
66
- describe "dirname sanitization" do
67
- it 'sanitizes cache directory name' do
68
- expect(subject.sanitized_dirname).to eq('git---some-git-remote')
69
- end
70
-
71
- context 'with username and password' do
72
- subject { subclass.new('https://"user:pa$$w0rd:@some/git/remote') }
73
-
74
- it 'sanitizes cache directory name' do
75
- expect(subject.sanitized_dirname).to eq('https---some-git-remote')
76
- end
77
- end
78
- end
79
66
  end
@@ -26,4 +26,23 @@ describe R10K::Git::Rugged::Cache, :unless => R10K::Util::Platform.jruby? do
26
26
  expect(described_class.settings[:cache_root]).to eq '/some/path'
27
27
  end
28
28
  end
29
+
30
+ describe "remote url updates" do
31
+ before do
32
+ allow(subject.repo).to receive(:exist?).and_return true
33
+ allow(subject.repo).to receive(:fetch)
34
+ allow(subject.repo).to receive(:remotes).and_return({ 'origin' => 'git://some/git/remote' })
35
+ end
36
+
37
+ it "does not update the URLs if they match" do
38
+ expect(subject.repo).to_not receive(:update_remote)
39
+ subject.sync!
40
+ end
41
+
42
+ it "updates the remote URL if they do not match" do
43
+ allow(subject.repo).to receive(:remotes).and_return({ 'origin' => 'foo'})
44
+ expect(subject.repo).to receive(:update_remote)
45
+ subject.sync!
46
+ end
47
+ end
29
48
  end
@@ -0,0 +1,70 @@
1
+ require 'spec_helper'
2
+ require 'r10k/module'
3
+ require 'fileutils'
4
+
5
+ describe R10K::Module::Tarball do
6
+ include_context 'Tarball'
7
+
8
+ let(:base_params) { { type: 'tarball', source: fixture_tarball, version: fixture_checksum } }
9
+
10
+ subject do
11
+ described_class.new(
12
+ 'fixture-tarball',
13
+ moduledir,
14
+ base_params,
15
+ )
16
+ end
17
+
18
+ describe "setting the owner and name" do
19
+ describe "with a title of 'fixture-tarball'" do
20
+ it "sets the owner to 'fixture'" do
21
+ expect(subject.owner).to eq 'fixture'
22
+ end
23
+
24
+ it "sets the name to 'tarball'" do
25
+ expect(subject.name).to eq 'tarball'
26
+ end
27
+
28
+ it "sets the path to the given moduledir + modname" do
29
+ expect(subject.path.to_s).to eq(File.join(moduledir, 'tarball'))
30
+ end
31
+ end
32
+ end
33
+
34
+ describe "properties" do
35
+ it "sets the module type to :tarball" do
36
+ expect(subject.properties).to include(type: :tarball)
37
+ end
38
+
39
+ it "sets the version" do
40
+ expect(subject.properties).to include(expected: fixture_checksum)
41
+ end
42
+ end
43
+
44
+ describe 'syncing the module' do
45
+ it 'defaults to keeping the spec dir' do
46
+ subject.sync
47
+ expect(Dir.exist?(File.join(moduledir, 'tarball', 'spec'))).to be(true)
48
+ end
49
+ end
50
+
51
+ describe "determining the status" do
52
+ it "delegates to R10K::Tarball" do
53
+ expect(subject).to receive(:tarball).twice.and_return instance_double('R10K::Tarball', cache_valid?: true, insync?: true)
54
+ expect(subject).to receive(:path).twice.and_return instance_double('Pathname', exist?: true)
55
+
56
+ expect(subject.status).to eq(:insync)
57
+ end
58
+ end
59
+
60
+ describe "option parsing" do
61
+ describe "version" do
62
+ context "when no version is given" do
63
+ subject { described_class.new('fixture-tarball', moduledir, base_params.reject { |k| k.eql?(:version) }) }
64
+ it "does not require a version" do
65
+ expect(subject).to be_kind_of(described_class)
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -167,6 +167,7 @@ describe R10K::ModuleLoader::Puppetfile do
167
167
  it 'should disable and not add modules that conflict with the environment' do
168
168
  env = instance_double('R10K::Environment::Base')
169
169
  mod = instance_double('R10K::Module::Base', name: 'conflict', origin: :puppetfile, 'origin=': nil)
170
+ allow(env).to receive(:name).and_return('conflict')
170
171
  loader = R10K::ModuleLoader::Puppetfile.new(basedir: basedir, environment: env)
171
172
  allow(env).to receive(:'module_conflicts?').with(mod).and_return(true)
172
173
  allow(mod).to receive(:spec_deletable=)
@@ -187,7 +188,9 @@ describe R10K::ModuleLoader::Puppetfile do
187
188
  context 'when belonging to an environment' do
188
189
  let(:env_contents) { ['env1', 'env2' ] }
189
190
  let(:env) { double(:environment, desired_contents: env_contents) }
190
-
191
+ before {
192
+ allow(env).to receive(:name).and_return('env1')
193
+ }
191
194
  subject { R10K::ModuleLoader::Puppetfile.new(basedir: '/test/basedir', environment: env) }
192
195
 
193
196
  it "includes environment's desired_contents" do
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+ require 'r10k/tarball'
3
+
4
+ describe R10K::Tarball do
5
+ include_context 'Tarball'
6
+
7
+ subject { described_class.new('fixture-tarball', fixture_tarball, checksum: fixture_checksum) }
8
+
9
+ describe 'initialization' do
10
+ it 'initializes' do
11
+ expect(subject).to be_kind_of(described_class)
12
+ end
13
+ end
14
+
15
+ describe 'downloading and caching' do
16
+ it 'downloads the source to the cache' do
17
+ # No cache present initially
18
+ expect(File.exist?(subject.cache_path)).to be(false)
19
+ expect(subject.cache_valid?).to be(false)
20
+
21
+ subject.get
22
+
23
+ expect(subject.cache_valid?).to be(true)
24
+ expect(File.exist?(subject.cache_path)).to be(true)
25
+ end
26
+
27
+ let(:raw_content) {[
28
+ './',
29
+ './Puppetfile',
30
+ './metadata.json',
31
+ './spec/',
32
+ './environment.conf',
33
+ './spec/1',
34
+ ]}
35
+
36
+ let(:clean_content) {[
37
+ 'Puppetfile',
38
+ 'metadata.json',
39
+ 'spec',
40
+ 'environment.conf',
41
+ 'spec/1',
42
+ ]}
43
+
44
+ it 'returns clean paths when listing cached tarball content' do
45
+ iterator = allow(subject).to receive(:each_tarball_entry)
46
+ raw_content.each { |entry| iterator.and_yield(entry) }
47
+
48
+ expect(subject.paths).to eq(clean_content)
49
+ end
50
+ end
51
+
52
+ describe 'http sources'
53
+
54
+ describe 'file sources'
55
+
56
+ describe 'syncing'
57
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+ require 'r10k/util/cacheable'
3
+
4
+ RSpec.describe R10K::Util::Cacheable do
5
+
6
+ subject { Object.new.extend(R10K::Util::Cacheable) }
7
+
8
+ describe "dirname sanitization" do
9
+ let(:input) { 'git://some/git/remote' }
10
+
11
+ it 'sanitizes URL to directory name' do
12
+ expect(subject.sanitized_dirname(input)).to eq('git---some-git-remote')
13
+ end
14
+
15
+ context 'with username and password' do
16
+ let(:input) { 'https://"user:pa$$w0rd:@authenticated/git/remote' }
17
+
18
+ it 'sanitizes authenticated URL to directory name' do
19
+ expect(subject.sanitized_dirname(input)).to eq('https---authenticated-git-remote')
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,98 @@
1
+ require 'spec_helper'
2
+ require 'r10k/util/downloader'
3
+
4
+ describe R10K::Util::Downloader do
5
+
6
+ subject(:downloader) do
7
+ subj = Object.new
8
+ subj.extend(R10K::Util::Downloader)
9
+ subj.singleton_class.class_eval { public :download }
10
+ subj.singleton_class.class_eval { public :http_get }
11
+ subj.singleton_class.class_eval { public :file_digest }
12
+ subj
13
+ end
14
+
15
+ let(:tmpdir) { Dir.mktmpdir }
16
+ after(:each) { FileUtils.remove_entry_secure(tmpdir) }
17
+
18
+ describe 'http_get' do
19
+ let(:src_url) { 'https://example.com' }
20
+ let(:dst_file) { File.join(tmpdir, 'test.out') }
21
+ let(:tarball_uri) { URI('http://tarball.example.com/tarball.tar.gz') }
22
+ let(:redirect_uri) { URI('http://redirect.example.com/redirect') }
23
+ let(:proxy_uri) { URI('http://user:password@proxy.example.com') }
24
+
25
+ it 'downloads a simple file' do
26
+ mock_session = instance_double('Net::HTTP', active?: true)
27
+ tarball_response = instance_double('Net::HTTPSuccess')
28
+
29
+ expect(Net::HTTP).to receive(:new).with(tarball_uri.host, any_args).and_return(mock_session)
30
+ expect(Net::HTTPSuccess).to receive(:===).with(tarball_response).and_return(true)
31
+
32
+ expect(mock_session).to receive(:request_get).and_yield(tarball_response)
33
+ expect(mock_session).to receive(:start).once
34
+ expect(mock_session).to receive(:finish).once
35
+
36
+ expect { |b| downloader.http_get(tarball_uri, &b) }.to yield_with_args(tarball_response)
37
+ end
38
+
39
+ it 'follows redirects' do
40
+ mock_session_1 = instance_double('Net::HTTP', active?: false)
41
+ mock_session_2 = instance_double('Net::HTTP', active?: true)
42
+ redirect_response = instance_double('Net::HTTPRedirection')
43
+ tarball_response = instance_double('Net::HTTPSuccess')
44
+
45
+ expect(Net::HTTP).to receive(:new).with(redirect_uri.host, any_args).and_return(mock_session_1).once
46
+ expect(Net::HTTP).to receive(:new).with(tarball_uri.host, any_args).and_return(mock_session_2).once
47
+ expect(Net::HTTPRedirection).to receive(:===).with(redirect_response).and_return(true)
48
+ expect(Net::HTTPSuccess).to receive(:===).with(tarball_response).and_return(true)
49
+ allow(Net::HTTPRedirection).to receive(:===).and_call_original
50
+
51
+ expect(mock_session_1).to receive(:request_get).and_yield(redirect_response)
52
+ expect(mock_session_2).to receive(:request_get).and_yield(tarball_response)
53
+
54
+ # The redirect response should be queried for the redirect location
55
+ expect(redirect_response).to receive(:[]).with('location').and_return(tarball_uri.to_s)
56
+
57
+ # Both sessions should start and finish cleanly
58
+ expect(mock_session_1).to receive(:start).once
59
+ expect(mock_session_1).to receive(:finish).once
60
+ expect(mock_session_2).to receive(:start).once
61
+ expect(mock_session_2).to receive(:finish).once
62
+
63
+ expect { |b| downloader.http_get(redirect_uri, &b) }.to yield_with_args(tarball_response)
64
+ end
65
+
66
+ it 'can use a proxy' do
67
+ mock_session = instance_double('Net::HTTP', active?: true)
68
+
69
+ expect(Net::HTTP).to receive(:new)
70
+ .with(tarball_uri.host,
71
+ tarball_uri.port,
72
+ proxy_uri.host,
73
+ proxy_uri.port,
74
+ proxy_uri.user,
75
+ proxy_uri.password,
76
+ any_args)
77
+ .and_return(mock_session)
78
+
79
+ expect(mock_session).to receive(:request_get).and_return(:not_yielded)
80
+ expect(mock_session).to receive(:start).once
81
+ expect(mock_session).to receive(:finish).once
82
+
83
+ downloader.http_get(tarball_uri, proxy: proxy_uri)
84
+ end
85
+ end
86
+
87
+ describe 'checksums' do
88
+ let(:fixture_checksum) { '0bcea17aa0c5e868c18f0fa042feda770e47c1a4223229f82116ccb3ca33c6e3' }
89
+ let(:fixture_tarball) do
90
+ File.expand_path('spec/fixtures/integration/git/puppet-boolean-bare.tar', PROJECT_ROOT)
91
+ end
92
+
93
+ it 'checksums files' do
94
+ expect(downloader.file_digest(fixture_tarball)).to eql(fixture_checksum)
95
+ end
96
+ end
97
+ end
98
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: r10k
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.13.0
4
+ version: 3.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrien Thebo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-26 00:00:00.000000000 Z
11
+ date: 2021-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colored2
@@ -142,6 +142,20 @@ dependencies:
142
142
  - - "~>"
143
143
  - !ruby/object:Gem::Version
144
144
  version: 2.2.3
145
+ - !ruby/object:Gem::Dependency
146
+ name: minitar
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: 0.9.0
152
+ type: :runtime
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: 0.9.0
145
159
  - !ruby/object:Gem::Dependency
146
160
  name: rspec
147
161
  requirement: !ruby/object:Gem::Requirement
@@ -184,20 +198,6 @@ dependencies:
184
198
  - - "~>"
185
199
  - !ruby/object:Gem::Version
186
200
  version: 0.9.11
187
- - !ruby/object:Gem::Dependency
188
- name: minitar
189
- requirement: !ruby/object:Gem::Requirement
190
- requirements:
191
- - - "~>"
192
- - !ruby/object:Gem::Version
193
- version: 0.9.0
194
- type: :development
195
- prerelease: false
196
- version_requirements: !ruby/object:Gem::Requirement
197
- requirements:
198
- - - "~>"
199
- - !ruby/object:Gem::Version
200
- version: 0.9.0
201
201
  description: |2
202
202
  R10K provides a general purpose toolset for deploying Puppet environments and modules.
203
203
  It implements the Puppetfile format and provides a native implementation of Puppet
@@ -372,6 +372,7 @@ files:
372
372
  - lib/r10k/environment/name.rb
373
373
  - lib/r10k/environment/plain.rb
374
374
  - lib/r10k/environment/svn.rb
375
+ - lib/r10k/environment/tarball.rb
375
376
  - lib/r10k/environment/with_modules.rb
376
377
  - lib/r10k/errors.rb
377
378
  - lib/r10k/errors/formatting.rb
@@ -410,6 +411,7 @@ files:
410
411
  - lib/r10k/module/local.rb
411
412
  - lib/r10k/module/metadata_file.rb
412
413
  - lib/r10k/module/svn.rb
414
+ - lib/r10k/module/tarball.rb
413
415
  - lib/r10k/module_loader/puppetfile.rb
414
416
  - lib/r10k/module_loader/puppetfile/dsl.rb
415
417
  - lib/r10k/puppetfile.rb
@@ -434,10 +436,13 @@ files:
434
436
  - lib/r10k/svn.rb
435
437
  - lib/r10k/svn/remote.rb
436
438
  - lib/r10k/svn/working_dir.rb
439
+ - lib/r10k/tarball.rb
437
440
  - lib/r10k/util/attempt.rb
438
441
  - lib/r10k/util/basedir.rb
442
+ - lib/r10k/util/cacheable.rb
439
443
  - lib/r10k/util/cleaner.rb
440
444
  - lib/r10k/util/commands.rb
445
+ - lib/r10k/util/downloader.rb
441
446
  - lib/r10k/util/exec_env.rb
442
447
  - lib/r10k/util/license.rb
443
448
  - lib/r10k/util/platform.rb
@@ -462,6 +467,7 @@ files:
462
467
  - spec/fixtures/module/forge/bad_module/metadata.json
463
468
  - spec/fixtures/module/forge/eight_hundred/Modulefile
464
469
  - spec/fixtures/module/forge/eight_hundred/metadata.json
470
+ - spec/fixtures/tarball/tarball.tar.gz
465
471
  - spec/fixtures/unit/action/r10k.yaml
466
472
  - spec/fixtures/unit/action/r10k_cachedir.yaml
467
473
  - spec/fixtures/unit/action/r10k_creds.yaml
@@ -495,6 +501,7 @@ files:
495
501
  - spec/fixtures/unit/util/purgeable/managed_two/unmanaged_2
496
502
  - spec/fixtures/unit/util/subprocess/runner/no-execute.sh
497
503
  - spec/integration/git/rugged/bare_repository_spec.rb
504
+ - spec/integration/git/rugged/cache_spec.rb
498
505
  - spec/integration/git/rugged/thin_repository_spec.rb
499
506
  - spec/integration/git/rugged/working_repository_spec.rb
500
507
  - spec/integration/git/shellgit/bare_repository_spec.rb
@@ -509,6 +516,7 @@ files:
509
516
  - spec/r10k-mocks/mock_env.rb
510
517
  - spec/r10k-mocks/mock_source.rb
511
518
  - spec/shared-contexts/git-fixtures.rb
519
+ - spec/shared-contexts/tarball.rb
512
520
  - spec/shared-examples/deploy-actions.rb
513
521
  - spec/shared-examples/git-repository.rb
514
522
  - spec/shared-examples/git/bare_repository.rb
@@ -538,6 +546,7 @@ files:
538
546
  - spec/unit/environment/name_spec.rb
539
547
  - spec/unit/environment/plain_spec.rb
540
548
  - spec/unit/environment/svn_spec.rb
549
+ - spec/unit/environment/tarball_spec.rb
541
550
  - spec/unit/environment/with_modules_spec.rb
542
551
  - spec/unit/errors/formatting_spec.rb
543
552
  - spec/unit/feature_spec.rb
@@ -559,6 +568,7 @@ files:
559
568
  - spec/unit/module/git_spec.rb
560
569
  - spec/unit/module/metadata_file_spec.rb
561
570
  - spec/unit/module/svn_spec.rb
571
+ - spec/unit/module/tarball_spec.rb
562
572
  - spec/unit/module_loader/puppetfile_spec.rb
563
573
  - spec/unit/module_spec.rb
564
574
  - spec/unit/puppetfile_spec.rb
@@ -580,8 +590,11 @@ files:
580
590
  - spec/unit/source_spec.rb
581
591
  - spec/unit/svn/remote_spec.rb
582
592
  - spec/unit/svn/working_dir_spec.rb
593
+ - spec/unit/tarball_spec.rb
583
594
  - spec/unit/util/attempt_spec.rb
595
+ - spec/unit/util/cacheable_spec.rb
584
596
  - spec/unit/util/commands_spec.rb
597
+ - spec/unit/util/downloader_spec.rb
585
598
  - spec/unit/util/exec_env_spec.rb
586
599
  - spec/unit/util/purgeable_spec.rb
587
600
  - spec/unit/util/setopts_spec.rb