Sha256: 9c0595a74acd0ff01154ad0dc40fe195888ba3dd341a302f60160f4a5a30fe61

Contents?: true

Size: 1.8 KB

Versions: 48

Compression:

Stored size: 1.8 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_gems_utils/tests/minitest'
require 'eac_ruby_gems_utils/tests/rspec'
require 'eac_ruby_utils/core_ext'

module EacRubyGemsUtils
  module Tests
    class Multiple
      require_sub __FILE__
      enable_speaker
      enable_simple_cache
      common_constructor :gems, :options, default: [{}]
      set_callback :initialize, :after, :run

      def ok?
        failed_tests.none?
      end

      def only
        options[:only]
      end

      private

      def all_tests_uncached
        decorated_gems.flat_map(&:tests)
      end

      def clear_logs
        all_tests.each do |test|
          test.logs.remove_all
        end
      end

      def prepare_all_gems
        infom 'Preparing all gems...'
        decorated_gems.each(&:prepare)
      end

      def decorated_gems_uncached
        r = gems
        r = r.select { |gem| only.include?(gem.name) } if only.present?
        r.map { |gem| DecoratedGem.new(gem) }
      end

      def failed_tests_uncached
        all_tests.select { |r| r.result == ::EacRubyGemsUtils::Tests::Base::RESULT_FAILED }
      end

      def final_results_banner
        if failed_tests.any?
          warn 'Some test did not pass:'
          failed_tests.each do |test|
            infov '  * Test', test
            info test.logs.truncate_all
          end
        else
          success 'All tests passed'
        end
      end

      def run
        start_banner
        prepare_all_gems
        test_all_gems
        final_results_banner
      ensure
        clear_logs
      end

      def start_banner
        infov 'Gems to test', decorated_gems.count
      end

      def test_all_gems
        infom 'Running tests...'
        all_tests.each do |test|
          infov test, Result.new(test.result).tag
        end
      end
    end
  end
end

Version data entries

48 entries across 48 versions & 3 rubygems

Version Path
avm-tools-0.120.0 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb
avm-tools-0.119.0 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb
avm-tools-0.118.0 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb
avm-tools-0.117.3 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb
avm-tools-0.117.2 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb
avm-tools-0.117.1 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb
avm-tools-0.117.0 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb
avm-tools-0.116.2 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb
eac_ruby_gems_utils-0.9.10 lib/eac_ruby_gems_utils/tests/multiple.rb
avm-tools-0.116.1 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb
avm-tools-0.116.0 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb
avm-tools-0.115.0 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb
avm-tools-0.114.2 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb
avm-tools-0.114.1 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb
avm-tools-0.114.0 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb
avm-tools-0.113.6 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb
avm-tools-0.113.5 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb
avm-tools-0.113.4 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb
avm-tools-0.113.3 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb
eac_ruby_gems_utils-0.9.9 lib/eac_ruby_gems_utils/tests/multiple.rb