cms_scanner 0.0.5 → 0.0.6
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -12
- data/.rubocop.yml +2 -0
- data/.travis.yml +2 -0
- data/app/views/cli/interesting_files/findings.erb +4 -2
- data/app/views/json/core/finished.erb +2 -2
- data/app/views/json/core/started.erb +2 -2
- data/app/views/json/interesting_files/findings.erb +25 -1
- data/cms_scanner.gemspec +1 -1
- data/lib/cms_scanner/finders/finding.rb +5 -0
- data/lib/cms_scanner/finders/findings.rb +6 -1
- data/lib/cms_scanner/finders/independent_finders.rb +1 -5
- data/lib/cms_scanner/version.rb +1 -1
- data/spec/app/views_spec.rb +5 -4
- data/spec/lib/cms_scanner_spec.rb +2 -2
- data/spec/lib/controllers_spec.rb +6 -8
- data/spec/lib/finders/independent_finders_spec.rb +63 -27
- data/spec/output/core/finished.cli_no_colour +2 -2
- data/spec/output/core/finished.json +1 -1
- data/spec/output/core/started.cli_no_colour +1 -1
- data/spec/output/interesting_files/empty.cli_no_colour +1 -0
- data/spec/output/interesting_files/empty.json +5 -0
- data/spec/output/interesting_files/findings.cli_no_colour +8 -4
- data/spec/output/interesting_files/findings.json +73 -1
- data/spec/shared_examples/finding.rb +10 -0
- data/spec/shared_examples/target/platform/php.rb +1 -2
- data/spec/shared_examples/target/platform/wordpress/custom_directories.rb +1 -2
- data/spec/shared_examples/views/core.rb +4 -3
- data/spec/shared_examples/views/interesting_files.rb +15 -3
- data/spec/spec_helper.rb +1 -0
- metadata +8 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4678e465b2b4eaf41a295ca51d5c8e19036cd608
|
4
|
+
data.tar.gz: 4791201f53009021294db6cb8ebbf8a502fe996a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa604fb6779740c7a82aa02d435b8281ed80bd422cf843660803d1eb12e5544c5b96686c5234d41aad53b61cdf101d4cded4c4731595ca1db9745b16fb78d312
|
7
|
+
data.tar.gz: 3fae9b03e48e97719cc01404a1cef60fc418b29137dd2cedf7892923a07ad243a69a3274b50758653f3ca676ad28d85fc69028d343a82145fa19b34b6053a519
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
@@ -2,15 +2,17 @@ Interesting Findings: <%= @findings.size %>
|
|
2
2
|
<% @findings.each do |finding| -%>
|
3
3
|
|
4
4
|
[+] <%= finding.url %>
|
5
|
+
<% if finding.confidence > 0 -%>
|
5
6
|
| Confidence: <%= finding.confidence %>%
|
7
|
+
<% end -%>
|
6
8
|
| Found By: <%= finding.found_by %>
|
7
9
|
<% unless (confirmed = finding.confirmed_by).empty? -%>
|
8
10
|
<% if confirmed.size == 1 -%>
|
9
|
-
| Confirmed By: <%= confirmed.first.found_by %>, <%= confirmed.first.confidence %>% confidence
|
11
|
+
| Confirmed By: <%= confirmed.first.found_by %><% if confirmed.first.confidence > 0 %>, <%= confirmed.first.confidence %>% confidence<% end %>
|
10
12
|
<% else -%>
|
11
13
|
| Confirmed By:
|
12
14
|
<% confirmed.each do |c| -%>
|
13
|
-
| - <%= c.found_by %>, <%= c.confidence %>% confidence
|
15
|
+
| - <%= c.found_by %><% if c.confidence > 0 %>, <%= c.confidence %>% confidence<% end %>
|
14
16
|
<% end -%>
|
15
17
|
<% end -%>
|
16
18
|
<% end -%>
|
@@ -1,3 +1,3 @@
|
|
1
1
|
"stop_time": <%= @stop_time.to_i %>,
|
2
|
-
"elapsed": <%= @elapsed %>,
|
3
|
-
"used_memory": <%= @used_memory %>,
|
2
|
+
"elapsed": <%= @elapsed.to_i %>,
|
3
|
+
"used_memory": <%= @used_memory.to_i %>,
|
@@ -1,3 +1,3 @@
|
|
1
1
|
"start_time": <%= @start_time.to_i %>,
|
2
|
-
"start_memory": <%= @start_memory %>,
|
3
|
-
"target_url":
|
2
|
+
"start_memory": <%= @start_memory.to_i %>,
|
3
|
+
"target_url": <%= @url.to_s.to_json %>,
|
@@ -1 +1,25 @@
|
|
1
|
-
"
|
1
|
+
"interesting_files": [
|
2
|
+
<% unless @findings.empty? -%>
|
3
|
+
{
|
4
|
+
<% last_index = @findings.size - 1 %>
|
5
|
+
<% @findings.each.with_index do |finding, index| -%>
|
6
|
+
<%= finding.url.to_s.to_json %>: {
|
7
|
+
"found_by": <%= finding.found_by.to_s.to_json %>,
|
8
|
+
"confidence": <%= finding.confidence.to_json %>,
|
9
|
+
"confirmed_by": [
|
10
|
+
<% unless (confirmed = finding.confirmed_by).empty? -%>
|
11
|
+
<% c_last_index = confirmed.size - 1 %>
|
12
|
+
{
|
13
|
+
<% confirmed.each.with_index do |c, i| -%>
|
14
|
+
<%= c.found_by.to_s.to_json %>: { "confidence": <%= c.confidence.to_json %> }<% unless i == c_last_index %>,<% end %>
|
15
|
+
<% end -%>
|
16
|
+
}
|
17
|
+
<% end -%>
|
18
|
+
],
|
19
|
+
"references": <%= finding.references.to_json %>,
|
20
|
+
"interesting_entries": <%= finding.interesting_entries.to_json %>
|
21
|
+
}<% unless index == last_index %>,<% end %>
|
22
|
+
<% end -%>
|
23
|
+
}
|
24
|
+
<% end -%>
|
25
|
+
],
|
data/cms_scanner.gemspec
CHANGED
@@ -31,7 +31,7 @@ Gem::Specification.new do |s|
|
|
31
31
|
s.add_development_dependency 'rspec', '~> 3.1'
|
32
32
|
s.add_development_dependency 'rspec-its'
|
33
33
|
s.add_development_dependency 'bundler', '~> 1.6'
|
34
|
-
s.add_development_dependency 'rubocop', '~> 0.
|
34
|
+
s.add_development_dependency 'rubocop', '~> 0.27'
|
35
35
|
s.add_development_dependency 'webmock', '>= 1.18'
|
36
36
|
s.add_development_dependency 'simplecov', '~> 0.9'
|
37
37
|
end
|
@@ -8,7 +8,12 @@ module CMSScanner
|
|
8
8
|
next unless found == other
|
9
9
|
|
10
10
|
found.confirmed_by << other
|
11
|
-
|
11
|
+
|
12
|
+
confidence = (found.confidence + other.confidence) / 1.5
|
13
|
+
confidence = 100 if confidence > 100 || other.confidence == 100
|
14
|
+
|
15
|
+
found.confidence = confidence.floor unless found.confidence == 100
|
16
|
+
|
12
17
|
return self
|
13
18
|
end
|
14
19
|
|
data/lib/cms_scanner/version.rb
CHANGED
data/spec/app/views_spec.rb
CHANGED
@@ -22,11 +22,12 @@ describe 'App::Views' do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
after do
|
25
|
-
view_filename
|
26
|
-
|
27
|
-
|
25
|
+
view_filename = defined?(expected_view) ? expected_view : view
|
26
|
+
view_filename = "#{view_filename}.#{formatter.to_s.underscore.downcase}"
|
27
|
+
controller_dir = controller.class.to_s.demodulize.underscore.downcase
|
28
|
+
expected_output = File.read(File.join(fixtures, controller_dir, view_filename))
|
28
29
|
|
29
|
-
expect($stdout).to receive(:puts).with(
|
30
|
+
expect($stdout).to receive(:puts).with(expected_output)
|
30
31
|
|
31
32
|
controller.output(view, @tpl_vars)
|
32
33
|
controller.formatter.beautify # Mandatory to be able to test formatter such as JSON
|
@@ -22,8 +22,8 @@ describe CMSScanner::Scan do
|
|
22
22
|
|
23
23
|
describe '#run' do
|
24
24
|
it 'runs the controlllers and calls the formatter#beautify' do
|
25
|
-
expect(scanner.controllers).to receive(:run)
|
26
|
-
expect(scanner.formatter).to receive(:beautify)
|
25
|
+
expect(scanner.controllers).to receive(:run).ordered
|
26
|
+
expect(scanner.formatter).to receive(:beautify).ordered
|
27
27
|
scanner.run
|
28
28
|
end
|
29
29
|
|
@@ -37,14 +37,12 @@ describe CMSScanner::Controllers do
|
|
37
37
|
spec = controller_mod::Spec.new
|
38
38
|
base = controller_mod::Base.new
|
39
39
|
|
40
|
-
controllers <<
|
41
|
-
|
42
|
-
|
43
|
-
[base, spec].each
|
44
|
-
|
45
|
-
|
46
|
-
expect(c).to receive(:after_scan)
|
47
|
-
end
|
40
|
+
controllers << base << spec
|
41
|
+
|
42
|
+
[base, spec].each { |c| expect(c).to receive(:before_scan).ordered }
|
43
|
+
[base, spec].each { |c| expect(c).to receive(:run).ordered }
|
44
|
+
[spec, base].each { |c| expect(c).to receive(:after_scan).ordered }
|
45
|
+
|
48
46
|
controllers.run
|
49
47
|
end
|
50
48
|
end
|
@@ -17,48 +17,84 @@ describe CMSScanner::Finders::IndependentFinders do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
before do
|
20
|
-
finders <<
|
21
|
-
|
20
|
+
finders <<
|
21
|
+
CMSScanner::Finders::DummyFinder.new(target) <<
|
22
|
+
CMSScanner::Finders::NoAggressiveResult.new(target)
|
23
|
+
end
|
22
24
|
|
23
|
-
|
25
|
+
describe 'method call orders' do
|
26
|
+
after { finders.run(mode: mode) }
|
24
27
|
|
25
|
-
|
28
|
+
[:passive, :aggressive].each do |current_mode|
|
29
|
+
context "when #{current_mode} mode" do
|
30
|
+
let(:mode) { current_mode }
|
26
31
|
|
27
|
-
|
28
|
-
|
32
|
+
it "calls the #{current_mode} method on each finder" do
|
33
|
+
finders.each { |f| expect(f).to receive(current_mode).ordered }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
29
37
|
|
30
|
-
|
31
|
-
|
38
|
+
context 'when :mixed mode' do
|
39
|
+
let(:mode) { :mixed }
|
32
40
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
41
|
+
it 'calls :passive then :aggressive on each finder' do
|
42
|
+
finders.each do |finder|
|
43
|
+
[:passive, :aggressive].each do |method|
|
44
|
+
expect(finder).to receive(method).ordered
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
37
48
|
end
|
38
49
|
end
|
39
50
|
|
40
|
-
|
41
|
-
|
51
|
+
describe 'returned results' do
|
52
|
+
before do
|
53
|
+
@found = finders.run(mode: mode)
|
42
54
|
|
43
|
-
|
44
|
-
|
45
|
-
|
55
|
+
expect(@found).to be_a(CMSScanner::Finders::Findings)
|
56
|
+
|
57
|
+
@found.each { |f| expect(f).to be_a finding }
|
46
58
|
end
|
47
|
-
end
|
48
59
|
|
49
|
-
|
50
|
-
|
60
|
+
context 'when :passive mode' do
|
61
|
+
let(:mode) { :passive }
|
51
62
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
63
|
+
it 'returns 2 results' do
|
64
|
+
expect(@found.size).to eq 2
|
65
|
+
expect(@found.first).to eql expected_passive.first
|
66
|
+
expect(@found.last).to eql expected_passive.last
|
67
|
+
end
|
57
68
|
end
|
58
|
-
end
|
59
69
|
|
60
|
-
|
70
|
+
context 'when :aggressive mode' do
|
71
|
+
let(:mode) { :aggressive }
|
61
72
|
|
73
|
+
it 'returns 1 result' do
|
74
|
+
expect(@found.size).to eq 1
|
75
|
+
expect(@found.first).to eql expected_aggressive
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
context 'when :mixed mode' do
|
80
|
+
let(:mode) { :mixed }
|
81
|
+
|
82
|
+
it 'returns 2 results' do
|
83
|
+
# As the first passive is confirmed by the expected_aggressive, the confidence
|
84
|
+
# increases and should be 100% due to the expected_aggressive.confidence
|
85
|
+
first_passive = expected_passive.first.dup
|
86
|
+
first_passive.confidence = 100
|
87
|
+
|
88
|
+
expect(@found.size).to eq 2
|
89
|
+
expect(@found.first).to eql first_passive
|
90
|
+
expect(@found.first.confirmed_by).to eql [expected_aggressive]
|
91
|
+
expect(@found.last).to eql expected_passive.last
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
context 'when multiple results returned' do
|
96
|
+
xit
|
97
|
+
end
|
62
98
|
end
|
63
99
|
end
|
64
100
|
|
@@ -0,0 +1 @@
|
|
1
|
+
Interesting Findings: 0
|
@@ -1,21 +1,21 @@
|
|
1
|
-
Interesting Findings:
|
1
|
+
Interesting Findings: 4
|
2
2
|
|
3
3
|
[+] F1
|
4
4
|
| Confidence: 10%
|
5
5
|
| Found By: Spec
|
6
6
|
|
7
7
|
[+] F2
|
8
|
-
| Confidence:
|
8
|
+
| Confidence: 13%
|
9
9
|
| Found By: Spec
|
10
10
|
| Confirmed By: Spec2, 10% confidence
|
11
11
|
| Reference: R1
|
12
12
|
| Interesting Entry: IE1
|
13
13
|
|
14
14
|
[+] F3
|
15
|
-
| Confidence:
|
15
|
+
| Confidence: 100%
|
16
16
|
| Found By: Spec
|
17
17
|
| Confirmed By:
|
18
|
-
| - Spec2,
|
18
|
+
| - Spec2, 100% confidence
|
19
19
|
| - Spec3, 10% confidence
|
20
20
|
| References:
|
21
21
|
| - R1
|
@@ -23,3 +23,7 @@ Interesting Findings: 3
|
|
23
23
|
| Interesting Entries:
|
24
24
|
| - IE1
|
25
25
|
| - IE2
|
26
|
+
|
27
|
+
[+] F4
|
28
|
+
| Found By: Spec
|
29
|
+
| Confirmed By: Spec2
|
@@ -1,3 +1,75 @@
|
|
1
1
|
{
|
2
|
-
"
|
2
|
+
"interesting_files": [
|
3
|
+
{
|
4
|
+
"F1": {
|
5
|
+
"found_by": "Spec",
|
6
|
+
"confidence": 10,
|
7
|
+
"confirmed_by": [
|
8
|
+
|
9
|
+
],
|
10
|
+
"references": [
|
11
|
+
|
12
|
+
],
|
13
|
+
"interesting_entries": [
|
14
|
+
|
15
|
+
]
|
16
|
+
},
|
17
|
+
"F2": {
|
18
|
+
"found_by": "Spec",
|
19
|
+
"confidence": 13,
|
20
|
+
"confirmed_by": [
|
21
|
+
{
|
22
|
+
"Spec2": {
|
23
|
+
"confidence": 10
|
24
|
+
}
|
25
|
+
}
|
26
|
+
],
|
27
|
+
"references": [
|
28
|
+
"R1"
|
29
|
+
],
|
30
|
+
"interesting_entries": [
|
31
|
+
"IE1"
|
32
|
+
]
|
33
|
+
},
|
34
|
+
"F3": {
|
35
|
+
"found_by": "Spec",
|
36
|
+
"confidence": 100,
|
37
|
+
"confirmed_by": [
|
38
|
+
{
|
39
|
+
"Spec2": {
|
40
|
+
"confidence": 100
|
41
|
+
},
|
42
|
+
"Spec3": {
|
43
|
+
"confidence": 10
|
44
|
+
}
|
45
|
+
}
|
46
|
+
],
|
47
|
+
"references": [
|
48
|
+
"R1",
|
49
|
+
"R2"
|
50
|
+
],
|
51
|
+
"interesting_entries": [
|
52
|
+
"IE1",
|
53
|
+
"IE2"
|
54
|
+
]
|
55
|
+
},
|
56
|
+
"F4": {
|
57
|
+
"found_by": "Spec",
|
58
|
+
"confidence": 0,
|
59
|
+
"confirmed_by": [
|
60
|
+
{
|
61
|
+
"Spec2": {
|
62
|
+
"confidence": 0
|
63
|
+
}
|
64
|
+
}
|
65
|
+
],
|
66
|
+
"references": [
|
67
|
+
|
68
|
+
],
|
69
|
+
"interesting_entries": [
|
70
|
+
|
71
|
+
]
|
72
|
+
}
|
73
|
+
}
|
74
|
+
]
|
3
75
|
}
|
@@ -13,6 +13,16 @@ shared_examples CMSScanner::Finders::Finding do
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
+
describe '#confidence' do
|
17
|
+
its(:confidence) { should eql 0 }
|
18
|
+
|
19
|
+
context 'when already set' do
|
20
|
+
before { subject.confidence = 10 }
|
21
|
+
|
22
|
+
its(:confidence) { should eql 10 }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
16
26
|
describe '#parse_finding_options' do
|
17
27
|
xit
|
18
28
|
end
|
@@ -33,8 +33,7 @@ shared_examples CMSScanner::Target::Platform::PHP do
|
|
33
33
|
context 'when the body matches a FPD' do
|
34
34
|
{
|
35
35
|
'wp_rss_functions.php' => %w(/short-path/rss-f.php)
|
36
|
-
}
|
37
|
-
.each do |file, expected|
|
36
|
+
}.each do |file, expected|
|
38
37
|
context "when #{file} body" do
|
39
38
|
let(:body) { File.read(File.join(fixtures, 'fpd', file)) }
|
40
39
|
|
@@ -5,8 +5,7 @@ shared_examples 'WordPress::CustomDirectories' do
|
|
5
5
|
describe '#content_dir' do
|
6
6
|
{
|
7
7
|
default: 'wp-content', https: 'wp-content', custom_w_spaces: 'custom content spaces'
|
8
|
-
}
|
9
|
-
.each do |file, expected|
|
8
|
+
}.each do |file, expected|
|
10
9
|
it "returns #{expected} for #{file}.html" do
|
11
10
|
fixture = File.join(fixtures, "#{file}.html")
|
12
11
|
|
@@ -2,7 +2,8 @@
|
|
2
2
|
shared_examples 'App::Views::Core' do
|
3
3
|
|
4
4
|
let(:controller) { CMSScanner::Controller::Core.new }
|
5
|
-
let(:
|
5
|
+
let(:start) { Time.at(1_414_670_521).in_time_zone('Europe/London') }
|
6
|
+
let(:tpl_vars) { { url: target_url, start_time: start } }
|
6
7
|
|
7
8
|
describe 'started' do
|
8
9
|
let(:view) { 'started' }
|
@@ -17,9 +18,9 @@ shared_examples 'App::Views::Core' do
|
|
17
18
|
|
18
19
|
it 'outputs the expected string' do
|
19
20
|
@tpl_vars = tpl_vars.merge(
|
20
|
-
stop_time: Time.
|
21
|
+
stop_time: Time.at(1_414_670_523).in_time_zone('Europe/London'),
|
21
22
|
used_memory: 100,
|
22
|
-
elapsed:
|
23
|
+
elapsed: 2
|
23
24
|
)
|
24
25
|
end
|
25
26
|
end
|
@@ -9,15 +9,27 @@ shared_examples 'App::Views::InterestingFiles' do
|
|
9
9
|
let(:view) { 'findings' }
|
10
10
|
let(:opts) { { confidence: 10, found_by: 'Spec' } }
|
11
11
|
|
12
|
+
context 'when empty results' do
|
13
|
+
let(:expected_view) { 'empty' }
|
14
|
+
|
15
|
+
it 'outputs the expected string' do
|
16
|
+
@tpl_vars = tpl_vars.merge(findings: [])
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
12
20
|
it 'outputs the expected string' do
|
13
|
-
findings = CMSScanner::Finders::Findings.new
|
21
|
+
findings = CMSScanner::Finders::Findings.new
|
22
|
+
|
23
|
+
findings <<
|
14
24
|
interesting_file.new('F1', opts) <<
|
15
25
|
interesting_file.new('F2', opts.merge(references: %w(R1), interesting_entries: %w(IE1))) <<
|
16
26
|
interesting_file.new('F2', opts.merge(found_by: 'Spec2')) <<
|
17
27
|
interesting_file.new('F3',
|
18
28
|
opts.merge(references: %w(R1 R2), interesting_entries: %w(IE1 IE2))) <<
|
19
|
-
interesting_file.new('F3', opts.merge(found_by: 'Spec2')) <<
|
20
|
-
interesting_file.new('F3', opts.merge(found_by: 'Spec3'))
|
29
|
+
interesting_file.new('F3', opts.merge(found_by: 'Spec2', confidence: 100)) <<
|
30
|
+
interesting_file.new('F3', opts.merge(found_by: 'Spec3')) <<
|
31
|
+
interesting_file.new('F4', opts.merge(confidence: 0)) <<
|
32
|
+
interesting_file.new('F4', opts.merge(confidence: 0, found_by: 'Spec2'))
|
21
33
|
|
22
34
|
@tpl_vars = tpl_vars.merge(findings: findings)
|
23
35
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cms_scanner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- WPScanTeam - Erwan le Rousseau
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opt_parse_validator
|
@@ -142,14 +142,14 @@ dependencies:
|
|
142
142
|
requirements:
|
143
143
|
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: '0.
|
145
|
+
version: '0.27'
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: '0.
|
152
|
+
version: '0.27'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: webmock
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -324,6 +324,8 @@ files:
|
|
324
324
|
- spec/output/core/finished.json
|
325
325
|
- spec/output/core/started.cli_no_colour
|
326
326
|
- spec/output/core/started.json
|
327
|
+
- spec/output/interesting_files/empty.cli_no_colour
|
328
|
+
- spec/output/interesting_files/empty.json
|
327
329
|
- spec/output/interesting_files/findings.cli_no_colour
|
328
330
|
- spec/output/interesting_files/findings.json
|
329
331
|
- spec/shared_examples.rb
|
@@ -433,6 +435,8 @@ test_files:
|
|
433
435
|
- spec/output/core/finished.json
|
434
436
|
- spec/output/core/started.cli_no_colour
|
435
437
|
- spec/output/core/started.json
|
438
|
+
- spec/output/interesting_files/empty.cli_no_colour
|
439
|
+
- spec/output/interesting_files/empty.json
|
436
440
|
- spec/output/interesting_files/findings.cli_no_colour
|
437
441
|
- spec/output/interesting_files/findings.json
|
438
442
|
- spec/shared_examples.rb
|