diff --git a/features/support/env.rb b/features/support/env.rb index 29f7146..99aeda1 100644 --- a/features/support/env.rb +++ b/features/support/env.rb @@ -1,51 +1 @@ -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' +require 'producer/core/testing/cucumber' diff --git a/lib/producer/core/testing/aruba_program_wrapper.rb b/lib/producer/core/testing/aruba_program_wrapper.rb new file mode 100644 index 0000000..7845fbd --- /dev/null +++ b/lib/producer/core/testing/aruba_program_wrapper.rb @@ -0,0 +1,24 @@ +module Producer + module Core + module Testing + 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 + end + end +end diff --git a/lib/producer/core/testing/cucumber.rb b/lib/producer/core/testing/cucumber.rb new file mode 100644 index 0000000..7b753c0 --- /dev/null +++ b/lib/producer/core/testing/cucumber.rb @@ -0,0 +1,39 @@ +require 'aruba/cucumber' +require 'aruba/in_process' + +require 'producer/core' +require 'producer/core/testing/aruba_program_wrapper' +require 'producer/core/testing/cucumber/etc_steps' +require 'producer/core/testing/cucumber/execution_steps' +require 'producer/core/testing/cucumber/output_steps' +require 'producer/core/testing/cucumber/recipe_steps' +require 'producer/core/testing/cucumber/remote_steps' +require 'producer/core/testing/cucumber/ssh_steps' + +# 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 = Producer::Core::Testing::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' diff --git a/features/steps/etc_steps.rb b/lib/producer/core/testing/cucumber/etc_steps.rb similarity index 100% rename from features/steps/etc_steps.rb rename to lib/producer/core/testing/cucumber/etc_steps.rb diff --git a/features/steps/execution_steps.rb b/lib/producer/core/testing/cucumber/execution_steps.rb similarity index 100% rename from features/steps/execution_steps.rb rename to lib/producer/core/testing/cucumber/execution_steps.rb diff --git a/features/steps/output_steps.rb b/lib/producer/core/testing/cucumber/output_steps.rb similarity index 100% rename from features/steps/output_steps.rb rename to lib/producer/core/testing/cucumber/output_steps.rb diff --git a/features/steps/recipe_steps.rb b/lib/producer/core/testing/cucumber/recipe_steps.rb similarity index 100% rename from features/steps/recipe_steps.rb rename to lib/producer/core/testing/cucumber/recipe_steps.rb diff --git a/features/steps/remote_steps.rb b/lib/producer/core/testing/cucumber/remote_steps.rb similarity index 100% rename from features/steps/remote_steps.rb rename to lib/producer/core/testing/cucumber/remote_steps.rb diff --git a/features/steps/ssh_steps.rb b/lib/producer/core/testing/cucumber/ssh_steps.rb similarity index 100% rename from features/steps/ssh_steps.rb rename to lib/producer/core/testing/cucumber/ssh_steps.rb