Skip to content

Commit 33da5f8

Browse files
committed
Use custom test-queue runner for DB isolation and SimpleCov
1 parent 1107f7d commit 33da5f8

4 files changed

Lines changed: 41 additions & 5 deletions

File tree

.github/workflows/_test-matrix.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,14 @@ jobs:
5454
5555
- name: Run tests
5656
if: matrix.ruby-version != '4.0' || matrix.rails-version != 'rails-8.1'
57-
run: bundle exec appraisal ${{ matrix.rails-version }} rspec-queue
57+
run: bundle exec appraisal ${{ matrix.rails-version }} bin/rspec-queue
5858
env:
5959
SPEC_OPTS: --tag ~generator
6060
SKIP_COVERAGE: true
6161

6262
- name: Run full test suite with coverage (latest Ruby/Rails)
6363
if: matrix.ruby-version == '4.0' && matrix.rails-version == 'rails-8.1'
64-
run: bundle exec appraisal ${{ matrix.rails-version }} rspec
64+
run: bundle exec appraisal ${{ matrix.rails-version }} bin/rspec-queue
6565

6666
- name: Upload coverage to Codecov
6767
if: matrix.ruby-version == '4.0' && matrix.rails-version == 'rails-8.1'
@@ -77,7 +77,7 @@ jobs:
7777
run: |
7878
FARADAY_VERSION=1.10.3 bundle install
7979
bundle exec appraisal ${{ matrix.rails-version }} bundle install
80-
bundle exec appraisal ${{ matrix.rails-version }} rspec-queue
80+
bundle exec appraisal ${{ matrix.rails-version }} bin/rspec-queue
8181
env:
8282
SPEC_OPTS: --tag ~generator
8383
SKIP_COVERAGE: true

.overcommit.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ PreCommit:
1010
RSpec:
1111
enabled: true
1212
command: [
13-
'bundle', 'exec', 'rspec-queue',
13+
'bundle', 'exec', 'bin/rspec-queue',
1414
'--tag', '~generator'
1515
]
1616
on_warn: fail

bin/rspec-queue

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#!/usr/bin/env ruby
2+
# frozen_string_literal: true
3+
4+
ENV['TEST_ENV_NUMBER'] = '0' if ENV.fetch('TEST_ENV_NUMBER', '').empty?
5+
6+
require 'bundler/setup'
7+
require 'test_queue'
8+
require 'test_queue/runner/rspec'
9+
require 'simplecov'
10+
11+
class RubyLLMRSpecQueueRunner < TestQueue::Runner::RSpec
12+
def after_fork(num)
13+
super
14+
ENV['TEST_ENV_NUMBER'] = num.to_s
15+
return if ENV['SKIP_COVERAGE']
16+
return unless defined?(SimpleCov) && SimpleCov.running
17+
18+
SimpleCov.command_name("RSpec worker #{num}")
19+
end
20+
21+
def cleanup_worker
22+
return unless defined?(SimpleCov) && SimpleCov.running
23+
24+
SimpleCov.result
25+
end
26+
end
27+
28+
runner = RubyLLMRSpecQueueRunner.new
29+
runner.exit_when_done = false
30+
exit_status = runner.execute
31+
32+
if !ENV['SKIP_COVERAGE'] && defined?(SimpleCov) && SimpleCov.running
33+
SimpleCov.result.format!
34+
end
35+
36+
exit exit_status

lib/tasks/ruby_llm.rake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ def run_test_queue_rspec
55
env = {}
66
env['TEST_QUEUE_WORKERS'] = workers if workers && !workers.empty? && ENV.fetch('TEST_QUEUE_WORKERS', '').empty?
77

8-
system(env, 'bundle', 'exec', 'rspec-queue')
8+
system(env, 'bundle', 'exec', 'bin/rspec-queue')
99
end
1010

1111
namespace :ruby_llm do

0 commit comments

Comments
 (0)