2017-01-25 9 views
1

devtools::check에서 사용되는 환경을 재현하는 방법이 있습니까?devtools :: check에서 testthat가 실패하지만 devtools :: test에서 작동합니다

내 테스트가 devtools::test()과 작동하지만 devtools::check() 내에서 작동하지 않는 문제가 있습니다. 내 문제는 지금 문제를 찾는 방법입니다. check의 보고서는 오류 로그의 마지막 몇 줄만을 인쇄하기 때문에 테스트를위한 전체 보고서를 찾을 수 없습니다.

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

나는 checktest에 비해 다른 환경을 사용하지만 나는 그들이 전혀 재현하지 않기 때문에 나는이 문제를 디버깅하는 방법을 모르는 것을 알고있다. 특히이 테스트는 몇 달 전에 실행되었으므로 문제를 찾을 위치가 확실하지 않습니다.

편집 실제로 나는 내 문제를 찾기 위해 노력하고 나는 해결책을 찾아 냈다. 하지만 내 솔루션을 게시하려면 세부 정보를 추가해야합니다.

따라서 오류없이 실행 중이며 나중에 환경 변수 중 일부가 올바르게 설정되어 있는지 확인한 후 markdown 스크립트를 테스트 한 이후로 내 테스트가 항상 실패했습니다. 이것들은 내가 설정 한 스크립트뿐만 아니라 표준 설정으로 계산 한 결과입니다. 그래서 개발 후 일부 설정을 변경하는 것을 잊었을 때 경고를 받고 싶었습니다 ...

어쨌든, markdown 스크립트이므로 코드를 추출해야하고이 게시물의 주석을 사용하고있었습니다. 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) 
} 

, 이것은 아마 몇 주 (I 최근에 설치 확실하지 않은 새로운 패키지 ...) 이후 오류가 발생합니다. 그러나 새로운 코멘트가 있기 때문에 코드를 실행하는 knitr::knit을 사용할 수도 있습니다. 예상했던대로 작동하고 이제는 더 이상 불평하지 않습니다.

그래서 결국 문제가 정확히 어디 있었는지 모르지만 지금은 효과가 있습니다.

답변

0

시험 결과는 known issue입니다. 해결 방법은 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)