Sha256: b710f4df345bdde8e71632fd24bdb2eb034cf1b3eccc468b33aabf5be4ad7f83

Contents?: true

Size: 1.22 KB

Versions: 16

Compression:

Stored size: 1.22 KB

Contents

require 'rspec'
require 'rspec/core/rake_task'

module NoradSpecRunner
  # Class to run RSpec tests locally
  class Task
    attr_reader :results_file, :obj

    def initialize(tests, sub_tests, results_file)
      @obj = RSpec::Core::RakeTask.new do |_|
        true
      end

      @obj.pattern = tests
      @obj.rspec_opts = "-e #{sub_tests} --format json -o #{results_file}"
      @results_file = results_file
    end

    def run
      pstderr = STDERR.dup
      ftmp = Tempfile.open('eout')
      FileUtils.touch results_file

      # Capture STDERR for SSH related errors
      STDERR.reopen(ftmp)
      obj.run_task(true)
    rescue SystemExit => e
      ftmp.rewind
      err = ftmp.read
      ftmp.close
      p err
      # We land here even on successful run (SystemExit exception), only report error if stderr is not empty
      if not err.empty?
        write_error_to_results_file err
      end
    rescue Exception => e
      # Unknown exception!
      write_error_to_results_file e.message
    ensure
      STDERR.reopen pstderr
    end

    private

    def write_error_to_results_file(error)
      File.open(results_file, "w") do |f|
        f.write "!! NORAD SPEC RUNNER ERROR !!\nError: #{error}\n"
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
norad_spec_runner-0.5.2 lib/norad_spec_runner/task.rb
norad_spec_runner-0.5.1 lib/norad_spec_runner/task.rb
norad_spec_runner-0.5.0 lib/norad_spec_runner/task.rb
norad_spec_runner-0.4.6 lib/norad_spec_runner/task.rb
norad_spec_runner-0.4.5 lib/norad_spec_runner/task.rb
norad_spec_runner-0.4.4 lib/norad_spec_runner/task.rb
norad_spec_runner-0.4.3 lib/norad_spec_runner/task.rb
norad_spec_runner-0.4.2 lib/norad_spec_runner/task.rb
norad_spec_runner-0.4.1 lib/norad_spec_runner/task.rb
norad_spec_runner-0.4.0 lib/norad_spec_runner/task.rb
norad_spec_runner-0.3.5 lib/norad_spec_runner/task.rb
norad_spec_runner-0.3.4 lib/norad_spec_runner/task.rb
norad_spec_runner-0.3.3 lib/norad_spec_runner/task.rb
norad_spec_runner-0.3.2 lib/norad_spec_runner/task.rb
norad_spec_runner-0.3.1 lib/norad_spec_runner/task.rb
norad_spec_runner-0.3.0 lib/norad_spec_runner/task.rb