52 lines
1.2 KiB
Ruby
52 lines
1.2 KiB
Ruby
require 'aruba/cucumber'
|
|
require 'aruba/in_process'
|
|
require 'producer/core'
|
|
|
|
class ArubaProgramWrapper
|
|
def initialize(argv, stdin = $stdin, stdout = $stdout, stderr = $stderr,
|
|
kernel = Kernel)
|
|
@argv = argv
|
|
@stdin = stdin
|
|
@stdout = stdout
|
|
@stderr = stderr
|
|
@kernel = kernel
|
|
end
|
|
|
|
def execute!
|
|
Producer::Core::CLI.run!(
|
|
@argv.dup, stdin: @stdin, stdout: @stdout, stderr: @stderr
|
|
)
|
|
rescue SystemExit => e
|
|
@kernel.exit e.status
|
|
end
|
|
end
|
|
|
|
|
|
# Raise aruba default timeout so test suite can run on a slow machine.
|
|
Before do
|
|
@aruba_timeout_seconds = 8
|
|
end
|
|
|
|
# Use aruba "in process" optimization only for scenarios not tagged @exec.
|
|
# We need a real process in a few cases: real program name, interactive usage…
|
|
Before('@exec') do
|
|
Aruba.process = Aruba::SpawnProcess
|
|
end
|
|
|
|
Before('~@exec') do
|
|
Aruba::InProcess.main_class = ArubaProgramWrapper
|
|
Aruba.process = Aruba::InProcess
|
|
end
|
|
|
|
# Fake home directory for @fake_home tagged scenarios.
|
|
Before('@fake_home') do
|
|
ENV['HOME'] = File.expand_path(current_dir)
|
|
end
|
|
|
|
# Enable cucumber-sshd "fast" mode (persists sshd across scenarios), and
|
|
# register hooks for @sshd tagged scenarios.
|
|
Before do
|
|
@_sshd_fast = true
|
|
end
|
|
require 'cucumber/sshd/cucumber'
|