Skip to content

Commit 97c9d1a

Browse files
committed
DRY analyzer specs
These pieces were repeated pretty much verbatim between the different analyzer specs. That seems especially silly since this is, after all, an engine for pointing out code duplication.
1 parent 8c6f2b7 commit 97c9d1a

File tree

4 files changed

+35
-73
lines changed

4 files changed

+35
-73
lines changed

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

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,7 @@
66
require 'tmpdir'
77

88
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
9+
include AnalyzerSpec
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/python/main_spec.rb

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,7 @@
66
require "tmpdir"
77

88
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
9+
include AnalyzerSpec
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

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,7 @@
55
require 'tmpdir'
66

77
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
8+
include AnalyzerSpec
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/support/analyzer_spec.rb

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
module AnalyzerSpec
2+
def self.included(base)
3+
base.around do |example|
4+
Dir.mktmpdir do |directory|
5+
@code = directory
6+
7+
Dir.chdir(directory) do
8+
example.run
9+
end
10+
end
11+
end
12+
end
13+
14+
def create_source_file(path, content)
15+
File.write(File.join(@code, path), content)
16+
end
17+
18+
def run_engine(config = nil)
19+
io = StringIO.new
20+
21+
engine = described_class.new(engine_config: config)
22+
reporter = ::CC::Engine::Analyzers::Reporter.new(double(concurrency: 2), engine, io)
23+
24+
reporter.run
25+
26+
io.string
27+
end
28+
end

0 commit comments

Comments
 (0)