Move factory linting to CI cycle

No need to do this before each and every spec or example. Speeds
up suite and make things less fragile.
This commit is contained in:
Henne Vogelsang 2021-08-18 14:05:19 +02:00
parent 0104671e01
commit 7dbe2d19fe
No known key found for this signature in database
GPG key ID: 97DDB66BDAF8D4D6
5 changed files with 5 additions and 32 deletions

View file

@ -41,6 +41,7 @@ jobs:
rm -f osem_test osem_development
bundle exec rake db:setup --trace
bundle exec bin/rails webdrivers:chromedriver:update
bundle exec rake factory_bot:lint RAILS_ENV=test
- name: spec/${{ matrix.suite }}
run: bundle exec rake spec:${{ matrix.suite }}
- name: coverage upload ${{ matrix.suite }}

View file

@ -115,10 +115,6 @@
# SKYLIGHT_AUTHENTICATION=1234
# SKYLIGHT_PUBLIC_DASHBOARD_URL='https://oss.skylight.io/app/applications/xxxxxxxxxxxx'
# Disable linting of factories in the test suite.
# Speeds up turn around times of tests
# OSEM_FACTORY_LINT=false
# How should browser tests be performed?
# For headless Chrome (default):
# OSEM_TEST_DRIVER=chrome_headless

View file

@ -1,17 +1,14 @@
# frozen_string_literal: true
namespace :factory_bot do
desc "Verify that all FactoryBot factories are valid"
task lint: :environment do
if Rails.env.test?
begin
DatabaseCleaner.start
conn = ActiveRecord::Base.connection
conn.transaction do
FactoryBot.lint
ensure
DatabaseCleaner.clean
raise ActiveRecord::Rollback
end
else
system("bundle exec rake factory_bot:lint RAILS_ENV='test'")
raise "\nERROR: You should not run this outside the test environment...\n\n"
end
end
end

View file

@ -28,7 +28,6 @@ namespace :data do
dot_env.puts "OSEM_ICHAIN_ENABLED=\"#{CONFIG['authentication']['ichain']['enabled']}\"" if CONFIG.has_key?(:authentication)
dot_env.puts "OSEM_TRANSIFEX_APIKEY=\"#{CONFIG['transifex_live_api_key']}\""
dot_env.puts "OSEM_ERRBIT_HOST=\"#{CONFIG['errbit_host']}\""
dot_env.puts "OSEM_FACTORY_LINT=\"#{CONFIG['factory_bot_lint']}\""
dot_env.puts "OSEM_SMTP_ADDRESS=\"#{CONFIG['mail_address']}\""
dot_env.puts "OSEM_SMTP_PORT=\"#{CONFIG['mail_port']}\""
dot_env.puts "OSEM_SMTP_USERNAME=\"#{CONFIG['mail_username']}\""

View file

@ -1,20 +0,0 @@
# frozen_string_literal: true
require_relative 'external_request'
RSpec.configure do |config|
config.before(:suite) do
if ENV['OSEM_FACTORY_LINT'] != 'false'
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
begin
DatabaseCleaner.start
mock_commercial_request
FactoryBot.lint
ensure
DatabaseCleaner.clean
end
end
end
end