3

TeamCityビルド環境でコマンドラインgemをテストするのに問題があります。

私はさまざまなタイプのマニフェストファイルelf_manifestoを構築するためのgemに取り組んでいます。これはコマンドラインから実行され、Cucumberと非常に便利なArubagemでテストに成功しました。ローカルでは、RVM、ruby1.9.2を使用してLionMBPに取り組んでいます。すべてがハンキーなドーリーです。

この問題は、ビルドプロセスを作業中のTeamCity環境に移動するときに発生します。TeamCityエージェントはWindowsボックスで実行されており、問題は、Arubaから実行可能ファイルのコマンドラインをトリガーすると、Windowsボックスのパス環境にスクリプトが見つからないことであると思われます。これは、ビルドログからのCucumber出力のスニペットです。

[13:46:37]: [Scenario: Start manifesto with no parameters] When  I run `manifesto`
[13:46:37]: [When  I run `manifesto`] ChildProcess::LaunchError: The system cannot find the    file specified. (2)

Aruba gemは、テストの実行時に実行可能ファイル(bin dirにある)をパスに追加することを目的としています。これは私のローカル設定では正常に機能しますが、Windowsでは失敗します。TeamCityのビルドパラメーターにRUBYPATH環境変数を追加しようとしましたが、これまでのところうまくいきません。

誰かがポインタを持っていますか?

前もって感謝します。

4

3 に答える 3

1

bin/私の経験では、Aruba は宝石をパスに追加しません。UNIX ベースのプロジェクトでも、自分でやらなければなりませんでした。

env.rb

PROJECT_ROOT = File.join(File.dirname(__FILE__),'..','..')
ENV['PATH'] = "#{File.join(PROJECT_ROOT,'bin')}#{File::PATH_SEPARATOR}#{ENV['PATH']}"

そうは言っても、Aruba を UNIX と同じように Windows で動作させたことは一度もありません。

診断に役立てるため@announceに、機能のタグを使用し (これにより stderr と stdout が出力されます)、場合によってはカスタム ステップに独自のログ ステートメントをドロップすることもできます。

于 2012-01-23T14:40:36.693 に答える
0

.COMWindows では、, .EXE(およびその他) などの拡張子を持つファイルが実行可能である場合のみ。

への正しいパスを使用しmanifestoてlike に変更できます。Windows で動作するはずです。ruby manifestomanifesto

Unix プラットフォームでも作業したい場合は、support\env.rb以下のように Arubaに変更する必要があります。

require 'aruba/cucumber'
module ArubaOverrides
  def detect_ruby(cmd)
    processor, platform, *rest = RUBY_PLATFORM.split("-")
    #puts platform
    if platform =~ /w32$/ && cmd =~ /^manifesto /
      "ruby -I../../lib -S ../../bin/#{cmd}"
    else
      "#{cmd}"
    end
  end
end

World(ArubaOverrides)

それが役に立てば幸い

于 2012-03-12T13:57:44.257 に答える
0

Aruba はテストするアプリケーションを実行し、すべてのローカル出力を独自の作業ディレクトリ (awd) に作成することに注意してください。awd はデフォルトで tmp/aruba に設定され、すべてのシナリオの開始時に Aruba によって消去および作成されます。ただし、最後のシナリオで作成されたコンテンツは、検査のために awd に残されます。

解決策 1

Aruba は、各 Cucumber シナリオの間、プロジェクトの bin ディレクトリを PATH 環境変数に自動的に追加します。

binプロジェクトルートの下にディレクトリを作成し、そこにバイナリをコピーできます

解決策 2

このケースを処理するためのタグを提供するaruba-jbbを使用できます。@no-aruba-tmpdir

于 2014-08-06T18:41:36.413 に答える