# File lib/buildr/java/bdd.rb, line 86
    def run(tests, dependencies)
      maybe_install_jruby
      dependencies |= [task.compile.target.to_s]

      spec_dir = task.project.path_to(:source, :spec, :ruby)
      report_dir = task.report_to.to_s
      rm_rf report_dir
      mkdir_p report_dir
      ENV['CI_REPORTS'] = report_dir

      runner = runner_config
      runner.content = runner_content(binding)

      Buildr.write(runner.file, runner.content)
      rm_f runner.result

      if RUBY_PLATFORM[/java/] && !options.fork
        runtime = new_runtime
        runtime.getObject.java.lang.System.getProperties().putAll(options[:properties] || {})
        runtime.getLoadService.require runner.file
      else
        cmd_options = task.options.only(:properties, :java_args)
        cmd_options.update(:classpath => dependencies, :project => task.project)
        jruby runner.file, tests, cmd_options rescue nil
      end

      fail "Missing result YAML file: #{runner.result}" unless File.exist? runner.result

      result = YAML.load(File.read(runner.result))
      if Exception === result
        raise [result.message, result.backtrace].flatten.join("\n")
      end
      tests - result.failed
    end