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