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 May 10, 2024
1 parent 482d108 commit 22bbc35
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 10 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
19 changes: 11 additions & 8 deletions .simplecov
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
# frozen_string_literal: true

if ENV['CI']
require 'simplecov-lcov'
SimpleCov::Formatter::LcovFormatter.config.report_with_single_file = true
SimpleCov.formatter = SimpleCov::Formatter::LcovFormatter
else
SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter
end

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

if ENV['CI']
require 'simplecov-lcov'
SimpleCov::Formatter::LcovFormatter.config.report_with_single_file = true
formatter SimpleCov::Formatter::LcovFormatter
# formatter SimpleCov::Formatter::SimpleFormatter
else
formatter SimpleCov::Formatter::HTMLFormatter
end

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 @@ -122,6 +122,9 @@ group :opentelemetry do
end

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 @@ -264,6 +264,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 @@ -701,6 +706,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 @@ -933,6 +942,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 22bbc35

Please sign in to comment.