r10k 3.12.1 → 3.14.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/docker.yml +1 -1
  3. data/.github/workflows/rspec_tests.yml +5 -5
  4. data/.github/workflows/stale.yml +2 -0
  5. data/.gitignore +1 -0
  6. data/.travis.yml +1 -1
  7. data/CHANGELOG.mkd +32 -0
  8. data/doc/dynamic-environments/configuration.mkd +59 -10
  9. data/doc/dynamic-environments/usage.mkd +4 -0
  10. data/doc/git/providers.mkd +22 -0
  11. data/doc/puppetfile.mkd +13 -0
  12. data/docker/Makefile +1 -1
  13. data/docker/r10k/Dockerfile +1 -1
  14. data/docker/r10k/release.Dockerfile +1 -1
  15. data/lib/r10k/action/runner.rb +6 -0
  16. data/lib/r10k/environment/bare.rb +4 -7
  17. data/lib/r10k/environment/name.rb +14 -9
  18. data/lib/r10k/environment/plain.rb +16 -0
  19. data/lib/r10k/environment/tarball.rb +78 -0
  20. data/lib/r10k/environment/with_modules.rb +1 -1
  21. data/lib/r10k/environment.rb +2 -0
  22. data/lib/r10k/errors.rb +5 -0
  23. data/lib/r10k/forge/module_release.rb +2 -1
  24. data/lib/r10k/git/cache.rb +4 -13
  25. data/lib/r10k/git/rugged/bare_repository.rb +1 -1
  26. data/lib/r10k/git/rugged/base_repository.rb +12 -1
  27. data/lib/r10k/git/rugged/cache.rb +8 -0
  28. data/lib/r10k/git/rugged/credentials.rb +1 -1
  29. data/lib/r10k/git/rugged/working_repository.rb +1 -1
  30. data/lib/r10k/git/stateful_repository.rb +2 -0
  31. data/lib/r10k/initializers.rb +20 -0
  32. data/lib/r10k/logging.rb +78 -1
  33. data/lib/r10k/module/base.rb +6 -2
  34. data/lib/r10k/module/forge.rb +10 -10
  35. data/lib/r10k/module/git.rb +1 -3
  36. data/lib/r10k/module/local.rb +1 -1
  37. data/lib/r10k/module/tarball.rb +101 -0
  38. data/lib/r10k/module.rb +1 -0
  39. data/lib/r10k/module_loader/puppetfile/dsl.rb +1 -1
  40. data/lib/r10k/module_loader/puppetfile.rb +21 -7
  41. data/lib/r10k/settings.rb +35 -0
  42. data/lib/r10k/source/git.rb +18 -18
  43. data/lib/r10k/source/yaml.rb +1 -1
  44. data/lib/r10k/tarball.rb +183 -0
  45. data/lib/r10k/util/cacheable.rb +31 -0
  46. data/lib/r10k/util/downloader.rb +134 -0
  47. data/lib/r10k/util/purgeable.rb +2 -2
  48. data/lib/r10k/version.rb +1 -1
  49. data/locales/r10k.pot +85 -57
  50. data/r10k.gemspec +2 -2
  51. data/r10k.yaml.example +28 -0
  52. data/spec/fixtures/tarball/tarball.tar.gz +0 -0
  53. data/spec/fixtures/unit/action/r10k_logging.yaml +12 -0
  54. data/spec/fixtures/unit/puppetfile/various-modules/modules/apt/.gitkeep +1 -0
  55. data/spec/fixtures/unit/puppetfile/various-modules/modules/baz/.gitkeep +1 -0
  56. data/spec/fixtures/unit/puppetfile/various-modules/modules/buzz/.gitkeep +1 -0
  57. data/spec/fixtures/unit/puppetfile/various-modules/modules/canary/.gitkeep +1 -0
  58. data/spec/fixtures/unit/puppetfile/various-modules/modules/fizz/.gitkeep +1 -0
  59. data/spec/fixtures/unit/puppetfile/various-modules/modules/rpm/.gitkeep +1 -0
  60. data/spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/managed_symlink_file +1 -0
  61. data/spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/{managed_subdir_2 → subdir_allowlisted_2}/ignored_1 +0 -0
  62. data/spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/unmanaged_symlink_dir +1 -0
  63. data/spec/fixtures/unit/util/purgeable/managed_one/managed_symlink_dir +1 -0
  64. data/spec/fixtures/unit/util/purgeable/managed_one/unmanaged_symlink_file +1 -0
  65. data/spec/integration/git/rugged/cache_spec.rb +33 -0
  66. data/spec/integration/util/purageable_spec.rb +41 -0
  67. data/spec/shared-contexts/tarball.rb +32 -0
  68. data/spec/spec_helper.rb +1 -0
  69. data/spec/unit/action/deploy/module_spec.rb +2 -2
  70. data/spec/unit/action/puppetfile/install_spec.rb +2 -2
  71. data/spec/unit/action/runner_spec.rb +52 -1
  72. data/spec/unit/environment/bare_spec.rb +13 -0
  73. data/spec/unit/environment/name_spec.rb +18 -0
  74. data/spec/unit/environment/plain_spec.rb +8 -0
  75. data/spec/unit/environment/tarball_spec.rb +45 -0
  76. data/spec/unit/environment/with_modules_spec.rb +1 -1
  77. data/spec/unit/git/cache_spec.rb +2 -15
  78. data/spec/unit/git/rugged/cache_spec.rb +19 -0
  79. data/spec/unit/module/forge_spec.rb +9 -7
  80. data/spec/unit/module/tarball_spec.rb +70 -0
  81. data/spec/unit/module_loader/puppetfile_spec.rb +21 -5
  82. data/spec/unit/module_spec.rb +14 -7
  83. data/spec/unit/tarball_spec.rb +57 -0
  84. data/spec/unit/util/cacheable_spec.rb +23 -0
  85. data/spec/unit/util/downloader_spec.rb +98 -0
  86. data/spec/unit/util/purgeable_spec.rb +22 -11
  87. metadata +45 -17
@@ -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
+
@@ -15,8 +15,10 @@ RSpec.describe R10K::Util::Purgeable do
15
15
  'spec/fixtures/unit/util/purgeable/managed_one/expected_1',
16
16
  'spec/fixtures/unit/util/purgeable/managed_one/new_1',
17
17
  'spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1',
18
+ 'spec/fixtures/unit/util/purgeable/managed_one/managed_symlink_dir',
18
19
  'spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_expected_1',
19
20
  'spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_new_1',
21
+ 'spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/managed_symlink_file',
20
22
  'spec/fixtures/unit/util/purgeable/managed_two/expected_2',
21
23
  'spec/fixtures/unit/util/purgeable/managed_two/new_2',
22
24
  'spec/fixtures/unit/util/purgeable/managed_two/.hidden',
@@ -30,7 +32,8 @@ RSpec.describe R10K::Util::Purgeable do
30
32
 
31
33
  describe '#current_contents' do
32
34
  it 'collects direct contents of all managed directories' do
33
- expect(subject.current_contents(recurse)).to contain_exactly(/\/expected_1/, /\/expected_2/, /\/unmanaged_1/, /\/unmanaged_2/, /\/managed_subdir_1/)
35
+ expect(subject.current_contents(recurse)).to contain_exactly(/\/expected_1/, /\/expected_2/, /\/unmanaged_1/, /\/unmanaged_2/,
36
+ /\/managed_subdir_1/, /\/managed_symlink_dir/, /\/unmanaged_symlink_file/)
34
37
  end
35
38
  end
36
39
 
@@ -46,7 +49,7 @@ RSpec.describe R10K::Util::Purgeable do
46
49
  let(:whitelist) { [] }
47
50
 
48
51
  it 'collects current_contents that should not exist' do
49
- expect(subject.stale_contents(recurse, exclusions, whitelist)).to contain_exactly(/\/unmanaged_1/, /\/unmanaged_2/)
52
+ expect(subject.stale_contents(recurse, exclusions, whitelist)).to contain_exactly(/\/unmanaged_1/, /\/unmanaged_2/, /\/unmanaged_symlink_file/)
50
53
  end
51
54
  end
52
55
 
@@ -56,7 +59,7 @@ RSpec.describe R10K::Util::Purgeable do
56
59
 
57
60
  it 'collects current_contents that should not exist except whitelisted items' do
58
61
  expect(subject.logger).to receive(:debug).with(/unmanaged_1.*whitelist match/i)
59
- expect(subject.stale_contents(recurse, exclusions, whitelist)).to contain_exactly(/\/unmanaged_2/)
62
+ expect(subject.stale_contents(recurse, exclusions, whitelist)).to contain_exactly(/\/unmanaged_2/, /\/unmanaged_symlink_file/)
60
63
  end
61
64
  end
62
65
 
@@ -66,7 +69,7 @@ RSpec.describe R10K::Util::Purgeable do
66
69
 
67
70
  it 'collects current_contents that should not exist except excluded items' do
68
71
  expect(subject.logger).to receive(:debug2).with(/unmanaged_2.*internal exclusion match/i)
69
- expect(subject.stale_contents(recurse, exclusions, whitelist)).to contain_exactly(/\/unmanaged_1/)
72
+ expect(subject.stale_contents(recurse, exclusions, whitelist)).to contain_exactly(/\/unmanaged_1/, /\/unmanaged_symlink_file/)
70
73
  end
71
74
  end
72
75
  end
@@ -102,9 +105,13 @@ RSpec.describe R10K::Util::Purgeable do
102
105
  expect(subject.current_contents(recurse)).
103
106
  to contain_exactly(/\/expected_1/, /\/expected_2/,
104
107
  /\/unmanaged_1/, /\/unmanaged_2/,
108
+ /\/managed_symlink_dir/,
109
+ /\/unmanaged_symlink_file/,
105
110
  /\/managed_subdir_1/,
106
111
  /\/subdir_expected_1/, /\/subdir_unmanaged_1/,
107
- /\/managed_subdir_2/, /\/ignored_1/,
112
+ /\/managed_symlink_file/,
113
+ /\/unmanaged_symlink_dir/,
114
+ /\/subdir_allowlisted_2/, /\/ignored_1/,
108
115
  /\/\.hidden/)
109
116
  end
110
117
  end
@@ -122,7 +129,8 @@ RSpec.describe R10K::Util::Purgeable do
122
129
 
123
130
  it 'collects current_contents that should not exist recursively' do
124
131
  expect(subject.stale_contents(recurse, exclusions, whitelist)).
125
- to contain_exactly(/\/unmanaged_1/, /\/unmanaged_2/, /\/subdir_unmanaged_1/, /\/ignored_1/)
132
+ to contain_exactly(/\/unmanaged_1/, /\/unmanaged_2/, /\/unmanaged_symlink_file/, /\/subdir_unmanaged_1/,
133
+ /\/ignored_1/, /\/subdir_allowlisted_2/, /\/unmanaged_symlink_dir/)
126
134
  end
127
135
  end
128
136
 
@@ -134,7 +142,8 @@ RSpec.describe R10K::Util::Purgeable do
134
142
  expect(subject.logger).to receive(:debug).with(/unmanaged_1.*whitelist match/i)
135
143
 
136
144
  expect(subject.stale_contents(recurse, exclusions, whitelist)).
137
- to contain_exactly(/\/unmanaged_2/, /\/subdir_unmanaged_1/, /\/ignored_1/)
145
+ to contain_exactly(/\/unmanaged_2/, /\/subdir_unmanaged_1/, /\/unmanaged_symlink_file/, /\/ignored_1/,
146
+ /\/subdir_allowlisted_2/, /\/unmanaged_symlink_dir/)
138
147
  end
139
148
 
140
149
  it 'does not collect contents that match recursive globbed whitelist items as intermediate values' do
@@ -142,7 +151,7 @@ RSpec.describe R10K::Util::Purgeable do
142
151
  expect(subject.logger).not_to receive(:debug).with(/ignored_1/)
143
152
 
144
153
  expect(subject.stale_contents(recurse, exclusions, recursive_whitelist)).
145
- to contain_exactly(/\/unmanaged_2/, /\/managed_one\/unmanaged_1/)
154
+ to contain_exactly(/\/unmanaged_2/, /\/managed_one\/unmanaged_1/, /\/managed_one\/unmanaged_symlink_file/)
146
155
  end
147
156
  end
148
157
 
@@ -154,7 +163,8 @@ RSpec.describe R10K::Util::Purgeable do
154
163
  expect(subject.logger).to receive(:debug2).with(/unmanaged_2.*internal exclusion match/i)
155
164
 
156
165
  expect(subject.stale_contents(recurse, exclusions, whitelist)).
157
- to contain_exactly(/\/unmanaged_1/, /\/subdir_unmanaged_1/, /\/ignored_1/)
166
+ to contain_exactly(/\/unmanaged_1/, /\/unmanaged_symlink_file/, /\/subdir_unmanaged_1/, /\/ignored_1/,
167
+ /\/subdir_allowlisted_2/, /\/unmanaged_symlink_dir/)
158
168
  end
159
169
 
160
170
  it 'does not collect contents that match recursive globbed exclusion items as intermediate values' do
@@ -162,7 +172,7 @@ RSpec.describe R10K::Util::Purgeable do
162
172
  expect(subject.logger).not_to receive(:debug).with(/ignored_1/)
163
173
 
164
174
  expect(subject.stale_contents(recurse, recursive_exclusions, whitelist)).
165
- to contain_exactly(/\/unmanaged_2/, /\/managed_one\/unmanaged_1/)
175
+ to contain_exactly(/\/unmanaged_2/, /\/unmanaged_symlink_file/, /\/managed_one\/unmanaged_1/)
166
176
  end
167
177
  end
168
178
  end
@@ -199,6 +209,7 @@ RSpec.describe R10K::Util::Purgeable do
199
209
  it 'does not purge items matching glob at root level' do
200
210
  allow(FileUtils).to receive(:rm_r)
201
211
  expect(FileUtils).to_not receive(:rm_r).with(/\/unmanaged_[12]/, anything)
212
+ expect(FileUtils).to_not receive(:rm_r).with(/\/unmanaged_symlink_file/, anything)
202
213
  expect(subject.logger).to receive(:debug).with(/whitelist match/i).at_least(:once)
203
214
 
204
215
  subject.purge!(purge_opts)
@@ -209,7 +220,7 @@ RSpec.describe R10K::Util::Purgeable do
209
220
  context "recursive whitelist glob" do
210
221
  let(:whitelist) do
211
222
  managed_directories.flat_map do |dir|
212
- [File.join(dir, "**", "*unmanaged*"), File.join(dir, "**", "managed_subdir_2")]
223
+ [File.join(dir, "**", "*unmanaged*"), File.join(dir, "**", "subdir_allowlisted_2")]
213
224
  end
214
225
  end
215
226
  let(:purge_opts) { { recurse: true, whitelist: whitelist } }
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.12.1
4
+ version: 3.14.2
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-09-17 00:00:00.000000000 Z
11
+ date: 2022-02-17 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'
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'
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
@@ -370,7 +370,9 @@ files:
370
370
  - lib/r10k/environment/base.rb
371
371
  - lib/r10k/environment/git.rb
372
372
  - lib/r10k/environment/name.rb
373
+ - lib/r10k/environment/plain.rb
373
374
  - lib/r10k/environment/svn.rb
375
+ - lib/r10k/environment/tarball.rb
374
376
  - lib/r10k/environment/with_modules.rb
375
377
  - lib/r10k/errors.rb
376
378
  - lib/r10k/errors/formatting.rb
@@ -409,6 +411,7 @@ files:
409
411
  - lib/r10k/module/local.rb
410
412
  - lib/r10k/module/metadata_file.rb
411
413
  - lib/r10k/module/svn.rb
414
+ - lib/r10k/module/tarball.rb
412
415
  - lib/r10k/module_loader/puppetfile.rb
413
416
  - lib/r10k/module_loader/puppetfile/dsl.rb
414
417
  - lib/r10k/puppetfile.rb
@@ -433,10 +436,13 @@ files:
433
436
  - lib/r10k/svn.rb
434
437
  - lib/r10k/svn/remote.rb
435
438
  - lib/r10k/svn/working_dir.rb
439
+ - lib/r10k/tarball.rb
436
440
  - lib/r10k/util/attempt.rb
437
441
  - lib/r10k/util/basedir.rb
442
+ - lib/r10k/util/cacheable.rb
438
443
  - lib/r10k/util/cleaner.rb
439
444
  - lib/r10k/util/commands.rb
445
+ - lib/r10k/util/downloader.rb
440
446
  - lib/r10k/util/exec_env.rb
441
447
  - lib/r10k/util/license.rb
442
448
  - lib/r10k/util/platform.rb
@@ -461,12 +467,14 @@ files:
461
467
  - spec/fixtures/module/forge/bad_module/metadata.json
462
468
  - spec/fixtures/module/forge/eight_hundred/Modulefile
463
469
  - spec/fixtures/module/forge/eight_hundred/metadata.json
470
+ - spec/fixtures/tarball/tarball.tar.gz
464
471
  - spec/fixtures/unit/action/r10k.yaml
465
472
  - spec/fixtures/unit/action/r10k_cachedir.yaml
466
473
  - spec/fixtures/unit/action/r10k_creds.yaml
467
474
  - spec/fixtures/unit/action/r10k_forge_auth.yaml
468
475
  - spec/fixtures/unit/action/r10k_forge_auth_no_url.yaml
469
476
  - spec/fixtures/unit/action/r10k_generate_types.yaml
477
+ - spec/fixtures/unit/action/r10k_logging.yaml
470
478
  - spec/fixtures/unit/action/r10k_puppet_path.yaml
471
479
  - spec/fixtures/unit/puppetfile/argument-error/Puppetfile
472
480
  - spec/fixtures/unit/puppetfile/default-branch-override/Puppetfile
@@ -479,22 +487,34 @@ files:
479
487
  - spec/fixtures/unit/puppetfile/valid-forge-without-version/Puppetfile
480
488
  - spec/fixtures/unit/puppetfile/various-modules/Puppetfile
481
489
  - spec/fixtures/unit/puppetfile/various-modules/Puppetfile.new
490
+ - spec/fixtures/unit/puppetfile/various-modules/modules/apt/.gitkeep
491
+ - spec/fixtures/unit/puppetfile/various-modules/modules/baz/.gitkeep
492
+ - spec/fixtures/unit/puppetfile/various-modules/modules/buzz/.gitkeep
493
+ - spec/fixtures/unit/puppetfile/various-modules/modules/canary/.gitkeep
494
+ - spec/fixtures/unit/puppetfile/various-modules/modules/fizz/.gitkeep
495
+ - spec/fixtures/unit/puppetfile/various-modules/modules/rpm/.gitkeep
482
496
  - spec/fixtures/unit/util/purgeable/managed_one/expected_1
483
- - spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/managed_subdir_2/ignored_1
497
+ - spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/managed_symlink_file
498
+ - spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_allowlisted_2/ignored_1
484
499
  - spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_expected_1
485
500
  - spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_unmanaged_1
501
+ - spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/unmanaged_symlink_dir
502
+ - spec/fixtures/unit/util/purgeable/managed_one/managed_symlink_dir
486
503
  - spec/fixtures/unit/util/purgeable/managed_one/unmanaged_1
504
+ - spec/fixtures/unit/util/purgeable/managed_one/unmanaged_symlink_file
487
505
  - spec/fixtures/unit/util/purgeable/managed_two/.hidden/unmanaged_3
488
506
  - spec/fixtures/unit/util/purgeable/managed_two/expected_2
489
507
  - spec/fixtures/unit/util/purgeable/managed_two/unmanaged_2
490
508
  - spec/fixtures/unit/util/subprocess/runner/no-execute.sh
491
509
  - spec/integration/git/rugged/bare_repository_spec.rb
510
+ - spec/integration/git/rugged/cache_spec.rb
492
511
  - spec/integration/git/rugged/thin_repository_spec.rb
493
512
  - spec/integration/git/rugged/working_repository_spec.rb
494
513
  - spec/integration/git/shellgit/bare_repository_spec.rb
495
514
  - spec/integration/git/shellgit/thin_repository_spec.rb
496
515
  - spec/integration/git/shellgit/working_repository_spec.rb
497
516
  - spec/integration/git/stateful_repository_spec.rb
517
+ - spec/integration/util/purageable_spec.rb
498
518
  - spec/matchers/exit_with.rb
499
519
  - spec/matchers/match_realpath.rb
500
520
  - spec/r10k-mocks.rb
@@ -502,6 +522,7 @@ files:
502
522
  - spec/r10k-mocks/mock_env.rb
503
523
  - spec/r10k-mocks/mock_source.rb
504
524
  - spec/shared-contexts/git-fixtures.rb
525
+ - spec/shared-contexts/tarball.rb
505
526
  - spec/shared-examples/deploy-actions.rb
506
527
  - spec/shared-examples/git-repository.rb
507
528
  - spec/shared-examples/git/bare_repository.rb
@@ -525,10 +546,13 @@ files:
525
546
  - spec/unit/cli_spec.rb
526
547
  - spec/unit/deployment/config_spec.rb
527
548
  - spec/unit/deployment_spec.rb
549
+ - spec/unit/environment/bare_spec.rb
528
550
  - spec/unit/environment/base_spec.rb
529
551
  - spec/unit/environment/git_spec.rb
530
552
  - spec/unit/environment/name_spec.rb
553
+ - spec/unit/environment/plain_spec.rb
531
554
  - spec/unit/environment/svn_spec.rb
555
+ - spec/unit/environment/tarball_spec.rb
532
556
  - spec/unit/environment/with_modules_spec.rb
533
557
  - spec/unit/errors/formatting_spec.rb
534
558
  - spec/unit/feature_spec.rb
@@ -550,6 +574,7 @@ files:
550
574
  - spec/unit/module/git_spec.rb
551
575
  - spec/unit/module/metadata_file_spec.rb
552
576
  - spec/unit/module/svn_spec.rb
577
+ - spec/unit/module/tarball_spec.rb
553
578
  - spec/unit/module_loader/puppetfile_spec.rb
554
579
  - spec/unit/module_spec.rb
555
580
  - spec/unit/puppetfile_spec.rb
@@ -571,8 +596,11 @@ files:
571
596
  - spec/unit/source_spec.rb
572
597
  - spec/unit/svn/remote_spec.rb
573
598
  - spec/unit/svn/working_dir_spec.rb
599
+ - spec/unit/tarball_spec.rb
574
600
  - spec/unit/util/attempt_spec.rb
601
+ - spec/unit/util/cacheable_spec.rb
575
602
  - spec/unit/util/commands_spec.rb
603
+ - spec/unit/util/downloader_spec.rb
576
604
  - spec/unit/util/exec_env_spec.rb
577
605
  - spec/unit/util/purgeable_spec.rb
578
606
  - spec/unit/util/setopts_spec.rb