From 62e8566c5c412a845d42bf8a65dbc0f4350d9426 Mon Sep 17 00:00:00 2001 From: Dennis Walters Date: Mon, 10 Feb 2020 05:13:07 -0500 Subject: [PATCH 1/2] Set up the boilerplate for integration tests * Set up cucumber * Set up aruba * Set up factis * Added a "version" feature description (to verify that the app is being executed properly via aruba-in-process and Runatron) * Implemented `engineyard-serverside version` to meet the aforementioned feature description --- engineyard-serverside.gemspec | 3 +- features/step_definitions/version_steps.rb | 5 +++ features/support/env.rb | 50 ++++++++++++++++++++++ features/support/output_helpers.rb | 7 +++ features/version.feature | 7 +++ lib/engineyard-serverside/cli/app.rb | 6 +++ 6 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 features/step_definitions/version_steps.rb create mode 100644 features/support/env.rb create mode 100644 features/support/output_helpers.rb create mode 100644 features/version.feature diff --git a/engineyard-serverside.gemspec b/engineyard-serverside.gemspec index 5702cd5a..220c7cee 100644 --- a/engineyard-serverside.gemspec +++ b/engineyard-serverside.gemspec @@ -30,7 +30,8 @@ Gem::Specification.new do |s| s.add_development_dependency('json', '<2') s.add_development_dependency('cucumber', '~> 1.3.20') s.add_development_dependency('aruba', '~> 0.14.14') + s.add_development_dependency('factis', '~> 1.0.1') s.required_rubygems_version = %q{>= 1.3.6} - s.test_files = Dir.glob("spec/**/*") + s.test_files = Dir.glob("spec/**/*") + Dir.glob("features/**/*") end diff --git a/features/step_definitions/version_steps.rb b/features/step_definitions/version_steps.rb new file mode 100644 index 00000000..e9bfef7e --- /dev/null +++ b/features/step_definitions/version_steps.rb @@ -0,0 +1,5 @@ +require 'engineyard-serverside/version' + +Then %{the current version is displayed} do + expect(output_text).to include(EY::Serverside::VERSION) +end diff --git a/features/support/env.rb b/features/support/env.rb new file mode 100644 index 00000000..56f2cf31 --- /dev/null +++ b/features/support/env.rb @@ -0,0 +1,50 @@ +unless RUBY_VERSION =~ /^1\.8\./ + require 'simplecov' + SimpleCov.coverage_dir 'coverage/outside' + SimpleCov.start do + add_filter '/spec/' + add_filter '/features/' + add_filter '/mock/' + add_filter '/lib/vendor/' + add_group 'CLI Workflows', 'lib/engineyard-serverside/cli/workflows/' + add_group 'Callbacks', 'lib/engineyard-serverside/callbacks/' + end +end + +require 'aruba/cucumber' +require 'factis/cucumber' +require 'engineyard-serverside' + +# This is a fun bit of glue to allow us to use Aruba's in-process runner +class Runatron + def initialize(argv, stdin = STDIN, stdout = STDOUT, stderr = STDERR, kernel = Kernel) + @argv, @stdin, @stdout, @stderr, @kernel = argv, stdin, stdout, stderr, kernel + end + + def execute! + exit_code = begin + $stderr = @stderr + $stdin = @stdin + $stdout = @stdout + + EY::Serverside::CLI::App.start(@argv) + rescue StandardError => e + b = e.backtrace + @stderr.puts("#{b.shift}: #{e.message} (#{e.class})") + @stderr.puts(b.map {|s| "\tfrom #{s}"}.join("\n")) + rescue SystemExit => e + e.status + ensure + $stderr = STDERR + $stdin = STDIN + $stdout = STDOUT + end + + @kernel.exit(exit_code) + end +end + +Aruba.configure do |config| + config.command_launcher = :in_process + config.main_class = Runatron +end diff --git a/features/support/output_helpers.rb b/features/support/output_helpers.rb new file mode 100644 index 00000000..6a36f71c --- /dev/null +++ b/features/support/output_helpers.rb @@ -0,0 +1,7 @@ +module OutputHelpers + def output_text + last_command_started.output + end +end + +World(OutputHelpers) diff --git a/features/version.feature b/features/version.feature new file mode 100644 index 00000000..18e3bec4 --- /dev/null +++ b/features/version.feature @@ -0,0 +1,7 @@ +Feature: Showing the version + In order to know what iteration of engineyard-serverside I'm using, I want to + be able to have it print out the version. + + Scenario: User issues the vesion command + When I run `engineyard-serverside version` + Then the current version is displayed diff --git a/lib/engineyard-serverside/cli/app.rb b/lib/engineyard-serverside/cli/app.rb index f137733b..fd4cd933 100644 --- a/lib/engineyard-serverside/cli/app.rb +++ b/lib/engineyard-serverside/cli/app.rb @@ -8,6 +8,7 @@ require 'engineyard-serverside/servers' require 'engineyard-serverside/cli/helpers' require 'engineyard-serverside/cli/workflows' +require 'engineyard-serverside/version' module EY module Serverside @@ -130,6 +131,11 @@ def integrate def restart Workflows.perform(:restart, options) end + + desc "version", "Show the engineyard-serverside version" + def version + puts EY::Serverside::VERSION + end end end end From 6c060d77128983ca4c052eb05c7025fd37ead8fe Mon Sep 17 00:00:00 2001 From: Dennis Walters Date: Mon, 10 Feb 2020 05:21:40 -0500 Subject: [PATCH 2/2] Downgrading contracts for 1.8.7 --- engineyard-serverside.gemspec | 1 + 1 file changed, 1 insertion(+) diff --git a/engineyard-serverside.gemspec b/engineyard-serverside.gemspec index 220c7cee..76278cce 100644 --- a/engineyard-serverside.gemspec +++ b/engineyard-serverside.gemspec @@ -29,6 +29,7 @@ Gem::Specification.new do |s| s.add_development_dependency('mime-types', '~>1.25') s.add_development_dependency('json', '<2') s.add_development_dependency('cucumber', '~> 1.3.20') + s.add_development_dependency('contracts', '= 0.9') s.add_development_dependency('aruba', '~> 0.14.14') s.add_development_dependency('factis', '~> 1.0.1')