Skip to content

Commit

Permalink
Use flatware to parallelize CI specs
Browse files Browse the repository at this point in the history
  • Loading branch information
mjankowski committed Apr 29, 2024
1 parent 7d3fe2b commit 3ffbc03
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 2 deletions.
6 changes: 4 additions & 2 deletions .github/workflows/test-ruby.yml
Original file line number Diff line number Diff line change
Expand Up @@ -136,9 +136,11 @@ jobs:
additional-system-dependencies: ffmpeg imagemagick libpam-dev

- name: Load database schema
run: './bin/rails db:create db:schema:load db:seed'
run: |
bundle exec rake db:setup
bin/flatware fan rake db:test:prepare
- run: bin/rspec
- run: bin/flatware rspec -r ./spec/flatware_helper.rb

- name: Upload coverage reports to Codecov
if: matrix.ruby-version == '.ruby-version'
Expand Down
2 changes: 2 additions & 0 deletions .simplecov
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ else
end

SimpleCov.start 'rails' do
command_name "examples#{ENV.fetch('TEST_ENV_NUMBER', nil)}"

enable_coverage :branch

add_filter 'lib/linter'
Expand Down
3 changes: 3 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,9 @@ gem 'rdf-normalize', '~> 0.5'
gem 'private_address_check', '~> 0.5'

group :test do
# Enable usage of all available CPUs/cores during spec runs
gem 'flatware-rspec'

# Adds RSpec Error/Warning annotations to GitHub PRs on the Files tab
gem 'rspec-github', '~> 2.4', require: false

Expand Down
10 changes: 10 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,11 @@ GEM
ffi-compiler (1.3.2)
ffi (>= 1.15.5)
rake
flatware (2.2.1)
thor (< 2.0)
flatware-rspec (2.2.1)
flatware (= 2.2.1)
rspec (>= 3.6)
fog-core (2.4.0)
builder
excon (~> 0.71)
Expand Down Expand Up @@ -620,6 +625,10 @@ GEM
chunky_png (~> 1.0)
rqrcode_core (~> 1.0)
rqrcode_core (1.2.0)
rspec (3.13.0)
rspec-core (~> 3.13.0)
rspec-expectations (~> 3.13.0)
rspec-mocks (~> 3.13.0)
rspec-core (3.13.0)
rspec-support (~> 3.13.0)
rspec-expectations (3.13.0)
Expand Down Expand Up @@ -853,6 +862,7 @@ DEPENDENCIES
faker (~> 3.2)
fast_blank (~> 1.0)
fastimage
flatware-rspec
fog-core (<= 2.4.0)
fog-openstack (~> 1.0)
fuubar (~> 2.5)
Expand Down
27 changes: 27 additions & 0 deletions bin/flatware
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/usr/bin/env ruby
# frozen_string_literal: true

#
# This file was generated by Bundler.
#
# The application 'flatware' is installed as part of a gem, and
# this file is here to facilitate running it.
#

ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)

bundle_binstub = File.expand_path("bundle", __dir__)

if File.file?(bundle_binstub)
if File.read(bundle_binstub, 300).include?("This file was generated by Bundler")
load(bundle_binstub)
else
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
end
end

require "rubygems"
require "bundler/setup"

load Gem.bin_path("flatware", "flatware")
9 changes: 9 additions & 0 deletions spec/flatware_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# frozen_string_literal: true

Flatware.configure do |config|
config.after_fork do |test_env_number|
unless ENV.fetch('DISABLE_SIMPLECOV', nil) == 'true'
SimpleCov.at_fork.call(test_env_number) # Combines parallel coverage results
end
end
end

0 comments on commit 3ffbc03

Please sign in to comment.