Sha256: c998cc348344c058e79896be3220464738d0163169d01e875047e8e55c33d413

Contents?: true

Size: 1.44 KB

Versions: 69

Compression:

Stored size: 1.44 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'
require 'eac_ruby_utils/fs_cache'
require 'eac_ruby_utils/listable'
require 'eac_ruby_utils/on_clean_ruby_environment'

module EacRubyGemsUtils
  module Tests
    class Base
      include ::EacRubyUtils::Listable

      enable_simple_cache
      lists.add_string :result, :failed, :nonexistent, :successful

      common_constructor :gem

      def elegible?
        dependency_present? && gem.root.join(test_directory).exist?
      end

      def dependency_present?
        gem.gemfile_path.exist? && gem.gemfile_lock_gem_version(dependency_gem).present?
      end

      def name
        self.class.name.demodulize.gsub(/Test\z/, '')
      end

      def stdout_cache
        root_cache.child('stdout')
      end

      def stderr_cache
        root_cache.child('stderr')
      end

      def to_s
        "#{gem}[#{name}]"
      end

      private

      def result_uncached
        return RESULT_NONEXISTENT unless elegible?

        exec_run_with_log ? RESULT_SUCCESSFUL : RESULT_FAILED
      end

      def exec_run
        gem.bundle('exec', *bundle_exec_args).chdir_root.execute
      end

      def exec_run_with_log
        r = exec_run
        stdout_cache.write(r[:stdout])
        stderr_cache.write(r[:stderr])
        r[:exit_code].zero?
      end

      def root_cache
        ::EacRubyUtils.fs_cache.child(gem.root.to_s.parameterize, self.class.name.parameterize)
      end
    end
  end
end

Version data entries

69 entries across 69 versions & 2 rubygems

Version Path
avm-tools-0.94.2 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb
avm-tools-0.94.1 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb
avm-tools-0.94.0 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb
avm-tools-0.93.0 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb
avm-tools-0.92.0 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb
avm-tools-0.91.0 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb
avm-tools-0.90.0 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb
avm-tools-0.89.0 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb
avm-tools-0.88.0 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb
avm-tools-0.87.1 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb
avm-tools-0.87.0 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb
avm-tools-0.86.0 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb
avm-tools-0.85.1 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb
avm-tools-0.85.0 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb
avm-tools-0.84.0 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb
avm-tools-0.83.0 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb
avm-tools-0.82.1 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb
avm-tools-0.82.0 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb
avm-tools-0.81.0 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb
avm-tools-0.80.0 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb