【问题标题】:Test-Kitchen serverspec testing exception on windowsWindows上的Test-Kitchen serverspec测试异常
【发布时间】:2015-07-14 22:38:03
【问题描述】:

使用chef generate cookbook hello 命令时,生成的serverspec spec_helper.rb 文件将不适用于Test-Kitchen 1.4.1 和windows。

kitchen verify 命令在 windows 平台上会抛出以下内容:

C:/Users/vagrant/AppData/Local/Temp/verifier/gems/gems/specinfra-2.37.5/lib/specinfra/backend/exec.rb:98:in `spawn': No such file or directory - /bin/sh -c ls\ /etc/arch-release (Errno::ENOENT)
    from C:/Users/vagrant/AppData/Local/Temp/verifier/gems/gems/specinfra-2.37.5/lib/specinfra/backend/exec.rb:98:in `spawn_command'
    from C:/Users/vagrant/AppData/Local/Temp/verifier/gems/gems/specinfra-2.37.5/lib/specinfra/backend/exec.rb:13:in `block in run_command'
    from C:/Users/vagrant/AppData/Local/Temp/verifier/gems/gems/specinfra-2.37.5/lib/specinfra/backend/exec.rb:133:in `with_env'
    from C:/Users/vagrant/AppData/Local/Temp/verifier/gems/gems/specinfra-2.37.5/lib/specinfra/backend/exec.rb:12:in `run_command'
    from C:/Users/vagrant/AppData/Local/Temp/verifier/gems/gems/specinfra-2.37.5/lib/specinfra/helper/detect_os.rb:13:in `run_command'
    from C:/Users/vagrant/AppData/Local/Temp/verifier/gems/gems/specinfra-2.37.5/lib/specinfra/helper/detect_os/arch.rb:3:in `detect'
    from C:/Users/vagrant/AppData/Local/Temp/verifier/gems/gems/specinfra-2.37.5/lib/specinfra/helper/detect_os.rb:5:in `detect'
    from C:/Users/vagrant/AppData/Local/Temp/verifier/gems/gems/specinfra-2.37.5/lib/specinfra/helper/os.rb:24:in `block in detect_os'
    from C:/Users/vagrant/AppData/Local/Temp/verifier/gems/gems/specinfra-2.37.5/lib/specinfra/helper/os.rb:23:in `each'
    from C:/Users/vagrant/AppData/Local/Temp/verifier/gems/gems/specinfra-2.37.5/lib/specinfra/helper/os.rb:23:in `detect_os'
    from C:/Users/vagrant/AppData/Local/Temp/verifier/gems/gems/specinfra-2.37.5/lib/specinfra/helper/os.rb:9:in `os'
    from C:/Users/vagrant/AppData/Local/Temp/verifier/suites/serverspec/windows_spec.rb:4:in `<top (required)>'

【问题讨论】:

    标签: windows chef-infra test-kitchen serverspec


    【解决方案1】:

    更改 test-kitchen spec_helper.rb 文件以测试 windows 并相应地设置后端和操作系统,解决问题:

    require 'serverspec'
    
    if (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM).nil?
      set :backend, :exec
    else
      set :backend, :cmd
      set :os, family: 'windows'
    end
    

    然后您可以针对不同的平台进行测试,例如:

    require 'spec_helper'
    
    case os[:family]
    when 'windows'
      describe file('C:\Users\vagrant\foo.txt') do
        it { should be_file }
      end
    when 'darwin' # mac os x
      describe file('/user/vagrant/foo.txt') do
        it { should be_file }
      end
    when 'ubuntu'
      describe file('/home/vagrant/foo.txt') do
        it { should be_file }
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-27
      • 2016-02-16
      • 1970-01-01
      • 2017-01-20
      • 1970-01-01
      • 2019-05-31
      • 1970-01-01
      相关资源
      最近更新 更多