Sha256: 67799410cb4a087a34d0e940740732b0d62f5d085ca6783da9dc21382f3e91b0

Contents?: true

Size: 1.88 KB

Versions: 5

Compression:

Stored size: 1.88 KB

Contents

require 'tempfile'
require 'fileutils'
require 'open3'

module QUnited
  module Driver
    class Rhino < Base
      SUPPORT_DIR = File.expand_path('../support', __FILE__)

      # Determines whether this driver available to use. Checks whether java
      # is on the PATH and whether Java is version 1.1 or greater.
      def self.available?
        java_exe = which('java')
        if java_exe
          stdin, stdout, stderr = Open3.popen3('java -version')
          begin
            version = Float(stderr.read.split("\n").first[/(\d+\.\d+)/, 1])
            version >= 1.1
          rescue
            false
          end
        end
      end

      def run
        js_jar, runner = File.join(SUPPORT_DIR, 'js.jar'), File.join(SUPPORT_DIR, 'runner.js')

        source_files_args = @source_files.map { |sf| %{"#{sf}"} }.join(' ')
        test_files_args = @test_files.map { |tf| %{"#{tf}"} }.join(' ')

        send_to_formatter(:start)

        cmd = %{java -jar "#{js_jar}" -opt -1 "#{runner}" }
        cmd << %{"#{QUnited::Driver::Base::SUPPORT_DIR}" "#{SUPPORT_DIR}"}
        cmd << " #{source_files_args} -- #{test_files_args}"

        @results = []

        Open3.popen3(cmd) do |stdin, stdout, stderr|
          results_collector = ResultsCollector.new(stdout)
          results_collector.on_test_result do |result|
            @results << result
            method = result.passed? ? :test_passed : :test_failed
            send_to_formatter(method, result)
          end

          results_collector.collect_results

          # Allow stderr to get blasted out to console - if there are uncaught exceptions or
          # anything else that goes wrong with Rhino the user will probably want to know.
          unless (err = stderr.read).strip.empty? then $stderr.puts(err) end
        end

        send_to_formatter(:stop)
        send_to_formatter(:summarize)

        @results
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
qunited-0.4.4 lib/qunited/driver/rhino/rhino.rb
qunited-0.4.3 lib/qunited/driver/rhino/rhino.rb
qunited-0.4.2 lib/qunited/driver/rhino/rhino.rb
qunited-0.4.1 lib/qunited/driver/rhino/rhino.rb
qunited-0.4.0 lib/qunited/driver/rhino/rhino.rb