2016-04-30 13 views
0

同じgruntタスクを複数回連続して実行して失敗するまでの標準的な方法は何ですか?gruntタスクが失敗するまで複数回実行する


私は、一般的な質問を維持したいが、ここでは特定のユースケースであると思います:

我々は我々がgrunt経由で実行分度器で書かれたエンド・ツー・エンドのテストの巨大なセットを持っていますgrunt-protractor-runnergrunt-contrib-connectの助けを借りてください。私たちがしたいのは、失敗するまでprotractorをループする(または/そして最大でN回)まで、connectタスクが実行中であること(Webサーバがdistディレクトリから提供されている)を維持することです。タスク:

ここ
connect: { 
    test: { 
     options: { 
      base: 'dist', 
      port: 9001 
     } 
    }, 
}, 

protractor: { 
    options: { 
     keepAlive: true, 
     noColor: false 
    }, 
    local: { 
     options: { 
      configFile: "test/e2e/config/local.conf.js" 
     } 
    } 
}, 

grunt.registerTask('e2e:local', [ 
    'connect:test', 
    'protractor:local' 
]); 

、我々はconnect:test一度、protractor:local複数回実行したいと思います。

答えて

1

タスクのアレイに同じタスクをN回追加するだけで簡単になります(Nを何らかの形で指定しなくても、それが失敗するまで無期限にタスクを実行することができない場合はまだわかりません)。デフォルトではgrunt 「フェイル・ファースト」モードで動作すると、最初の失敗でタスク全体が失敗します。私たちの場合:

grunt.registerTask('e2e:local', function() { 
    var tasks = ['connect:test']; 

    var N = 100; 
    for (var i = 0; i < N; i++) { 
     tasks.push('protractor:local') 
    } 

    grunt.task.run(tasks); 
}); 

Nは、ここでgrunt optionとして「外部から」タスク内でハードコードされていますが、渡すことができます。

+1

私はまだ 'n 'を持つことをお勧めします。これは、デザインが動作するためのプロセスのしきい値を設定することを可能にします – theaccordance

関連する問題