diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4b1575d..125725c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,6 +11,11 @@ jobs: test: name: Test failing spec detector runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + ci_node_total: [3] + ci_node_index: [0, 1, 2] steps: - uses: actions/checkout@v3 @@ -19,20 +24,22 @@ jobs: with: ruby-version: 2.7.2 bundler-cache: true - - name: Lint files - run: bundle exec rake rubocop - name: Run tests + env: + RAILS_ENV: test + CI_NODE_TOTAL: ${{ matrix.ci_node_total }} + CI_NODE_INDEX: ${{ matrix.ci_node_index }} run: bundle exec rake spec - name: Upload Failures uses: actions/upload-artifact@v3 with: name: Failures - path: failures_log_*.yml + path: spec/failing_spec_detector/failures - name: Upload Exceptions - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v2 with: name: Exceptions - path: exceptions_log_*.yml + path: spec/failing_spec_detector/exceptions print_log: name: Test print logs task @@ -50,10 +57,19 @@ jobs: uses: actions/download-artifact@v3 with: name: Failures + path: spec/failing_spec_detector/failures - name: Download Exceptions uses: actions/download-artifact@v3 with: name: Exceptions + path: spec/failing_spec_detector/exceptions - name: Run print_log task run: bundle exec rake failing_specs_detector:print_log + - name: File Reader + id: read_file + uses: andstor/file-reader-action@v1.0.0 + with: + path: "failing_specs_detector_log.txt" + - name: File contents + run: echo "${ steps.read_file.outputs.contents }" diff --git a/lib/failing_spec_detector/combiner.rb b/lib/failing_spec_detector/combiner.rb index 0a1d575..ecbbe0f 100644 --- a/lib/failing_spec_detector/combiner.rb +++ b/lib/failing_spec_detector/combiner.rb @@ -6,20 +6,24 @@ class Combiner def initialize(exceptions, failures) @exceptions = exceptions @failures = failures + @filename = 'failing_specs_detector_log.txt' end def combine - puts "Failing specs detector:\n\n\n" + File.write(@filename, "Failing spec detector:\n\n\n") + return if @exceptions.empty? + @exceptions.uniq.each do |exception| - puts "#{exception}:\n\n" + File.write(@filename, "#{exception}:\n\n", mode: 'a') related_examples = @failures.select { |failure| failure.exception == exception } next if related_examples.empty? related_examples.each do |failure| - puts "#{failure.backtrace}:\n" + File.write(@filename, "#{failure.backtrace}:\n", mode: 'a') end - puts "\n\n\n" + File.write(@filename, "\n\n\n", mode: 'a') end + File.write(@filename, '----------------------------------------------------------------', mode: 'a') end end end