diff --git a/lib/rspec/openapi.rb b/lib/rspec/openapi.rb index a6c4a9c6..c91b054e 100644 --- a/lib/rspec/openapi.rb +++ b/lib/rspec/openapi.rb @@ -10,10 +10,8 @@ require 'rspec/openapi/schema_merger' require 'rspec/openapi/schema_cleaner' -if ENV['OPENAPI'] - require 'rspec/openapi/minitest_hooks' - require 'rspec/openapi/rspec_hooks' -end +require 'rspec/openapi/minitest_hooks' if Object.const_defined?('Minitest') +require 'rspec/openapi/rspec_hooks' if ENV['OPENAPI'] && Object.const_defined?('RSpec') module RSpec::OpenAPI @path = 'doc/openapi.yaml' diff --git a/lib/rspec/openapi/minitest_hooks.rb b/lib/rspec/openapi/minitest_hooks.rb index 30ce3aa0..73dda985 100644 --- a/lib/rspec/openapi/minitest_hooks.rb +++ b/lib/rspec/openapi/minitest_hooks.rb @@ -5,11 +5,7 @@ module RSpec::OpenAPI::Minitest Example = Struct.new(:context, :description, :metadata, :file_path) - module TestPatch - def self.prepended(base) - base.extend(ClassMethods) - end - + module RunPatch def run(*args) result = super if ENV['OPENAPI'] && self.class.openapi? @@ -22,6 +18,12 @@ def run(*args) end result end + end + + module ActivateOpenApiClassMethods + def self.prepended(base) + base.extend(ClassMethods) + end module ClassMethods def openapi? @@ -35,10 +37,12 @@ def openapi! end end -Minitest::Test.prepend RSpec::OpenAPI::Minitest::TestPatch +Minitest::Test.prepend RSpec::OpenAPI::Minitest::ActivateOpenApiClassMethods + +if ENV['OPENAPI'] + Minitest::Test.prepend RSpec::OpenAPI::Minitest::RunPatch -Minitest.after_run do - if ENV['OPENAPI'] + Minitest.after_run do result_recorder = RSpec::OpenAPI::ResultRecorder.new(RSpec::OpenAPI.path_records) result_recorder.record_results! puts result_record.error_message if result_recorder.errors? diff --git a/spec/integration_tests/rails_test.rb b/spec/integration_tests/rails_test.rb index 4fb48930..64d97a6a 100644 --- a/spec/integration_tests/rails_test.rb +++ b/spec/integration_tests/rails_test.rb @@ -4,9 +4,8 @@ ENV['RAILS_ENV'] ||= 'test' ENV['OPENAPI_OUTPUT'] ||= 'yaml' -require File.expand_path('../rails/config/environment', __dir__) - require 'minitest/autorun' +require File.expand_path('../rails/config/environment', __dir__) RSpec::OpenAPI.request_headers = %w[X-Authorization-Token] RSpec::OpenAPI.response_headers = %w[X-Cursor] diff --git a/spec/integration_tests/roda_test.rb b/spec/integration_tests/roda_test.rb index 5bcc6b98..366133e4 100644 --- a/spec/integration_tests/roda_test.rb +++ b/spec/integration_tests/roda_test.rb @@ -3,8 +3,8 @@ require_relative '../roda/roda_app' require 'json' require 'rack/test' -require 'rspec/openapi' require 'minitest/autorun' +require 'rspec/openapi' ENV['OPENAPI_OUTPUT'] ||= 'yaml' diff --git a/spec/minitest/rack_test_spec.rb b/spec/minitest/rack_test_spec.rb index 49d8b190..20c8d424 100644 --- a/spec/minitest/rack_test_spec.rb +++ b/spec/minitest/rack_test_spec.rb @@ -32,4 +32,10 @@ expect(new_yaml).to eq org_yaml end end + + describe 'with disabled OpenAPI generation' do + it 'can run tests' do + minitest 'spec/integration_tests/roda_test.rb' + end + end end diff --git a/spec/minitest/rails_spec.rb b/spec/minitest/rails_spec.rb index a5d71c5e..d67a3cab 100644 --- a/spec/minitest/rails_spec.rb +++ b/spec/minitest/rails_spec.rb @@ -33,4 +33,10 @@ expect(new_yaml).to eq org_yaml end end + + describe 'with disabled OpenAPI generation' do + it 'can run tests' do + minitest 'spec/integration_tests/rails_test.rb' + end + end end