2017-01-25 4 views
1

devtools::checkで使用されている環境を再現する方法はありますか?devtools :: check内でテストに失敗しましたが、devtools :: testで動作します

私のテストではdevtools::test()が動作しますが、devtools::check()で失敗するという問題があります。私の問題は今、問題を見つける方法です。 checkのレポートでは、エラーログの最後の数行だけが表示され、テストの完全なレポートが見つかりません。

checking tests ... ERROR 
Running the tests in ‘tests/testthat.R’ failed. 
Last 13 lines of output: 
... 

私はchecktestに比べて別の環境を使用していることを知っているが、私は、彼らがすべてで再現性がないので、私はこれらの問題をデバッグする必要があるのか​​分かりません。特にこれらのテストは数ヶ月前に実行されるため、問題を探す場所が不明です。

EDIT

は実際に私は私の問題を見つけるためにしようと、私は解決策を見つけました。しかし、私の解決策を投稿するには、詳細を追加する必要があります。

エラーなしで実行されているマークダウンスクリプトをテストしていて、その後環境変数の一部が正しく設定されているかどうかを確認していたので、私のテストは常に失敗しました。これらは私が設定したスクリプトと標準設定で計算される結果です。だから私は、開発後に私の設定の一部を変更するのを忘れた場合、私は警告を得たかった...

とにかく、それはマークダウンスクリプトですので、私はコードを抽出しなければならなかったと私はこの投稿のコメントを使用していたknitr: run all chunks in an Rmarkdown documentコードを取得するにはknitr::purl、実行するにはsys.sourceを入力します。何らかの理由で

runAllChunks <- function(rmd, envir=globalenv()){ 
    # as found here https://stackoverflow.com/questions/24753969 
    tempR <- tempfile(tmpdir = '.', fileext = ".R") 
    on.exit(unlink(tempR)) 
    knitr::purl(rmd, output=tempR, quiet=TRUE) 
    sys.source(tempR, envir=envir) 
} 

が、これはおそらく数週間(私は最近インストールわからない新しいパッケージ...)ので、エラーを生成します。しかし、新しいコメントがあるので、私はちょうどknitr::knitを使ってコードを実行することができます。これは期待通りに機能し、今では私のテストは不平を言っていません。

最終的に、問題の正確な場所はわかりませんが、現在は機能しています。

答えて

0

これはknown issueで、testthatです。この問題を回避するには、tests/testthat.Rに1行目を次のように追加することです:私はすぐに上記のように

Sys.setenv(R_TESTS="") 
+0

実際には、これは問題を解決していません。以前と同じ問題がありました...そして、まだ 'testthat'実行のログを読む可能性はありません:-( – drmariod

0

だから、私はもはやユーザーknitr::purlに私のコードの一部を変更したがknitr::knitを使用して、これは私の問題を解決しました。

expect_error(f <- runAllChunks('010_main_lfq_analysis.Rmd'), NA) 
expect_error(f <- knitr::knit('010_main_lfq_analysis.Rmd', output='jnk.R', quiet=TRUE, envir=globalenv()), NA) 
関連する問題