Skip to content

Commit 469bb78

Browse files
committed
Merge pull request #46 from codeclimate/will/dry-tests
DRY analyzer specs
2 parents 8c6f2b7 + e1d2760 commit 469bb78

File tree

6 files changed

+38
-101
lines changed

6 files changed

+38
-101
lines changed

spec/cc/engine/analyzers/javascript/main_spec.rb

+2-25
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,8 @@
55
require 'flay'
66
require 'tmpdir'
77

8-
RSpec.describe CC::Engine::Analyzers::Javascript::Main do
9-
around do |example|
10-
Dir.mktmpdir do |directory|
11-
@code = directory
12-
13-
Dir.chdir(directory) do
14-
example.run
15-
end
16-
end
17-
end
8+
RSpec.describe CC::Engine::Analyzers::Javascript::Main, in_tmpdir: true do
9+
include AnalyzerSpecHelpers
1810

1911
describe "#run" do
2012
it "prints an issue" do
@@ -68,21 +60,6 @@
6860
expect(issues.length).to eq 1
6961
end
7062

71-
def create_source_file(path, content)
72-
File.write(File.join(@code, path), content)
73-
end
74-
75-
def run_engine(config = nil)
76-
io = StringIO.new
77-
78-
engine = ::CC::Engine::Analyzers::Javascript::Main.new(engine_config: config)
79-
reporter = ::CC::Engine::Analyzers::Reporter.new(double(concurrency: 2), engine, io)
80-
81-
reporter.run
82-
83-
io.string
84-
end
85-
8663
def engine_conf
8764
CC::Engine::Analyzers::EngineConfig.new({
8865
'config' => {

spec/cc/engine/analyzers/php/main_spec.rb

+2-25
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,8 @@
55
require 'flay'
66
require 'tmpdir'
77

8-
RSpec.describe CC::Engine::Analyzers::Php::Main do
9-
around do |example|
10-
Dir.mktmpdir do |directory|
11-
@code = directory
12-
13-
Dir.chdir(directory) do
14-
example.run
15-
end
16-
end
17-
end
8+
RSpec.describe CC::Engine::Analyzers::Php::Main, in_tmpdir: true do
9+
include AnalyzerSpecHelpers
1810

1911
describe "#run" do
2012
it "prints an issue" do
@@ -58,21 +50,6 @@
5850
end
5951
end
6052

61-
def create_source_file(path, content)
62-
File.write(File.join(@code, path), content)
63-
end
64-
65-
def run_engine(config = nil)
66-
io = StringIO.new
67-
68-
engine = ::CC::Engine::Analyzers::Php::Main.new(engine_config: config)
69-
reporter = ::CC::Engine::Analyzers::Reporter.new(double(concurrency: 2), engine, io)
70-
71-
reporter.run
72-
73-
io.string
74-
end
75-
7653
def printed_issue
7754
issue = {"type":"issue","check_name":"Identical code","description":"Similar code found in 1 other location","categories":["Duplication"],"location":{"path":"foo.php","lines":{"begin":2,"end":6}},"remediation_points":176000,"other_locations":[{"path":"foo.php","lines":{"begin":10,"end":14}}],"content":{"body": read_up}}
7855
issue.to_json + "\0\n"

spec/cc/engine/analyzers/python/main_spec.rb

+2-25
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,8 @@
55
require "flay"
66
require "tmpdir"
77

8-
RSpec.describe CC::Engine::Analyzers::Python::Main do
9-
around do |example|
10-
Dir.mktmpdir do |directory|
11-
@code = directory
12-
13-
Dir.chdir(directory) do
14-
example.run
15-
end
16-
end
17-
end
8+
RSpec.describe CC::Engine::Analyzers::Python::Main, in_tmpdir: true do
9+
include AnalyzerSpecHelpers
1810

1911
describe "#run" do
2012
it "prints an issue" do
@@ -46,21 +38,6 @@
4638
end
4739
end
4840

49-
def create_source_file(path, content)
50-
File.write(File.join(@code, path), content)
51-
end
52-
53-
def run_engine(config = nil)
54-
io = StringIO.new
55-
56-
engine = ::CC::Engine::Analyzers::Python::Main.new(engine_config: config)
57-
reporter = ::CC::Engine::Analyzers::Reporter.new(double(concurrency: 2), engine, io)
58-
59-
reporter.run
60-
61-
io.string
62-
end
63-
6441
def engine_conf
6542
CC::Engine::Analyzers::EngineConfig.new({
6643
"config" => {

spec/cc/engine/analyzers/ruby/main_spec.rb

+6-26
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,8 @@
44
require 'flay'
55
require 'tmpdir'
66

7-
RSpec.describe CC::Engine::Analyzers::Ruby::Main do
8-
around do |example|
9-
Dir.mktmpdir do |directory|
10-
@code = directory
11-
12-
Dir.chdir(directory) do
13-
example.run
14-
end
15-
end
16-
end
7+
RSpec.describe CC::Engine::Analyzers::Ruby::Main, in_tmpdir: true do
8+
include AnalyzerSpecHelpers
179

1810
describe "#run" do
1911
it "prints an issue" do
@@ -35,7 +27,7 @@
3527
end
3628
EORUBY
3729

38-
result = run_engine.strip
30+
result = run_engine(engine_conf).strip
3931
json = JSON.parse(result)
4032

4133
expect(json["type"]).to eq("issue")
@@ -60,24 +52,12 @@
6052
EORUBY
6153

6254
expect {
63-
expect(run_engine).to eq("")
55+
expect(run_engine(engine_conf)).to eq("")
6456
}.to output(/Skipping file/).to_stderr
6557
end
6658
end
6759

68-
def create_source_file(path, content)
69-
File.write(File.join(@code, path), content)
70-
end
71-
72-
def run_engine(config = {})
73-
io = StringIO.new
74-
75-
config = CC::Engine::Analyzers::EngineConfig.new(config)
76-
engine = ::CC::Engine::Analyzers::Ruby::Main.new(engine_config: config)
77-
reporter = ::CC::Engine::Analyzers::Reporter.new(double(concurrency: 2), engine, io)
78-
79-
reporter.run
80-
81-
io.string
60+
def engine_conf
61+
CC::Engine::Analyzers::EngineConfig.new({})
8262
end
8363
end

spec/spec_helper.rb

+10
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,16 @@
1212
mocks.verify_partial_doubles = true
1313
end
1414

15+
config.around(:example, :in_tmpdir) do |example|
16+
Dir.mktmpdir do |directory|
17+
@code = directory
18+
19+
Dir.chdir(directory) do
20+
example.run
21+
end
22+
end
23+
end
24+
1525
config.order = :random
1626
config.disable_monkey_patching!
1727
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
module AnalyzerSpecHelpers
2+
def create_source_file(path, content)
3+
File.write(File.join(@code, path), content)
4+
end
5+
6+
def run_engine(config = nil)
7+
io = StringIO.new
8+
9+
engine = described_class.new(engine_config: config)
10+
reporter = ::CC::Engine::Analyzers::Reporter.new(double(concurrency: 2), engine, io)
11+
12+
reporter.run
13+
14+
io.string
15+
end
16+
end

0 commit comments

Comments
 (0)