diff options
author | Tim Smith <tsmith@chef.io> | 2020-11-17 14:03:03 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-17 14:03:03 -0800 |
commit | c950eb1dd04df10f8ebc80f424fd39d948c3a1f9 (patch) | |
tree | a8590141e470605c67e6df931ada7e52bd26a1d3 | |
parent | f058ef1a5466ecde8b99517bf12229b891fdc42e (diff) | |
parent | 731eb2475b8f1bd43db2f2efc3940b5e25875f91 (diff) | |
download | chef-c950eb1dd04df10f8ebc80f424fd39d948c3a1f9.tar.gz |
Merge pull request #10460 from chef/csnapp/fix_habk2
Signed-off-by: Tim Smith <tsmith@chef.io>
-rw-r--r-- | .expeditor/config.yml | 11 | ||||
-rw-r--r-- | .expeditor/habitat-test.pipeline.yml | 34 | ||||
-rw-r--r-- | .expeditor/verify.habitat.pipeline.yml | 20 | ||||
-rw-r--r-- | .expeditor/verify.pipeline.yml | 30 | ||||
-rw-r--r-- | habitat/plan.ps1 | 22 | ||||
-rw-r--r-- | habitat/plan.sh | 143 | ||||
-rw-r--r-- | habitat/tests/spec.ps1 | 9 | ||||
-rw-r--r-- | habitat/tests/test.pester.ps1 | 17 | ||||
-rwxr-xr-x | habitat/tests/test.sh | 37 | ||||
-rwxr-xr-x | scripts/ci/install-hab.sh | 24 | ||||
-rwxr-xr-x | scripts/ci/verify-plan.sh | 38 | ||||
-rw-r--r-- | spec/functional/shell_spec.rb | 10 |
12 files changed, 276 insertions, 119 deletions
diff --git a/.expeditor/config.yml b/.expeditor/config.yml index db810bf08e..73c7dfb100 100644 --- a/.expeditor/config.yml +++ b/.expeditor/config.yml @@ -26,14 +26,6 @@ docker_images: pipelines: - verify: public: true - - verify/habitat: - description: > - A temporary pipeline to verify the habitat plans. Performs a local build, - tests it, then throws it away. Its steps should eventually move into the - "verify" pipeline (if fast enough) or this pipeline should be removed in - favor of learning about packaging problems after merge. - definition: .expeditor/verify.habitat.pipeline.yml - trigger: default - habitat/build - habitat/test: definition: .expeditor/habitat-test.pipeline.yml @@ -106,10 +98,11 @@ subscriptions: - bash:.expeditor/update_dockerfile.sh - built_in:tag_docker_image - built_in:publish_rubygems + - built_in:promote_habitat_packages - built_in:notify_chefio_slack_channels # the habitat chain - workload: buildkite_hab_build_group_published:{{agent_id}}:* actions: # when all of the hab package publish to the unstable channel, test and promote them - - trigger_pipeline:habitat/test
\ No newline at end of file + - trigger_pipeline:habitat/test diff --git a/.expeditor/habitat-test.pipeline.yml b/.expeditor/habitat-test.pipeline.yml index 8a71df9c17..7d2cc8f653 100644 --- a/.expeditor/habitat-test.pipeline.yml +++ b/.expeditor/habitat-test.pipeline.yml @@ -9,12 +9,36 @@ expeditor: steps: +- label: ":linux: Validate Linux" + commands: + - sudo ./scripts/ci/install-hab.sh x86_64-linux + - 'echo "--- :hammer_and_wrench: Installing $EXPEDITOR_PKG_IDENTS_CHEFINFRACLIENTX86_64LINUX"' + - sudo hab pkg install $EXPEDITOR_PKG_IDENTS_CHEFINFRACLIENTX86_64LINUX + - sudo ./habitat/tests/test.sh $EXPEDITOR_PKG_IDENTS_CHEFINFRACLIENTX86_64LINUX + expeditor: + executor: + linux: + privileged: true + single-use: true + +- label: ":linux: Validate Linux (kernel2)" + commands: + - sudo ./scripts/ci/install-hab.sh x86_64-linux-kernel2 + - 'echo "--- :hammer_and_wrench: Installing $EXPEDITOR_PKG_IDENTS_CHEFINFRACLIENTX86_64LINUXKERNEL2"' + - sudo hab pkg install $EXPEDITOR_PKG_IDENTS_CHEFINFRACLIENTX86_64LINUXKERNEL2 + - sudo ./habitat/tests/test.sh $EXPEDITOR_PKG_IDENTS_CHEFINFRACLIENTX86_64LINUXKERNEL2 + expeditor: + executor: + linux: + privileged: true + single-use: true + - label: ":windows: Validate Habitat Builds of Chef Infra" commands: - - powershell -File "./scripts/ci/ensure-minimum-viable-hab.ps1" + - powershell -File ./scripts/ci/ensure-minimum-viable-hab.ps1 - 'Write-Host "--- :hammer_and_wrench: Installing $EXPEDITOR_PKG_IDENTS_CHEFINFRACLIENTX86_64WINDOWS"' - - hab pkg install "$EXPEDITOR_PKG_IDENTS_CHEFINFRACLIENTX86_64WINDOWS" - - powershell -File "./habitat/tests/test.ps1" -PackageIdentifier "$EXPEDITOR_PKG_IDENTS_CHEFINFRACLIENTX86_64WINDOWS" + - hab pkg install $EXPEDITOR_PKG_IDENTS_CHEFINFRACLIENTX86_64WINDOWS + - powershell -File ./habitat/tests/test.ps1 -PackageIdentifier $EXPEDITOR_PKG_IDENTS_CHEFINFRACLIENTX86_64WINDOWS expeditor: executor: windows: @@ -26,7 +50,9 @@ steps: - label: ":habicat: Promoting packages to the current channel." commands: - - hab pkg promote "$EXPEDITOR_PKG_IDENTS_CHEFINFRACLIENTX86_64WINDOWS" current x86_64-windows + - hab pkg promote $EXPEDITOR_PKG_IDENTS_CHEFINFRACLIENTX86_64LINUX current x86_64-linux + - hab pkg promote $EXPEDITOR_PKG_IDENTS_CHEFINFRACLIENTX86_64LINUXKERNEL2 current x86_64-linux-kernel2 + - hab pkg promote $EXPEDITOR_PKG_IDENTS_CHEFINFRACLIENTX86_64WINDOWS current x86_64-windows expeditor: executor: docker: diff --git a/.expeditor/verify.habitat.pipeline.yml b/.expeditor/verify.habitat.pipeline.yml deleted file mode 100644 index 9c50312db5..0000000000 --- a/.expeditor/verify.habitat.pipeline.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -expeditor: - defaults: - buildkite: - timeout_in_minutes: 60 - retry: - automatic: - limit: 1 - -steps: - -- label: "Windows plan" - commands: - - scripts/ci/verify-plan.ps1 - expeditor: - executor: - windows: - privileged: true - single-use: true - shell: ["powershell", "-Command"] diff --git a/.expeditor/verify.pipeline.yml b/.expeditor/verify.pipeline.yml index ddfd9617f8..96dd9be35e 100644 --- a/.expeditor/verify.pipeline.yml +++ b/.expeditor/verify.pipeline.yml @@ -535,3 +535,33 @@ steps: linux: privileged: true single-use: true + +- label: ":habicat: Linux plan" + commands: + - sudo ./scripts/ci/install-hab.sh 'x86_64-linux' + - sudo ./scripts/ci/verify-plan.sh + timeout_in_minutes: 60 + expeditor: + executor: + linux: + privileged: true + single-use: true + +- label: ":habicat: Linux plan (kernel2)" + commands: + - sudo ./scripts/ci/install-hab.sh 'x86_64-linux-kernel2' + - sudo ./scripts/ci/verify-plan.sh + timeout_in_minutes: 60 + expeditor: + executor: + linux: + privileged: true + single-use: true + +- label: ":habicat: Windows plan" + commands: + - ./scripts/ci/verify-plan.ps1 + expeditor: + executor: + windows: + privileged: true diff --git a/habitat/plan.ps1 b/habitat/plan.ps1 index 719f5e7a5a..5462ff56ff 100644 --- a/habitat/plan.ps1 +++ b/habitat/plan.ps1 @@ -13,6 +13,7 @@ $pkg_bin_dirs=@( $pkg_deps=@( "core/cacerts" "chef/ruby-plus-devkit" + "chef/chef-powershell-shim" ) function Invoke-Begin { @@ -44,6 +45,7 @@ function Invoke-Download() { try { Push-Location (Resolve-Path "$PLAN_CONTEXT/../").Path git archive --format=zip --output="${HAB_CACHE_SRC_PATH}/${pkg_filename}" HEAD + if (-not $?) { throw "unable to create archive of source" } } finally { Pop-Location } @@ -62,6 +64,7 @@ function Invoke-Prepare { Write-BuildLine " ** Configuring bundler for this build environment" bundle config --local without server docgen maintenance pry travis integration ci chefstyle + if (-not $?) { throw "unable to configure bundler to restrict gems to be installed" } bundle config --local jobs 4 bundle config --local retry 5 bundle config --local silence_root_warning 1 @@ -74,20 +77,29 @@ function Invoke-Build { try { Push-Location "${HAB_CACHE_SRC_PATH}/${pkg_dirname}" + $env:_BUNDER_WINDOWS_DLLS_COPIED = "1" + Write-BuildLine " ** Using bundler to retrieve the Ruby dependencies" - bundle install - Write-BuildLine " ** Running the chef project's 'rake install' to install the path-based gems so they look like any other installed gem." - bundle exec rake install # this needs to be 'bundle exec'd because a Rakefile makes reference to Bundler - Write-BuildLine " ** Also 'rake install' any gem sourced as a git reference." + bundle install --jobs=3 --retry=3 + if (-not $?) { throw "unable to install gem dependencies" } + Write-BuildLine " ** 'rake install' any gem sourced as a git reference so they'll look like regular gems." foreach($git_gem in (Get-ChildItem "$env:GEM_HOME/bundler/gems")) { try { Push-Location $git_gem - Write-BuildLine " -- and $git_gem too" + Write-BuildLine " -- installing $git_gem" rake install # this needs to NOT be 'bundle exec'd else bundler complains about dev deps not being installed + if (-not $?) { throw "unable to install $git_gem as a plain old gem" } } finally { Pop-Location } } + Write-BuildLine " ** Running the chef project's 'rake install' to install the path-based gems so they look like any other installed gem." + bundle exec rake install # this needs to be 'bundle exec'd because a Rakefile makes reference to Bundler + if (-not $?) { + Write-Warning " -- That didn't work. Let's try again." + bundle exec rake install # this needs to be 'bundle exec'd because a Rakefile makes reference to Bundler + if (-not $?) { throw "unable to install the gems that live in directories within this repo" } + } } finally { Pop-Location } diff --git a/habitat/plan.sh b/habitat/plan.sh index 949d9d9021..2bc13785d8 100644 --- a/habitat/plan.sh +++ b/habitat/plan.sh @@ -1,9 +1,13 @@ -pkg_name=chef-infra-client -pkg_origin=chef +_chef_client_ruby="core/ruby26" +pkg_name="chef-infra-client" +pkg_origin="chef" pkg_maintainer="The Chef Maintainers <humans@chef.io>" pkg_description="The Chef Infra Client" pkg_license=('Apache-2.0') -pkg_bin_dirs=(bin) +pkg_bin_dirs=( + bin + vendor/bin +) pkg_build_deps=( core/make core/gcc @@ -11,13 +15,12 @@ pkg_build_deps=( ) pkg_deps=( core/glibc - core/ruby26 + $_chef_client_ruby core/libxml2 core/libxslt core/libiconv core/xz core/zlib - core/bundler/1.17.3 core/openssl core/cacerts core/libffi @@ -52,10 +55,35 @@ do_verify() { return 0 } +do_setup_environment() { + push_runtime_env GEM_PATH "${pkg_prefix}/vendor" + + set_runtime_env APPBUNDLER_ALLOW_RVM "true" # prevent appbundler from clearing out the carefully constructed runtime GEM_PATH + set_runtime_env SSL_CERT_FILE "$(pkg_path_for cacerts)/ssl/cert.pem" + set_runtime_env LANG "en_US.UTF-8" + set_runtime_env LC_CTYPE "en_US.UTF-8" +} + do_prepare() { - export OPENSSL_LIB_DIR=$(pkg_path_for openssl)/lib - export OPENSSL_INCLUDE_DIR=$(pkg_path_for openssl)/include - export SSL_CERT_FILE=$(pkg_path_for cacerts)/ssl/cert.pem + export GEM_HOME="${pkg_prefix}/vendor" + export OPENSSL_LIB_DIR="$(pkg_path_for openssl)/lib" + export OPENSSL_INCLUDE_DIR="$(pkg_path_for openssl)/include" + export SSL_CERT_FILE="$(pkg_path_for cacerts)/ssl/cert.pem" + export CPPFLAGS="${CPPFLAGS} ${CFLAGS}" + + ( cd "$CACHE_PATH" + gem install bundler -v 1.17.3 + bundle config --local build.nokogiri "--use-system-libraries \ + --with-zlib-dir=$(pkg_path_for zlib) \ + --with-xslt-dir=$(pkg_path_for libxslt) \ + --with-xml2-include=$(pkg_path_for libxml2)/include/libxml2 \ + --with-xml2-lib=$(pkg_path_for libxml2)/lib" + bundle config --local jobs "$(nproc)" + bundle config --local without server docgen maintenance pry travis integration ci chefstyle + bundle config --local shebang "$(pkg_path_for "$_chef_client_ruby")/bin/ruby" + bundle config --local retry 5 + bundle config --local silence_root_warning 1 + ) build_line "Setting link for /usr/bin/env to 'coreutils'" if [ ! -f /usr/bin/env ]; then @@ -64,61 +92,46 @@ do_prepare() { } do_build() { - local _bundler_dir - local _libxml2_dir - local _libxslt_dir - local _zlib_dir - export CPPFLAGS - export GEM_HOME - export GEM_PATH - export NOKOGIRI_CONFIG - - _bundler_dir=$(pkg_path_for bundler) - _libxml2_dir=$(pkg_path_for libxml2) - _libxslt_dir=$(pkg_path_for libxslt) - _zlib_dir=$(pkg_path_for zlib) - - CPPFLAGS="${CPPFLAGS} ${CFLAGS}" - GEM_HOME=${pkg_prefix}/bundle - GEM_PATH=${_bundler_dir}:${GEM_HOME} - NOKOGIRI_CONFIG="--use-system-libraries \ - --with-zlib-dir=${_zlib_dir} \ - --with-xslt-dir=${_libxslt_dir} \ - --with-xml2-include=${_libxml2_dir}/include/libxml2 \ - --with-xml2-lib=${_libxml2_dir}/lib" - - - build_line "Executing bundle install inside hab-cache path. ($CACHE_PATH/chef-config)" - ( cd "$CACHE_PATH/chef-config" || exit_with "unable to enter hab-cache directory" 1 - bundle config --local build.nokogiri "${NOKOGIRI_CONFIG}" - bundle config --local silence_root_warning 1 - _bundle_install "${pkg_prefix}/bundle" + ( cd "$CACHE_PATH" || exit_with "unable to enter hab-cache directory" 1 + build_line "Installing gem dependencies ..." + bundle install --jobs=3 --retry=3 + build_line "Installing this project's gems ..." + bundle exec rake install + for gem in $GEM_HOME/bundler/gems/*; do + ( cd $gem + build_line "Installing gems from git repos properly ..." + rake install + ) + done ) - - build_line "Executing bundle install inside source path. ($SRC_PATH)" - _bundle_install "${pkg_prefix}/bundle" } do_install() { - build_line "Copying directories from source to pkg_prefix" - mkdir -p "${pkg_prefix}/chef" - for dir in bin chef-bin chef-config chef-utils lib chef.gemspec Gemfile Gemfile.lock; do - cp -rv "${SRC_PATH}/${dir}" "${pkg_prefix}/chef/" - done - - # If we generated them on install, bundler thinks our source is in $HAB_CACHE_SOURCE_PATH - build_line "Generating binstubs with the correct path" - ( cd "$pkg_prefix/chef" || exit_with "unable to enter pkg prefix directory" 1 - _bundle_install \ - "${pkg_prefix}/bundle" \ - --local \ - --quiet \ - --binstubs "${pkg_prefix}/bin" + ( cd "$pkg_prefix" || exit_with "unable to enter pkg prefix directory" 1 + export BUNDLE_GEMFILE="${CACHE_PATH}/Gemfile" + build_line "** fixing binstub shebangs" + fix_interpreter "${pkg_prefix}/vendor/bin/*" "$_chef_client_ruby" bin/ruby + export BUNDLE_GEMFILE="${CACHE_PATH}/Gemfile" + for gem in chef-bin chef inspec-core-bin ohai; do + build_line "** generating binstubs for $gem with precise version pins" + appbundler $CACHE_PATH $pkg_prefix/bin $gem + done ) +} - build_line "Fixing bin/ruby and bin/env interpreters" - fix_interpreter "${pkg_prefix}/bin/*" core/coreutils bin/env - fix_interpreter "${pkg_prefix}/bin/*" core/ruby26 bin/ruby +do_after() { + build_line "Trimming the fat ..." + + # We don't need the cache of downloaded .gem files ... + rm -r "$pkg_prefix/vendor/cache" + # ... or bundler's cache of git-ref'd gems + rm -r "$pkg_prefix/vendor/bundler" + # We don't need the gem docs. + rm -r "$pkg_prefix/vendor/doc" + # We don't need to ship the test suites for every gem dependency, + # only Chef's for package verification. + find "$pkg_prefix/vendor/gems" -name spec -type d | grep -v "chef-${pkg_version}" \ + | while read spec_dir; do rm -r "$spec_dir"; done } do_end() { @@ -131,19 +144,3 @@ do_end() { do_strip() { return 0 } - -# Helper function to wrap up some repetitive bundle install flags -_bundle_install() { - local path - path="$1" - shift - - bundle install ${*:-} \ - --jobs "$(nproc)" \ - --without development:test \ - --path "$path" \ - --shebang="$(pkg_path_for "core/ruby26")/bin/ruby" \ - --no-clean \ - --retry 5 \ - --standalone -} diff --git a/habitat/tests/spec.ps1 b/habitat/tests/spec.ps1 index ab1656b221..6cbdd406c2 100644 --- a/habitat/tests/spec.ps1 +++ b/habitat/tests/spec.ps1 @@ -10,8 +10,15 @@ $chef_gem_root = (hab pkg exec $PackageIdentifier gem.cmd which chef | Split-Pat try { Push-Location $chef_gem_root $env:PATH = "C:\hab\bin;$env:PATH" + + # Put chef's GEM_PATH in the machine environment so that the windows service + # tests will be able to consume the win32-service gem + $pkgEnv = hab pkg env $PackageIdentifier + $gemPath = $pkgEnv | Where-Object { $_.StartsWith("`$env:GEM_PATH=") } + SETX GEM_PATH $($gemPath.Split("=")[1]) /m + hab pkg binlink --force $PackageIdentifier - /hab/bin/rspec --format progress --tag ~executables --tag ~choco_installed spec/functional + /hab/bin/rspec --format documentation --tag ~executables --tag ~choco_installed spec/functional if (-not $?) { throw "functional testing failed"} } finally { Pop-Location diff --git a/habitat/tests/test.pester.ps1 b/habitat/tests/test.pester.ps1 index a5f665c9de..56f31e9a2f 100644 --- a/habitat/tests/test.pester.ps1 +++ b/habitat/tests/test.pester.ps1 @@ -12,8 +12,21 @@ Describe "chef-infra-client" { $? | Should be $true } + <# + At some point hab's argument parsing changed and it started interpreting the trailing `--version` as being + an argument passed to hab instead of an argument to the command passed to `hab pkg exec`. + + Powershell 5.1 and 7 appear to differ in how they treat following arguments as well, such that these two + versions of the command fail in powershell 5.1 (which is currently what is running in the windows machines + in Buildkite) but pass in powershell 7 (which is currently what is running in a stock Windows 10 VM). + + $the_version = (hab pkg exec $PackageIdentifier chef-client.bat '--version' | Out-String).split(':')[1].Trim() + $the_version = (hab pkg exec $PackageIdentifier chef-client.bat --version | Out-String).split(':')[1].Trim() + + This version of the command passes in powershell 5.1 but fails in powershell 7. + #> It "is the expected version" { - $the_version = (hab pkg exec $PackageIdentifier chef-client.bat --version | Out-String).split(':')[1].Trim() + $the_version = (hab pkg exec $PackageIdentifier chef-client.bat -- --version | Out-String).split(':')[1].Trim() $the_version | Should be $PackageVersion } } @@ -52,4 +65,4 @@ Describe "chef-infra-client" { $? | Should be $true } } -}
\ No newline at end of file +} diff --git a/habitat/tests/test.sh b/habitat/tests/test.sh new file mode 100755 index 0000000000..c28ab8b2cf --- /dev/null +++ b/habitat/tests/test.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +set -euo pipefail + +export CHEF_LICENSE="accept-no-persist" +export HAB_LICENSE="accept-no-persist" +export HAB_NONINTERACTIVE="true" + +project_root="$(git rev-parse --show-toplevel)" +pkg_ident="$1" + +# print error message followed by usage and exit +error () { + local message="$1" + + echo -e "\nERROR: ${message}\n" >&2 + + exit 1 +} + +[[ -n "$pkg_ident" ]] || error 'no hab package identity provided' + +package_version=$(awk -F / '{print $3}' <<<"$pkg_ident") + +cd "${project_root}" + +echo "--- :mag_right: Testing ${pkg_ident} executables" +actual_version=$(hab pkg exec "${pkg_ident}" chef-client -- --version | sed 's/.*: //') +[[ "$package_version" = "$actual_version" ]] || error "chef-client is not the expected version. Expected '$package_version', got '$actual_version'" + +for executable in 'chef-client' 'ohai' 'chef-shell' 'chef-apply' 'knife' 'chef-solo'; do + echo -en "\t$executable = " + hab pkg exec "${pkg_ident}" "${executable}" -- --version || error "${executable} failed to execute properly" +done + +echo "--- :mag_right: Testing ${pkg_ident} functionality" +hab pkg exec "${pkg_ident}" rspec --tag ~executables spec/functional || error 'failures during rspec tests' diff --git a/scripts/ci/install-hab.sh b/scripts/ci/install-hab.sh new file mode 100755 index 0000000000..75e910bfab --- /dev/null +++ b/scripts/ci/install-hab.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +set -euo pipefail + +export HAB_LICENSE="accept" +export HAB_NONINTERACTIVE="true" + +hab_target="$1" + +# print error message followed by usage and exit +error () { + local message="$1" + + echo -e "\nERROR: ${message}\n" >&2 + + exit 1 +} + +[[ -n "$hab_target" ]] || error 'no hab target provided' + +echo "--- :habicat: Installing latest version of Habitat" +rm -rf /hab +curl https://raw.githubusercontent.com/habitat-sh/habitat/master/components/hab/install.sh | bash -s -- -t "$hab_target" +hab license accept diff --git a/scripts/ci/verify-plan.sh b/scripts/ci/verify-plan.sh new file mode 100755 index 0000000000..b207334267 --- /dev/null +++ b/scripts/ci/verify-plan.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +set -euo pipefail + +export HAB_ORIGIN='ci' +export PLAN='chef-infra-client' +export CHEF_LICENSE="accept-no-persist" +export HAB_LICENSE="accept-no-persist" +export HAB_NONINTERACTIVE="true" + +# print error message followed by usage and exit +error () { + local message="$1" + + echo -e "\nERROR: ${message}\n" >&2 + + exit 1 +} + +echo "--- :8ball: :linux: Verifying $PLAN" +project_root="$(git rev-parse --show-toplevel)" + +echo "--- :key: Generating fake origin key" +hab origin key generate "$HAB_ORIGIN" + +echo "--- :construction: Building $PLAN (solely for verification testing)" +( + cd "$project_root" || error 'cannot change directory to project root' + DO_CHECK=true hab pkg build . || error 'unable to build' +) + +source "${project_root}/results/last_build.env" || error 'unable to determine details about this build' + +echo "--- :hammer_and_wrench: Installing $pkg_ident" +hab pkg install "${project_root}/results/$pkg_artifact" || error 'unable to install this build' + +echo "--- :mag_right: Testing $PLAN" +${project_root}/habitat/tests/test.sh "$pkg_ident" || error 'failures during test of executables' diff --git a/spec/functional/shell_spec.rb b/spec/functional/shell_spec.rb index 53f30c4c4f..357e8f07af 100644 --- a/spec/functional/shell_spec.rb +++ b/spec/functional/shell_spec.rb @@ -98,13 +98,13 @@ describe Shell do [output, e.status] end - it "boots correctly with -lauto" do + it "boots correctly with -lauto", :executables do output, exitstatus = run_chef_shell_with("-lauto") expect(output).to include("done") expect(exitstatus).to eq(0) end - it "sets the log_level from the command line" do + it "sets the log_level from the command line", :executables do output, exitstatus = run_chef_shell_with("-lfatal") do |out, keyboard| show_log_level_code = %q[puts "===#{Chef::Log.level}==="] keyboard.puts(show_log_level_code) @@ -115,13 +115,13 @@ describe Shell do end context "on solo mode" do - it "starts correctly" do + it "starts correctly", :executables do output, exitstatus = run_chef_shell_with("--solo") expect(output).to include("done") expect(exitstatus).to eq(0) end - it "should be able to use the API" do + it "should be able to use the API", :executables do output, exitstatus = run_chef_shell_with("-s") do |out, keyboard| simple_api_get = "api.get('data')" keyboard.puts(simple_api_get) @@ -132,7 +132,7 @@ describe Shell do end end - it "sets the override_runlist from the command line" do + it "sets the override_runlist from the command line", :executables do output, exitstatus = run_chef_shell_with("-o 'override::foo,override::bar'") do |out, keyboard| show_recipes_code = %q[puts "#{node["recipes"].inspect}"] keyboard.puts(show_recipes_code) |