inspec 0.12.0 → 0.14.0

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