diff --git a/spec/cc/engine/analyzers/javascript/main_spec.rb b/spec/cc/engine/analyzers/javascript/main_spec.rb index ecd3bafc..7e79c1c7 100644 --- a/spec/cc/engine/analyzers/javascript/main_spec.rb +++ b/spec/cc/engine/analyzers/javascript/main_spec.rb @@ -5,16 +5,8 @@ require 'flay' require 'tmpdir' -RSpec.describe CC::Engine::Analyzers::Javascript::Main do - around do |example| - Dir.mktmpdir do |directory| - @code = directory - - Dir.chdir(directory) do - example.run - end - end - end +RSpec.describe CC::Engine::Analyzers::Javascript::Main, in_tmpdir: true do + include AnalyzerSpecHelpers describe "#run" do it "prints an issue" do @@ -68,21 +60,6 @@ expect(issues.length).to eq 1 end - def create_source_file(path, content) - File.write(File.join(@code, path), content) - end - - def run_engine(config = nil) - io = StringIO.new - - engine = ::CC::Engine::Analyzers::Javascript::Main.new(engine_config: config) - reporter = ::CC::Engine::Analyzers::Reporter.new(double(concurrency: 2), engine, io) - - reporter.run - - io.string - end - def engine_conf CC::Engine::Analyzers::EngineConfig.new({ 'config' => { diff --git a/spec/cc/engine/analyzers/php/main_spec.rb b/spec/cc/engine/analyzers/php/main_spec.rb index 91b0e015..33e06340 100644 --- a/spec/cc/engine/analyzers/php/main_spec.rb +++ b/spec/cc/engine/analyzers/php/main_spec.rb @@ -5,16 +5,8 @@ require 'flay' require 'tmpdir' -RSpec.describe CC::Engine::Analyzers::Php::Main do - around do |example| - Dir.mktmpdir do |directory| - @code = directory - - Dir.chdir(directory) do - example.run - end - end - end +RSpec.describe CC::Engine::Analyzers::Php::Main, in_tmpdir: true do + include AnalyzerSpecHelpers describe "#run" do it "prints an issue" do @@ -58,21 +50,6 @@ end end - def create_source_file(path, content) - File.write(File.join(@code, path), content) - end - - def run_engine(config = nil) - io = StringIO.new - - engine = ::CC::Engine::Analyzers::Php::Main.new(engine_config: config) - reporter = ::CC::Engine::Analyzers::Reporter.new(double(concurrency: 2), engine, io) - - reporter.run - - io.string - end - def printed_issue 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}} issue.to_json + "\0\n" diff --git a/spec/cc/engine/analyzers/python/main_spec.rb b/spec/cc/engine/analyzers/python/main_spec.rb index a0f4366e..2919bf65 100644 --- a/spec/cc/engine/analyzers/python/main_spec.rb +++ b/spec/cc/engine/analyzers/python/main_spec.rb @@ -5,16 +5,8 @@ require "flay" require "tmpdir" -RSpec.describe CC::Engine::Analyzers::Python::Main do - around do |example| - Dir.mktmpdir do |directory| - @code = directory - - Dir.chdir(directory) do - example.run - end - end - end +RSpec.describe CC::Engine::Analyzers::Python::Main, in_tmpdir: true do + include AnalyzerSpecHelpers describe "#run" do it "prints an issue" do @@ -46,21 +38,6 @@ end end - def create_source_file(path, content) - File.write(File.join(@code, path), content) - end - - def run_engine(config = nil) - io = StringIO.new - - engine = ::CC::Engine::Analyzers::Python::Main.new(engine_config: config) - reporter = ::CC::Engine::Analyzers::Reporter.new(double(concurrency: 2), engine, io) - - reporter.run - - io.string - end - def engine_conf CC::Engine::Analyzers::EngineConfig.new({ "config" => { diff --git a/spec/cc/engine/analyzers/ruby/main_spec.rb b/spec/cc/engine/analyzers/ruby/main_spec.rb index b1099f49..4f6bfe60 100644 --- a/spec/cc/engine/analyzers/ruby/main_spec.rb +++ b/spec/cc/engine/analyzers/ruby/main_spec.rb @@ -4,16 +4,8 @@ require 'flay' require 'tmpdir' -RSpec.describe CC::Engine::Analyzers::Ruby::Main do - around do |example| - Dir.mktmpdir do |directory| - @code = directory - - Dir.chdir(directory) do - example.run - end - end - end +RSpec.describe CC::Engine::Analyzers::Ruby::Main, in_tmpdir: true do + include AnalyzerSpecHelpers describe "#run" do it "prints an issue" do @@ -35,7 +27,7 @@ end EORUBY - result = run_engine.strip + result = run_engine(engine_conf).strip json = JSON.parse(result) expect(json["type"]).to eq("issue") @@ -60,24 +52,12 @@ EORUBY expect { - expect(run_engine).to eq("") + expect(run_engine(engine_conf)).to eq("") }.to output(/Skipping file/).to_stderr end end - def create_source_file(path, content) - File.write(File.join(@code, path), content) - end - - def run_engine(config = {}) - io = StringIO.new - - config = CC::Engine::Analyzers::EngineConfig.new(config) - engine = ::CC::Engine::Analyzers::Ruby::Main.new(engine_config: config) - reporter = ::CC::Engine::Analyzers::Reporter.new(double(concurrency: 2), engine, io) - - reporter.run - - io.string + def engine_conf + CC::Engine::Analyzers::EngineConfig.new({}) end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index a090d825..17c03b37 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -12,6 +12,16 @@ mocks.verify_partial_doubles = true end + config.around(:example, :in_tmpdir) do |example| + Dir.mktmpdir do |directory| + @code = directory + + Dir.chdir(directory) do + example.run + end + end + end + config.order = :random config.disable_monkey_patching! end diff --git a/spec/support/helpers/analyzer_spec_helpers.rb b/spec/support/helpers/analyzer_spec_helpers.rb new file mode 100644 index 00000000..59d21d4b --- /dev/null +++ b/spec/support/helpers/analyzer_spec_helpers.rb @@ -0,0 +1,16 @@ +module AnalyzerSpecHelpers + def create_source_file(path, content) + File.write(File.join(@code, path), content) + end + + def run_engine(config = nil) + io = StringIO.new + + engine = described_class.new(engine_config: config) + reporter = ::CC::Engine::Analyzers::Reporter.new(double(concurrency: 2), engine, io) + + reporter.run + + io.string + end +end