Sha256: 2beb2544e4f5c11069075f9e74f2cbe609a0f7029d7faeaf26ad235681d9e121

Contents?: true

Size: 1.23 KB

Versions: 2

Compression:

Stored size: 1.23 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'
require 'eac_ruby_utils/fs/logs'
require 'eac_ruby_utils/listable'

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 to_s
        "#{gem}[#{name}]"
      end

      private

      def logs_uncached
        ::EacRubyUtils::Fs::Logs.new.add(:stdout).add(:stderr)
      end

      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
        logs[:stdout].write(r[:stdout])
        logs[:stderr].write(r[:stderr])
        r[:exit_code].zero?
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
ehbrs-tools-0.28.3 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb
eac_ruby_gems_utils-0.9.8 lib/eac_ruby_gems_utils/tests/base.rb