在Travis-CI中获得超过13个关于测试错误的最后一行

时间:2016-11-30 18:22:20

标签: r unit-testing testthat

当我在TravisCI下构建R包时,在测试失败时打印出最后13行。要调试仅在Travis下发生的问题,我需要更多行。

在哪里可以设置日志中显示的行数?

稍后添加:

https://github.com/hadley/testthat/commit/f037f463edcccd403502308fd86e32914c6d0d0f

看起来它是一个测试功能,但我不明白如何关闭它。

2 个答案:

答案 0 :(得分:3)

看来,运行R CMD check时,“要在日志中重现的测试输出的尾数”可以由环境变量_R_CHECK_TESTS_NLINES_控制,该变量在R Internals {{3 }}。

此环境变量的默认值为13,但如果设置为0,则“将复制R序言以外的所有行”。

此答案由here撰写的有关此解决方案的博客文章提示。

答案 1 :(得分:1)

travis.yml

结尾处需要这样的内容
after_failure:
  - ./run.sh dump_logs

(其中run.sh是我的maintained fork of the initial R-Travis)。

该脚本(就像它来自的travis.sh)有这样的代码:

DumpSysinfo() {                                                                                                                                                                                                     
    echo "Dumping system information."                                                                                                                                                                              
    R -e '.libPaths(); sessionInfo(); installed.packages()'                                                                                                                                                         
}                                                                                                                                                                                                                   

DumpLogsByExtension() {                                                                                                                                                                                             
    if [[ -z "$1" ]]; then                                                                                                                                                                                          
        echo "dump_logs_by_extension requires exactly one argument, got: $@"                                                                                                                                        
        exit 1                                                                                                                                                                                                      
    fi                                                                                                                                                                                                              
    extension=$1                                                                                                                                                                                                    
    shift                                                                                                                                                                                                           
    package=$(find . -maxdepth 1 -name "*.Rcheck" -type d)                                                                                                                                                          
    if [[ ${#package[@]} -ne 1 ]]; then                                                                                                                                                                             
        echo "Could not find package Rcheck directory, skipping log dump."                                                                                                                                          
        exit 0                                                                                                                                                                                                      
    fi                                                                                                                                                                                                              
    for name in $(find "${package}" -type f -name "*${extension}"); do                                                                                                                                              
        echo ">>> Filename: ${name} <<<"                                                                                                                                                                            
        cat ${name}                                                                                                                                                                                                 
    done                                                                                                                                                                                                            
}                                                                                                                                                                                                                   

DumpLogs() {                                                                                                                                                                                                        
    echo "Dumping test execution logs."                                                                                                                                                                             
    DumpLogsByExtension "out"                                                                                                                                                                                       
    DumpLogsByExtension "log"                                                                                                                                                                                       
    DumpLogsByExtension "fail"                                                                                                                                                                                      
} 

我相信你可以从这里拿走它。 “新的新”特拉维斯肯定也有一个设置。