【问题标题】:Execute tests for another app from a rake file从 rake 文件执行另一个应用程序的测试
【发布时间】:2011-12-28 12:51:39
【问题描述】:

我正在尝试在另一个项目的 rake 文件中为一个项目执行黄瓜测试。

目前我正在尝试这个:

system "cd /path/to/project;rvm use --create 1.9.2-p290@test; cucumber features/test.feature"

这适用于 cd,如果我在 rvm 使用后运行 which ruby​​,rvm 似乎可以工作......但问题是黄瓜 gem 似乎是从当前文件夹调用的(不是测试文件夹的应用程序)。

我得到的错误是:

cucumber is not part of the bundle. Add it to Gemfile. (Gem::LoadError)

似乎使用的是 cucumber 的本地 gemset 版本,而不是 @test gemset。

对此有什么想法吗?

或者有没有更好的方法来为另一个依赖 rvm 和不同包的项目运行黄瓜测试?

【问题讨论】:

    标签: ruby gem cucumber rake bundler


    【解决方案1】:

    我也一直在尝试做同样的事情;从另一个“控制”应用程序内部运行应用程序的测试(或任何 rake 任务)。

    原因:(只是这样我就不会得到“到底为什么?”)

    我正在尝试构建一个应用程序(而不是像 Cruisecontrol.rb 一样),它可以监控、安排和审查一组应用程序的规范。

    在浏览了 Cruisecontrol 的源代码后,我发现 Bundler 提供了一个解决方案;

    Bundler.with_clean_env do 
      system "rake spec"
    end
    

    https://github.com/thoughtworks/cruisecontrol.rb/blob/master/lib/platform.rb的第56行

    从包中退出,命令在没有控制应用程序的 gem 的情况下运行。

    但是很可能,该命令使用bundle exec,然后停止工作。

    Bundler.with_clean_env { system "bundle exec rake spec" }
    

    你又回到了完全相同的问题。这是由一些仍然存在并被子 shell 继承的捆绑程序变量引起的。完整(非常好的)解释here

    解决方案是像这样在 bundler 上更改 with_clean_env 方法;

    BUNDLER_VARS = %w(BUNDLE_GEMFILE RUBYOPT BUNDLE_BIN_PATH)
    module Bundler
      def self.with_clean_env &blk
        bundled_env = ENV.to_hash
        BUNDLER_VARS.each{ |var| ENV.delete(var) }
        yield
      ensure
        ENV.replace(bundled_env.to_hash)     
      end
    end
    

    以上代码来自here

    我将它放在我的控制应用程序的 environment.rb 中(它可能应该在初始化程序中?)现在我可以从控制应用程序中运行另一个应用程序的规范。

    #in control app
    result = nil
    Dir.chdir(test_app_path) #move into test app
    Bundler.with_clean_env { result = `bundle exec rake spec` } #run test apps specs
    puts result #display result inside control app
    

    【讨论】:

      【解决方案2】:

      将脚本中的; 更改为&& 似乎可行。

      【讨论】:

        猜你喜欢
        • 2015-03-09
        • 2012-11-30
        • 1970-01-01
        • 2012-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多