From c765056d8bb246ca29078ac999601df25430f172 Mon Sep 17 00:00:00 2001 From: Katsuya HIDAKA Date: Wed, 20 May 2026 18:58:34 +0900 Subject: Enable parallel tests by default --- .gitignore | 3 +-- doc/RUNNING_TESTS | 5 +++-- test/application_system_test_case.rb | 2 ++ test/generators/controller_generator_test.rb | 2 +- test/generators/migration_generator_test.rb | 2 +- test/generators/model_generator_test.rb | 2 +- test/test_helper.rb | 14 +++++++++++++- 7 files changed, 22 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 444173c3b..f81cab6e6 100644 --- a/.gitignore +++ b/.gitignore @@ -15,8 +15,7 @@ /config/initializers/secret_token.rb /coverage /db/*.db -/db/*.sqlite3 -/db/*.sqlite3-* +/db/*.sqlite3* /db/schema.rb /files/* /lib/redmine/scm/adapters/mercurial/redminehelper.pyc diff --git a/doc/RUNNING_TESTS b/doc/RUNNING_TESTS index 166a82f10..8f63b38b1 100644 --- a/doc/RUNNING_TESTS +++ b/doc/RUNNING_TESTS @@ -14,8 +14,9 @@ Apache perl module Redmine.pm and Capybara tests, see below). You can run `ruby test/unit/issue_test.rb` for running a single test case and `ruby test/unit/issue_test.rb -n test_create` for running a single test. -You can run tests in parallel by setting the PARALLEL_WORKERS environment -variable: +Tests run in parallel by default, using the number of processors as the worker +count. You can change the worker count by setting the PARALLEL_WORKERS +environment variable: `PARALLEL_WORKERS=8 bin/rails test` Before running tests, you need to configure both development diff --git a/test/application_system_test_case.rb b/test/application_system_test_case.rb index 38d69e7c8..3deea4656 100644 --- a/test/application_system_test_case.rb +++ b/test/application_system_test_case.rb @@ -20,6 +20,8 @@ require_relative 'test_helper' class ApplicationSystemTestCase < ActionDispatch::SystemTestCase + parallelize(workers: 1) + DOWNLOADS_PATH = File.expand_path(File.join(Rails.root, 'tmp', 'downloads')) # Allow running Capybara default server on custom IP address and/or port diff --git a/test/generators/controller_generator_test.rb b/test/generators/controller_generator_test.rb index 46aeac88e..490cd6310 100644 --- a/test/generators/controller_generator_test.rb +++ b/test/generators/controller_generator_test.rb @@ -21,7 +21,7 @@ require_relative '../test_helper' require_relative '../../lib/generators/redmine_plugin_controller/redmine_plugin_controller_generator' class ControllerGeneratorTest < Rails::Generators::TestCase - TMP_DIR = Rails.root / 'tmp/test/generators' + TMP_DIR = Rails.root / 'tmp/test/generators/controller' tests RedminePluginControllerGenerator destination TMP_DIR diff --git a/test/generators/migration_generator_test.rb b/test/generators/migration_generator_test.rb index 8342d5741..ba4327197 100644 --- a/test/generators/migration_generator_test.rb +++ b/test/generators/migration_generator_test.rb @@ -21,7 +21,7 @@ require_relative '../test_helper' require_relative '../../lib/generators/redmine_plugin_migration/redmine_plugin_migration_generator' class MigrationGeneratorTest < Rails::Generators::TestCase - TMP_DIR = Rails.root / 'tmp/test/generators' + TMP_DIR = Rails.root / 'tmp/test/generators/migration' tests RedminePluginMigrationGenerator destination TMP_DIR diff --git a/test/generators/model_generator_test.rb b/test/generators/model_generator_test.rb index f030de6f7..65c4aef84 100644 --- a/test/generators/model_generator_test.rb +++ b/test/generators/model_generator_test.rb @@ -21,7 +21,7 @@ require_relative '../test_helper' require_relative '../../lib/generators/redmine_plugin_model/redmine_plugin_model_generator' class ModelGeneratorTest < Rails::Generators::TestCase - TMP_DIR = Rails.root / 'tmp/test/generators' + TMP_DIR = Rails.root / 'tmp/test/generators/model' tests RedminePluginModelGenerator destination TMP_DIR diff --git a/test/test_helper.rb b/test/test_helper.rb index 752e89f31..02f0070f4 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -52,7 +52,7 @@ class ActionView::TestCase end class ActiveSupport::TestCase - parallelize(workers: 1) + parallelize(workers: :number_of_processors) include ActionDispatch::TestProcess @@ -61,6 +61,18 @@ class ActiveSupport::TestCase self.use_transactional_tests = true self.use_instantiated_fixtures = false + parallelize_setup do |worker| + # Use a separate attachment directory for each worker. + $redmine_tmp_attachments_directory = + File.join($redmine_tmp_attachments_directory, worker.to_s) + FileUtils.mkdir_p $redmine_tmp_attachments_directory + + # Use a separate thumbnail directory for each worker. + Attachment.thumbnails_storage_path = + File.join(Attachment.thumbnails_storage_path, worker.to_s) + FileUtils.mkdir_p Attachment.thumbnails_storage_path + end + # Clear Settings cache after each test to prevent test interference teardown do Setting.clear_cache -- 2.52.0