diff --git a/.circleci/config.yml b/.circleci/config.yml index f26c65aa94e..5b7f63cda22 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -153,6 +153,7 @@ commands: - run: name: "Prepare the rails application" command: | + cp core/spec/solidus_install_coverage.rb /tmp/solidus_install_coverage.rb cd /tmp test -d my_app || (gem install rails -v "< 7.1" && gem install solidus) test -d my_app || rails new my_app --skip-git @@ -165,9 +166,16 @@ commands: name: "Run `solidus:install` with `<>`" command: | cd /tmp/my_app + bundle add gem simplecov simplecov-cobertura --require=false bundle add solidus --path "$(ruby -e"puts File.expand_path ENV['CIRCLE_WORKING_DIRECTORY']")" unset RAILS_ENV # avoid doing everything on the test environment + cat /tmp/solidus_install_coverage.rb >> config/boot.rb bin/rails generate solidus:install --auto-accept <> + - run: + name: Report Coverage + command: | + cd /tmp/my_app + bundle exec ruby /tmp/solidus_install_coverage.rb test_page: parameters: @@ -236,6 +244,10 @@ jobs: executor: name: sqlite ruby: "3.0" + environment: + COVERAGE: "true" + COVERAGE_DIR: /tmp/coverage + DISABLE_ACTIVE_STORAGE: false steps: - checkout - run: @@ -264,6 +276,8 @@ jobs: name: "Ensure solidus_frontend installer is run" command: | test -f /tmp/dummy_extension/spec/dummy/config/initializers/solidus_frontend.rb + - codecov/upload: + file: /tmp/coverage/coverage.xml test_solidus: parameters: diff --git a/core/spec/solidus_install_coverage.rb b/core/spec/solidus_install_coverage.rb new file mode 100644 index 00000000000..b4fcaa017e8 --- /dev/null +++ b/core/spec/solidus_install_coverage.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +if ENV["COVERAGE"] + require 'simplecov' + if ENV["COVERAGE_DIR"] + SimpleCov.coverage_dir(ENV["COVERAGE_DIR"]) + end + SimpleCov.command_name('solidus:install') + SimpleCov.merge_timeout(3600) + SimpleCov.start('rails') +end + + +# When the file is executed directly, run the coverage report +if __FILE__ == $PROGRAM_NAME + require "simplecov" + SimpleCov.merge_timeout 3600 + SimpleCov.coverage_dir(ENV["COVERAGE_DIR"]) + require "simplecov-cobertura" + SimpleCov.formatter = SimpleCov::Formatter::CoberturaFormatter + SimpleCov.result.format! +end