Windows上的第一个“应该被安装”总是在Windows上失败

g主教

首先,我在Ruby 1.9.3p550中使用serverspec 2.3.1和specinfra 2.4.2

我仍在调查问题,但我想如果有人之前遇到过问题,我想在这里提出建议(如果没有遇到问题,我会找出来的,也许下一个遇到问题的人会在Google上找到此答案)。

目标是拥有一个规范文件,其中包含应在测试系统上安装的所有软件。但是,奇怪的是,无论我写什么,我第一次做it { should be_installed }都会失败。没有例外。

下面的代码显示了我的意思:

require 'acceptance_helper'

describe package('7-Zip 9.22 (x64 edition)') do
  it { should be_installed }
end

describe package('7-Zip 9.22 (x64 edition)') do
  it { should be_installed }
end

describe package('Zend Server') do
  it { should be_installed }
end

describe package('SQL Server 2012 Management Studio') do
  it { should be_installed }
end

describe package('Microsoft SQL Server 2012 (64-bit)') do
  it { should be_installed }
end

当我运行此文件时,我将获得第一个测试,表明未安装7-Zip,第二个测试将表明它已安装。我在第一次测试中所做的任何事情都会做同样的事情。

Package "7-Zip 9.22 (x64 edition)"
  should be installed (FAILED - 1)

Package "7-Zip 9.22 (x64 edition)"
  should be installed

Package "Zend Server"
  should be installed

Package "SQL Server 2012 Management Studio"
  should be installed

Package "Microsoft SQL Server 2012 (64-bit)"
  should be installed

Failures:

  1) Package "7-Zip 9.22 (x64 edition)" should be installed
     Failure/Error: it { should be_installed }
     TypeError:
       can't convert Symbol into Integer
       uname -s
       #< CLIXML
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04"><S S="Error">The term 'uname' is not recognized as the name of a cmdlet, function, script fi_x000D__x000A_</S><S S="Error">le, or operable program. Check the spelling of the name, or if a path was inclu_x000D__x000A_</S><S S="Error">ded, verify that the path is correct and try again._x000D__x000A_</S><S S="Error">At line:1 char:6_x000D__x000A_</S><S S="Error">+ uname &lt;&lt;&lt;&lt;  -s_x000D__x000A_</S><S S="Error">    + CategoryInfo          : ObjectNotFound: (uname:String) [], CommandNotFou _x000D__x000A_</S><S S="Error">   ndException_x000D__x000A_</S><S S="Error">    + FullyQualifiedErrorId : CommandNotFoundException_x000D__x000A_</S><S S="Error"> _x000D__x000A_</S></Objs>
 # ./spec/acceptance/192.168.0.70/all_required_applications_are_installed_spec.rb:4:in `block (2 levels) in <top (required)>'

Finished in 25.96 seconds (files took 0.99763 seconds to load)
5 examples, 1 failure

Failed examples:

rspec ./spec/acceptance/192.168.0.70/all_required_applications_are_installed_spec.rb:4 # Package "7-Zip 9.22 (x64 edition)" should be installed

对我来说,不真实的是,只有第一个测试会失败,所以我真的不确定会发生什么。我将随时调查并更新此帖子,但是如果有人遇到过此问题,我真的很想听听您如何/如果解决了此问题!

编辑:随着错误消息以及ServerSpecs在Windows上测试软件包的方式,我认为该命令执行不正确,但事实证明该错误甚至在运行该命令之前就发生了。至少看起来像这样,因为在Intellij IDEA中,当我在specinfra/command/windows/base/package.rbexec "(FindInstalledApplication -appName '#{package}' #{version_selection}) -eq $true")的第7行上放置一个断点时,从未达到该断点,该测试失败并进入下一个测试。

编辑2:设法进一步隔离了问题,似乎在中发生了specinfra\helper\os.rb我是Ruby的新手,因此调试起来有点困难,但是我猜想在任何ServerSpec / SpecInfra用于检测OS的首次运行时,某些东西都没有正确初始化。

g主教

好吧,事实证明我很傻,无法正确阅读文档。他们在Serverspec的文档中说,需要在spec_helper中指定Windows操作系统,而我只是从Windows文档中复制/粘贴了示例帮助程序

现在这是我的帮助文件,请注意以下set :os

require 'serverspec'
require 'winrm'
require 'yaml'

set :backend, :winrm
set :os, :family => 'windows', :release => '2008', :arch => 'x64'

base_path = File.dirname(File.expand_path(__FILE__))
config = YAML.load_file(File.join(base_path, 'config.yml'))

user = 'vagrant'
pass = 'vagrant'
endpoint = "http://#{config['host_ip']}:5985/wsman"

winrm = ::WinRM::WinRMWebService.new(endpoint, :ssl, :user => user, :pass => pass, :basic_auth_only => true)
winrm.set_timeout 300 # 5 minutes max timeout for any operation
Specinfra.configuration.winrm = winrm

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在第二个hardrive上安装Windows(Ubuntu上的第一个)

来自分类Dev

Windows 7总是在关机按钮上显示一个感叹号

来自分类Dev

Flutter并非总是在Windows上运行

来自分类Dev

Windows 10上的Solr入门-我的第一个本地(非云)集合/核心

来自分类Dev

Windows 10 上的 Android Studio 2.3 在第一个 gradle 构建时永远等待

来自分类Dev

Angular总是在选择元素中选择第一个选项

来自分类Dev

带有lambda的min是否总是在python中返回第一个值?

来自分类Dev

didSelectItemAtIndexPath并不总是在UICollectionView的第一个元素上调用

来自分类Dev

Xpath 总是在 JAVA 中返回 XML 的第一个子节点

来自分类Dev

Python HDBScan类在进入第一个函数之前总是在第二次迭代时失败

来自分类Dev

如果在第一个实例上安装了任何特定的.dll,则Windows Azure云服务自动缩放功能可以工作吗?

来自分类Dev

在 json 元素数组上使用 Junit 断言在第一个元素上失败

来自分类Dev

在我的第一个VPS上的Ubuntu Ubuntu上安装ruby

来自分类Dev

键盘重点放在Windows资源管理器中的第一个文件上吗?

来自分类Dev

为什么 Windows 上的 Laravel 迁移会迁移第一个表而不迁移其他表?

来自分类Dev

通过嵌套的对象集合进行递归总是在第一个叶子节点处终止

来自分类Dev

jQuery,:第一个在列表上,但根本不在第一个

来自分类Dev

.NET列表上的随机访问很慢,但是如果我总是引用第一个元素怎么办?

来自分类Dev

第一个磁盘驱动器上的Windows 10(UEFI)/第二个磁盘驱动器上的Ubuntu(Legacy)

来自分类Dev

如何在失败的命令的第一个实例上终止shell(搜索字符串的第一个实例并追加到它的后面)

来自分类Dev

如何在失败的命令的第一个实例上终止shell(搜索字符串的第一个实例并追加到它的后面)

来自分类Dev

DIV上的第一个孩子选择无效

来自分类Dev

在第一个空行上写入CSV

来自分类Dev

仅在第一个OnCreate上运行代码

来自分类Dev

在第一个RX订阅上引发UnsubscriptionError

来自分类Dev

第一个孩子在自己的行上

来自分类Dev

仅在第一个节点上使用:: before

来自分类Dev

在onCreateView上的if语句用于第一个视图

来自分类Dev

第一个视频在iPad上播放(AVPlayer)

Related 相关文章

  1. 1

    在第二个hardrive上安装Windows(Ubuntu上的第一个)

  2. 2

    Windows 7总是在关机按钮上显示一个感叹号

  3. 3

    Flutter并非总是在Windows上运行

  4. 4

    Windows 10上的Solr入门-我的第一个本地(非云)集合/核心

  5. 5

    Windows 10 上的 Android Studio 2.3 在第一个 gradle 构建时永远等待

  6. 6

    Angular总是在选择元素中选择第一个选项

  7. 7

    带有lambda的min是否总是在python中返回第一个值?

  8. 8

    didSelectItemAtIndexPath并不总是在UICollectionView的第一个元素上调用

  9. 9

    Xpath 总是在 JAVA 中返回 XML 的第一个子节点

  10. 10

    Python HDBScan类在进入第一个函数之前总是在第二次迭代时失败

  11. 11

    如果在第一个实例上安装了任何特定的.dll,则Windows Azure云服务自动缩放功能可以工作吗?

  12. 12

    在 json 元素数组上使用 Junit 断言在第一个元素上失败

  13. 13

    在我的第一个VPS上的Ubuntu Ubuntu上安装ruby

  14. 14

    键盘重点放在Windows资源管理器中的第一个文件上吗?

  15. 15

    为什么 Windows 上的 Laravel 迁移会迁移第一个表而不迁移其他表?

  16. 16

    通过嵌套的对象集合进行递归总是在第一个叶子节点处终止

  17. 17

    jQuery,:第一个在列表上,但根本不在第一个

  18. 18

    .NET列表上的随机访问很慢,但是如果我总是引用第一个元素怎么办?

  19. 19

    第一个磁盘驱动器上的Windows 10(UEFI)/第二个磁盘驱动器上的Ubuntu(Legacy)

  20. 20

    如何在失败的命令的第一个实例上终止shell(搜索字符串的第一个实例并追加到它的后面)

  21. 21

    如何在失败的命令的第一个实例上终止shell(搜索字符串的第一个实例并追加到它的后面)

  22. 22

    DIV上的第一个孩子选择无效

  23. 23

    在第一个空行上写入CSV

  24. 24

    仅在第一个OnCreate上运行代码

  25. 25

    在第一个RX订阅上引发UnsubscriptionError

  26. 26

    第一个孩子在自己的行上

  27. 27

    仅在第一个节点上使用:: before

  28. 28

    在onCreateView上的if语句用于第一个视图

  29. 29

    第一个视频在iPad上播放(AVPlayer)

热门标签

归档