【发布时间】:2016-02-21 10:44:24
【问题描述】:
我在使用调用 Ruby 脚本然后调用 Rake 的 shell 命令时遇到了问题。
我已经构建了一个测试自动化框架,它在从命令行运行时执行以下操作(我在 OSX Yosemite 上):
- 调用设置一堆环境变量的 Ruby 脚本
-
然后它调用 Rake
rake = Rake.application rake.init rake.load_rakefile rake['execute_tests'].invoke -
Rake 文件运行 Cucumber 任务,然后测试框架愉快地启动浏览器并开始执行测试。
Cucumber::Rake::Task.new(:execute_tests) do |task| # => need to populate these so that the cucumber.yml parses ENV['TEST_WEB_PARALLEL_OS'] = "null" ENV['TEST_WEB_PARALLEL_OS_VERSION'] = "null" ENV['TEST_WEB_PARALLEL_BROWSER'] = "null" ENV['TEST_WEB_PARALLEL_BROWSER_VERSION'] = "null" #------------------------------------------------ # Specify rake profile #------------------------------------------------ runProfile = ENV['TEST_PLATFORM'].downcase + "_" + ENV['TEST_INTERFACE'].downcase + "_" + ENV['TEST_ENVIRONMENT'].downcase + "_" + ENV['TEST_TYPE'].downcase # => running headless if ENV['TEST_HEADLESS'] == "TRUE" # => need to truncate poltergeist - using the @poltergeist tag in cucumber was causing issues with other drivers ENV['TEST_BROWSER'] = "POLTER" reportProfile = ENV['TEST_PLATFORM'].downcase + "_" + ENV['TEST_INTERFACE'].downcase + "_" + ENV['TEST_ENVIRONMENT'].downcase + "_" + ENV['TEST_TYPE'].downcase + "_" + osHelper.getOperatingSystem.to_s + "_" + ENV['TEST_BROWSER'].downcase + "_hlst" # => running headed else reportProfile = ENV['TEST_PLATFORM'].downcase + "_" + ENV['TEST_INTERFACE'].downcase + "_" + ENV['TEST_ENVIRONMENT'].downcase + "_" + ENV['TEST_TYPE'].downcase + "_" + osHelper.getOperatingSystem.to_s + "_" + ENV['TEST_BROWSER'].downcase + "_lst" end #------------------------------------------------ # Set the env var then run profile #------------------------------------------------ ENV['REPORT_PROFILE'] = reportProfile ENV['RUN_PROFILE'] = runProfile task.profile = runProfile end
当我从命令行执行时,这一切都运行良好。问题是我想在测试框架的前面放一个基本的 GUI。我正在使用 Shoe3 来执行此操作。
当我从 GUI 调用我的初始 Ruby 脚本时...
`ruby ./exe/execute_web_tests_local_singlethread.rb salesforce integration regression headed chrome false false`
...然后代码会一直执行到下一行尝试执行为止:
rake.load_rakefile
此时代码故障转移。我没有看到来自子进程的任何输出或堆栈跟踪,因此我无法在知道进程在上面指定的行发生故障的情况下进行调试。
不幸的是,我已经尽可能具体了。如果有人能就我如何着手调查和/或解决这个问题提供任何指示,我将不胜感激。
我也尝试过使用 Open3,这导致了同样的问题。
干杯
【问题讨论】:
标签: ruby-on-rails ruby shell rake shoes