inspec 0.12.0 → 0.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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +39 -2
  3. data/bin/inspec +11 -9
  4. data/docs/matchers.rst +129 -0
  5. data/docs/resources.rst +64 -37
  6. data/inspec.gemspec +1 -1
  7. data/lib/bundles/inspec-compliance/cli.rb +1 -1
  8. data/lib/bundles/inspec-compliance/configuration.rb +1 -0
  9. data/lib/bundles/inspec-compliance/target.rb +16 -32
  10. data/lib/bundles/inspec-init/cli.rb +2 -0
  11. data/lib/bundles/inspec-supermarket.rb +13 -0
  12. data/lib/bundles/inspec-supermarket/api.rb +2 -0
  13. data/lib/bundles/inspec-supermarket/cli.rb +2 -2
  14. data/lib/bundles/inspec-supermarket/target.rb +11 -15
  15. data/lib/fetchers/local.rb +31 -0
  16. data/lib/fetchers/tar.rb +48 -0
  17. data/lib/fetchers/url.rb +100 -0
  18. data/lib/fetchers/zip.rb +47 -0
  19. data/lib/inspec.rb +2 -3
  20. data/lib/inspec/fetcher.rb +22 -0
  21. data/lib/inspec/metadata.rb +4 -2
  22. data/lib/inspec/plugins.rb +2 -0
  23. data/lib/inspec/plugins/fetcher.rb +97 -0
  24. data/lib/inspec/plugins/source_reader.rb +36 -0
  25. data/lib/inspec/profile.rb +92 -81
  26. data/lib/inspec/resource.rb +1 -0
  27. data/lib/inspec/runner.rb +15 -35
  28. data/lib/inspec/source_reader.rb +32 -0
  29. data/lib/inspec/version.rb +1 -1
  30. data/lib/matchers/matchers.rb +5 -6
  31. data/lib/resources/file.rb +8 -2
  32. data/lib/resources/passwd.rb +71 -45
  33. data/lib/resources/service.rb +13 -9
  34. data/lib/resources/shadow.rb +135 -0
  35. data/lib/source_readers/flat.rb +38 -0
  36. data/lib/source_readers/inspec.rb +78 -0
  37. data/lib/utils/base_cli.rb +2 -2
  38. data/lib/utils/parser.rb +1 -1
  39. data/lib/utils/plugin_registry.rb +93 -0
  40. data/test/docker_test.rb +1 -1
  41. data/test/helper.rb +62 -2
  42. data/test/integration/cookbooks/os_prepare/recipes/service.rb +4 -2
  43. data/test/integration/test/integration/default/compare_matcher_spec.rb +11 -0
  44. data/test/integration/test/integration/default/service_spec.rb +16 -1
  45. data/test/unit/fetchers.rb +61 -0
  46. data/test/unit/fetchers/local_test.rb +67 -0
  47. data/test/unit/fetchers/tar_test.rb +36 -0
  48. data/test/unit/fetchers/url_test.rb +152 -0
  49. data/test/unit/fetchers/zip_test.rb +36 -0
  50. data/test/unit/mock/files/passwd +1 -1
  51. data/test/unit/mock/files/shadow +2 -0
  52. data/test/unit/mock/profiles/complete-profile/libraries/testlib.rb +1 -0
  53. data/test/unit/plugin_test.rb +0 -1
  54. data/test/unit/profile_test.rb +32 -53
  55. data/test/unit/resources/passwd_test.rb +69 -14
  56. data/test/unit/resources/shadow_test.rb +67 -0
  57. data/test/unit/source_reader_test.rb +17 -0
  58. data/test/unit/source_readers/flat_test.rb +61 -0
  59. data/test/unit/source_readers/inspec_test.rb +38 -0
  60. data/test/unit/utils/passwd_parser_test.rb +1 -1
  61. metadata +40 -21
  62. data/lib/inspec/targets.rb +0 -10
  63. data/lib/inspec/targets/archive.rb +0 -33
  64. data/lib/inspec/targets/core.rb +0 -56
  65. data/lib/inspec/targets/dir.rb +0 -144
  66. data/lib/inspec/targets/file.rb +0 -33
  67. data/lib/inspec/targets/folder.rb +0 -38
  68. data/lib/inspec/targets/tar.rb +0 -61
  69. data/lib/inspec/targets/url.rb +0 -78
  70. data/lib/inspec/targets/zip.rb +0 -55
  71. data/test/unit/targets.rb +0 -132
@@ -6,19 +6,74 @@ require 'helper'
6
6
  require 'inspec/resource'
7
7
 
8
8
  describe 'Inspec::Resources::Passwd' do
9
- it 'verify passwd parsing' do
10
- resource = load_resource('passwd')
11
- _(resource.usernames).must_equal %w{root www-data}
12
- _(resource.uids).must_equal %w{0 33}
13
-
14
- # verify root passwd resource
15
- root = resource.uid(0)
16
- _(root.username).must_equal 'root'
17
- _(root.count).must_equal 1
18
-
19
- # verify www-data resource
20
- www = resource.uid(33)
21
- _(www.username).must_equal 'www-data'
22
- _(www.count).must_equal 1
9
+ let(:passwd) { load_resource('passwd') }
10
+ it 'retrieve users via field' do
11
+ _(passwd.users).must_equal %w{root www-data}
12
+ end
13
+
14
+ it 'retrieve uids via field' do
15
+ _(passwd.uids).must_equal %w{0 33}
16
+ end
17
+
18
+ it 'retrieve gids via field' do
19
+ _(passwd.gids).must_equal %w{0 133}
20
+ end
21
+
22
+ it 'retrieve passwords via field' do
23
+ _(passwd.passwords).must_equal %w{x x}
24
+ end
25
+
26
+ it 'retrieve login-shells via field' do
27
+ _(passwd.shells).must_equal %w{/bin/bash /bin/sh}
28
+ end
29
+
30
+ it 'access all lines of the file' do
31
+ _(passwd.lines).must_equal %w{root:x:0:0:root:/root:/bin/bash www-data:x:33:133:www-data:/var/www:/bin/sh}
32
+ end
33
+
34
+ it 'access all params of the file' do
35
+ _(passwd.params[1]).must_equal({"user"=>"www-data", "password"=>"x", "uid"=>"33", "gid"=>"133", "desc"=>"www-data", "home"=>"/var/www", "shell"=>"/bin/sh"})
36
+ end
37
+
38
+ describe 'filter by uid == 0' do
39
+ let(:child) { passwd.uids(0) }
40
+ it 'creates a new passwd instance' do
41
+ _(child.content).must_equal 'root:x:0:0:root:/root:/bin/bash'
42
+ end
43
+
44
+ it 'prints a nice to_s string' do
45
+ _(child.to_s).must_equal '/etc/passwd with uid = "0"'
46
+ end
47
+
48
+ it 'retrieves singular elements instead of arrays when filter has only one entry' do
49
+ _(child.users).must_equal ['root']
50
+ _(child.count).must_equal 1
51
+ end
52
+ end
53
+
54
+ describe 'filter via name =~ /^www/' do
55
+ let(:child) { passwd.users(/^www/) }
56
+ it 'filters by user via name (regex)' do
57
+ _(child.users).must_equal ['www-data']
58
+ _(child.count).must_equal 1
59
+ end
60
+
61
+ it 'prints a nice to_s string' do
62
+ _(child.to_s).must_equal '/etc/passwd with user = /^www/'
63
+ end
64
+ end
65
+
66
+ describe 'deprecated calls' do
67
+ it 'retrieves a username via uid' do
68
+ _(passwd.uid(0).username).must_equal 'root'
69
+ end
70
+
71
+ it 'retrieves a usercount via uid' do
72
+ _(passwd.uid(0).count).must_equal 1
73
+ end
74
+
75
+ it 'retrieves usernames' do
76
+ _(passwd.usernames).must_equal ['root', 'www-data']
77
+ end
23
78
  end
24
79
  end
@@ -0,0 +1,67 @@
1
+ # encoding: utf-8
2
+ # author: Dominik Richter
3
+ # author: Christoph Hartmann
4
+
5
+ require 'helper'
6
+ require 'inspec/resource'
7
+
8
+ describe 'Inspec::Resources::Shadow' do
9
+ let(:shadow) { load_resource('shadow') }
10
+
11
+ it 'retrieve users via field' do
12
+ _(shadow.users).must_equal %w{root www-data}
13
+ end
14
+
15
+ it 'retrieve passwords via field' do
16
+ _(shadow.passwords).must_equal %w{x !!}
17
+ end
18
+
19
+ it 'retrieve last password change via field' do
20
+ _(shadow.last_changes).must_equal %w{1 10}
21
+ end
22
+
23
+ it 'retrieve min password days via field' do
24
+ _(shadow.min_days).must_equal %w{2 20}
25
+ end
26
+
27
+ it 'retrieve max password days via field' do
28
+ _(shadow.max_days).must_equal %w{3 30}
29
+ end
30
+
31
+ it 'retrieve warning days for password expiry via field' do
32
+ _(shadow.warn_days).must_equal [nil, "40"]
33
+ end
34
+
35
+ it 'retrieve days before account is inactive via field' do
36
+ _(shadow.inactive_days).must_equal [nil, "50"]
37
+ end
38
+
39
+ it 'retrieve dates when account will expire via field' do
40
+ _(shadow.expiry_dates).must_equal [nil, "60"]
41
+ end
42
+
43
+ it 'access all lines of the file' do
44
+ _(shadow.lines[0]).must_equal 'root:x:1:2:3::::'
45
+ end
46
+
47
+ it 'access all params of the file' do
48
+ _(shadow.params[0]).must_equal({
49
+ 'user' => 'root', 'password' => 'x', 'last_change' => '1',
50
+ 'min_days' => '2', 'max_days' => '3', 'warn_days' => nil,
51
+ 'inactive_days' => nil, 'expiry_date' => nil, 'reserved' => nil,
52
+ })
53
+ end
54
+
55
+ describe 'filter via name =~ /^www/' do
56
+ let(:child) { shadow.users(/^www/) }
57
+
58
+ it 'filters by user via name (regex)' do
59
+ _(child.users).must_equal ['www-data']
60
+ _(child.count).must_equal 1
61
+ end
62
+
63
+ it 'prints a nice to_s string' do
64
+ _(child.to_s).must_equal '/etc/shadow with user = /^www/'
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+ # author: Dominik Richter
3
+ # author: Christoph Hartmann
4
+
5
+ require 'helper'
6
+
7
+ describe Inspec::SourceReader do
8
+ let(:reg) { Inspec::SourceReader }
9
+
10
+ it 'resolves nil-targets to nil' do
11
+ _(reg.resolve(nil)).must_be_nil
12
+ end
13
+
14
+ it 'only supports Fetchers' do
15
+ proc { reg.resolve("not supported") }.must_raise StandardError
16
+ end
17
+ end
@@ -0,0 +1,61 @@
1
+ # encoding: utf-8
2
+ # author: Dominik Richter
3
+ # author: Christoph Hartmann
4
+
5
+ require 'helper'
6
+
7
+ describe SourceReaders::Flat do
8
+ let(:reader) { SourceReaders::Flat }
9
+
10
+ it 'registers with the source readers registry' do
11
+ reg = Inspec::SourceReader.registry
12
+ _(reg['flat']).must_equal reader
13
+ end
14
+
15
+ describe 'with a flat file' do
16
+ let(:target) { Inspec::Fetcher.resolve(__FILE__) }
17
+ let(:res) { Inspec::SourceReader.resolve(target.relative_target) }
18
+
19
+ it 'resolves the target' do
20
+ _(res).must_be_kind_of reader
21
+ end
22
+
23
+ it 'has no metadata' do
24
+ _(res.metadata.params).must_equal({})
25
+ end
26
+
27
+ it 'retrieves all files' do
28
+ _(res.tests.keys).must_equal [File.basename(__FILE__)]
29
+ _(res.tests.values[0]).must_equal File.read(__FILE__)
30
+ end
31
+
32
+ it 'has no libraries' do
33
+ _(res.libraries).must_be_empty
34
+ end
35
+ end
36
+
37
+ describe 'with a flat folder' do
38
+ let(:target) { Inspec::Fetcher.resolve(File.dirname(__FILE__)) }
39
+ let(:res) { Inspec::SourceReader.resolve(target.relative_target) }
40
+
41
+ it 'resolves the target' do
42
+ _(res).must_be_kind_of reader
43
+ end
44
+
45
+ it 'has no metadata' do
46
+ _(res.metadata.params).must_equal({})
47
+ end
48
+
49
+ it 'retrieves all files' do
50
+ dir = File.dirname(__FILE__)
51
+ full_files = Dir[File.join(dir, '**')]
52
+ files = full_files.map { |x| x.sub(dir+'/', '') }
53
+ _(res.tests.keys).must_equal files
54
+ _(res.tests.values[0]).must_equal File.read(full_files[0])
55
+ end
56
+
57
+ it 'has no libraries' do
58
+ _(res.libraries).must_be_empty
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,38 @@
1
+ # encoding: utf-8
2
+ # author: Dominik Richter
3
+ # author: Christoph Hartmann
4
+
5
+ require 'helper'
6
+
7
+ describe SourceReaders::InspecReader do
8
+ let(:reader) { SourceReaders::InspecReader }
9
+
10
+ it 'registers with the source readers registry' do
11
+ reg = Inspec::SourceReader.registry
12
+ _(reg['inspec']).must_equal reader
13
+ end
14
+
15
+ describe 'with a valid profile' do
16
+ let(:mock_file) { mock_file = MockLoader.profile_tgz('complete-profile') }
17
+ let(:target) { Inspec::Fetcher.resolve(mock_file) }
18
+ let(:res) { Inspec::SourceReader.resolve(target) }
19
+
20
+ it 'resolves the target to inspec' do
21
+ _(res).must_be_kind_of reader
22
+ end
23
+
24
+ it 'retrieves metadata' do
25
+ _(res.metadata.params[:name]).must_equal 'complete'
26
+ end
27
+
28
+ it 'retrieves all files' do
29
+ _(res.tests.keys).must_equal %w{controls/filesystem_spec.rb}
30
+ _(res.tests.values[0]).must_match /^control 'test01' do$/
31
+ end
32
+
33
+ it 'retrieves all libraries' do
34
+ _(res.libraries.keys).must_equal %w{libraries/testlib.rb}
35
+ _(res.libraries.values[0]).must_match /^# Library resource$/
36
+ end
37
+ end
38
+ end
@@ -18,7 +18,7 @@ describe PasswdParser do
18
18
 
19
19
  it 'parses a valid passwd line' do
20
20
  info = [{
21
- "name"=>"root",
21
+ "user"=>"root",
22
22
  "password"=>"x",
23
23
  "uid"=>"0",
24
24
  "gid"=>"0",
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dominik Richter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-15 00:00:00.000000000 Z
11
+ date: 2016-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: r-train
@@ -16,20 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.9'
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 0.9.6
19
+ version: '0.10'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: '0.9'
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: 0.9.6
26
+ version: '0.10'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: thor
35
29
  requirement: !ruby/object:Gem::Requirement
@@ -180,6 +174,7 @@ files:
180
174
  - docs/dsl_inspec.rst
181
175
  - docs/dsl_resource.rst
182
176
  - docs/inspec_and_friends.rst
177
+ - docs/matchers.rst
183
178
  - docs/profiles.rst
184
179
  - docs/readme.rst
185
180
  - docs/resources.rst
@@ -229,20 +224,28 @@ files:
229
224
  - lib/bundles/inspec-init/templates/profile/controls/example.rb
230
225
  - lib/bundles/inspec-init/templates/profile/inspec.yml
231
226
  - lib/bundles/inspec-init/templates/profile/libraries/.gitkeep
227
+ - lib/bundles/inspec-supermarket.rb
232
228
  - lib/bundles/inspec-supermarket/README.md
233
229
  - lib/bundles/inspec-supermarket/api.rb
234
230
  - lib/bundles/inspec-supermarket/cli.rb
235
231
  - lib/bundles/inspec-supermarket/target.rb
232
+ - lib/fetchers/local.rb
233
+ - lib/fetchers/tar.rb
234
+ - lib/fetchers/url.rb
235
+ - lib/fetchers/zip.rb
236
236
  - lib/inspec.rb
237
237
  - lib/inspec/archive/tar.rb
238
238
  - lib/inspec/archive/zip.rb
239
239
  - lib/inspec/backend.rb
240
240
  - lib/inspec/dsl.rb
241
+ - lib/inspec/fetcher.rb
241
242
  - lib/inspec/log.rb
242
243
  - lib/inspec/metadata.rb
243
244
  - lib/inspec/plugins.rb
244
245
  - lib/inspec/plugins/cli.rb
246
+ - lib/inspec/plugins/fetcher.rb
245
247
  - lib/inspec/plugins/resource.rb
248
+ - lib/inspec/plugins/source_reader.rb
246
249
  - lib/inspec/profile.rb
247
250
  - lib/inspec/profile_context.rb
248
251
  - lib/inspec/resource.rb
@@ -252,15 +255,7 @@ files:
252
255
  - lib/inspec/runner_mock.rb
253
256
  - lib/inspec/runner_rspec.rb
254
257
  - lib/inspec/shell.rb
255
- - lib/inspec/targets.rb
256
- - lib/inspec/targets/archive.rb
257
- - lib/inspec/targets/core.rb
258
- - lib/inspec/targets/dir.rb
259
- - lib/inspec/targets/file.rb
260
- - lib/inspec/targets/folder.rb
261
- - lib/inspec/targets/tar.rb
262
- - lib/inspec/targets/url.rb
263
- - lib/inspec/targets/zip.rb
258
+ - lib/inspec/source_reader.rb
264
259
  - lib/inspec/version.rb
265
260
  - lib/matchers/matchers.rb
266
261
  - lib/resources/apache.rb
@@ -310,11 +305,14 @@ files:
310
305
  - lib/resources/script.rb
311
306
  - lib/resources/security_policy.rb
312
307
  - lib/resources/service.rb
308
+ - lib/resources/shadow.rb
313
309
  - lib/resources/ssh_conf.rb
314
310
  - lib/resources/user.rb
315
311
  - lib/resources/windows_feature.rb
316
312
  - lib/resources/yaml.rb
317
313
  - lib/resources/yum.rb
314
+ - lib/source_readers/flat.rb
315
+ - lib/source_readers/inspec.rb
318
316
  - lib/utils/base_cli.rb
319
317
  - lib/utils/convert.rb
320
318
  - lib/utils/detect.rb
@@ -324,6 +322,7 @@ files:
324
322
  - lib/utils/json_log.rb
325
323
  - lib/utils/modulator.rb
326
324
  - lib/utils/parser.rb
325
+ - lib/utils/plugin_registry.rb
327
326
  - lib/utils/simpleconfig.rb
328
327
  - tasks/maintainers.rb
329
328
  - test/docker_run.rb
@@ -384,6 +383,11 @@ files:
384
383
  - test/resource/sshd_config.rb
385
384
  - test/test-extra.yaml
386
385
  - test/test.yaml
386
+ - test/unit/fetchers.rb
387
+ - test/unit/fetchers/local_test.rb
388
+ - test/unit/fetchers/tar_test.rb
389
+ - test/unit/fetchers/url_test.rb
390
+ - test/unit/fetchers/zip_test.rb
387
391
  - test/unit/metadata_test.rb
388
392
  - test/unit/mock/cmd/$env-PATH
389
393
  - test/unit/mock/cmd/Get-NetAdapter
@@ -468,11 +472,13 @@ files:
468
472
  - test/unit/mock/files/ports.conf
469
473
  - test/unit/mock/files/rootwrap.conf
470
474
  - test/unit/mock/files/serve-cgi-bin.conf
475
+ - test/unit/mock/files/shadow
471
476
  - test/unit/mock/files/ssh_config
472
477
  - test/unit/mock/files/sshd_config
473
478
  - test/unit/mock/profiles/complete-metadata/inspec.yml
474
479
  - test/unit/mock/profiles/complete-profile/controls/filesystem_spec.rb
475
480
  - test/unit/mock/profiles/complete-profile/inspec.yml
481
+ - test/unit/mock/profiles/complete-profile/libraries/testlib.rb
476
482
  - test/unit/mock/profiles/empty-metadata/inspec.yml
477
483
  - test/unit/mock/profiles/legacy-complete-metadata/metadata.rb
478
484
  - test/unit/mock/profiles/legacy-complete-metadata/test/.gitkeep
@@ -523,12 +529,15 @@ files:
523
529
  - test/unit/resources/script_test.rb
524
530
  - test/unit/resources/security_policy_test.rb
525
531
  - test/unit/resources/service_test.rb
532
+ - test/unit/resources/shadow_test.rb
526
533
  - test/unit/resources/ssh_conf_test.rb
527
534
  - test/unit/resources/user_test.rb
528
535
  - test/unit/resources/windows_feature.rb
529
536
  - test/unit/resources/yaml_test.rb
530
537
  - test/unit/resources/yum_test.rb
531
- - test/unit/targets.rb
538
+ - test/unit/source_reader_test.rb
539
+ - test/unit/source_readers/flat_test.rb
540
+ - test/unit/source_readers/inspec_test.rb
532
541
  - test/unit/utils/filter_array_test.rb
533
542
  - test/unit/utils/find_files_test.rb
534
543
  - test/unit/utils/passwd_parser_test.rb
@@ -617,6 +626,11 @@ test_files:
617
626
  - test/resource/sshd_config.rb
618
627
  - test/test-extra.yaml
619
628
  - test/test.yaml
629
+ - test/unit/fetchers.rb
630
+ - test/unit/fetchers/local_test.rb
631
+ - test/unit/fetchers/tar_test.rb
632
+ - test/unit/fetchers/url_test.rb
633
+ - test/unit/fetchers/zip_test.rb
620
634
  - test/unit/metadata_test.rb
621
635
  - test/unit/mock/cmd/$env-PATH
622
636
  - test/unit/mock/cmd/Get-NetAdapter
@@ -701,11 +715,13 @@ test_files:
701
715
  - test/unit/mock/files/ports.conf
702
716
  - test/unit/mock/files/rootwrap.conf
703
717
  - test/unit/mock/files/serve-cgi-bin.conf
718
+ - test/unit/mock/files/shadow
704
719
  - test/unit/mock/files/ssh_config
705
720
  - test/unit/mock/files/sshd_config
706
721
  - test/unit/mock/profiles/complete-metadata/inspec.yml
707
722
  - test/unit/mock/profiles/complete-profile/controls/filesystem_spec.rb
708
723
  - test/unit/mock/profiles/complete-profile/inspec.yml
724
+ - test/unit/mock/profiles/complete-profile/libraries/testlib.rb
709
725
  - test/unit/mock/profiles/empty-metadata/inspec.yml
710
726
  - test/unit/mock/profiles/legacy-complete-metadata/metadata.rb
711
727
  - test/unit/mock/profiles/legacy-complete-metadata/test/.gitkeep
@@ -756,12 +772,15 @@ test_files:
756
772
  - test/unit/resources/script_test.rb
757
773
  - test/unit/resources/security_policy_test.rb
758
774
  - test/unit/resources/service_test.rb
775
+ - test/unit/resources/shadow_test.rb
759
776
  - test/unit/resources/ssh_conf_test.rb
760
777
  - test/unit/resources/user_test.rb
761
778
  - test/unit/resources/windows_feature.rb
762
779
  - test/unit/resources/yaml_test.rb
763
780
  - test/unit/resources/yum_test.rb
764
- - test/unit/targets.rb
781
+ - test/unit/source_reader_test.rb
782
+ - test/unit/source_readers/flat_test.rb
783
+ - test/unit/source_readers/inspec_test.rb
765
784
  - test/unit/utils/filter_array_test.rb
766
785
  - test/unit/utils/find_files_test.rb
767
786
  - test/unit/utils/passwd_parser_test.rb