summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authormo khan <mo.khan@gmail.com>2020-09-16 12:16:56 -0600
committermo khan <mo.khan@gmail.com>2020-09-16 12:16:56 -0600
commit47b673882a84d7683a07b4e366132a80a3ff1313 (patch)
tree729efa8b9db3b764c45198ba229684fe202bff0e /spec
parent7a6199f2ea4adc239d5bf791e07dd5d93c9744c6 (diff)
refactor: Extract shared test context
Diffstat (limited to 'spec')
-rw-r--r--spec/spec_helper.rb3
-rw-r--r--spec/spotbugs_spec.rb30
-rw-r--r--spec/support/docker_helper.rb6
3 files changed, 22 insertions, 17 deletions
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 19f2cdb..7d513b4 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -15,8 +15,7 @@
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
$LOAD_PATH.unshift(Pathname.pwd.join('lib'))
require 'e2e'
-require 'support/docker_helper'
-require 'support/fixture_file_helper'
+Dir["./spec/support/**/*.rb"].sort.each { |f| require f }
RSpec.configure do |config|
# rspec-expectations config goes here. You can use an alternate
diff --git a/spec/spotbugs_spec.rb b/spec/spotbugs_spec.rb
index 6f493d9..4bad4ff 100644
--- a/spec/spotbugs_spec.rb
+++ b/spec/spotbugs_spec.rb
@@ -1,20 +1,26 @@
-RSpec.describe 'spotbugs' do
- subject do
- docker.run(image: "#{self.class.description}:latest", project_path: project.path)
- JSON.parse(project.path.join('gl-sast-report.json').read)
- end
+RSpec.shared_context 'a scanner' do
+ subject { project.report_for(type: report_type) }
- let(:docker) { Docker.new(pwd: Pathname.pwd.join("src/#{self.class.description}")) }
+ let(:docker) { Docker.new(pwd: Pathname.pwd.join("src/#{scanner}")) }
+ let(:docker_image) { "#{scanner}:latest" }
+ let(:scanner) { self.class.description }
let(:project) { Project.new }
+ let(:report_type) { raise 'report_type not specified' }
- around(:each) do |example|
- project.mount(dir: fixture_file('java/maven/custom-tls'))
+ around :example do |example|
+ project.mount(dir: fixture_file(project_fixture))
+ docker.run(image: docker_image, project_path: project.path)
example.run
project.cleanup
end
+end
- specify do
- expect(subject).not_to be_nil
- expect(subject['version']).to eql('3.0')
- end
+RSpec.describe 'spotbugs' do
+ include_context 'a scanner'
+
+ let(:project_fixture) { 'java/maven/custom-tls' }
+ let(:report_type) { :sast }
+
+ specify { expect(subject).not_to be_nil }
+ specify { expect(subject['version']).to eql('3.0') }
end
diff --git a/spec/support/docker_helper.rb b/spec/support/docker_helper.rb
index 76c9195..4df1e6e 100644
--- a/spec/support/docker_helper.rb
+++ b/spec/support/docker_helper.rb
@@ -3,9 +3,9 @@ RSpec.configure do |config|
Pathname.pwd.join('src').each_child do |file|
next unless file.directory?
- docker = Docker.new(pwd: file)
- docker_image = "#{file.basename.to_s}:latest"
- docker.build(tag: docker_image)
+ Docker
+ .new(pwd: file)
+ .build(tag: "#{file.basename}:latest")
end
end
end