2016-12-24 63 views
0

parseMe具有單一功能解析不Rstudio測試環境和Travis

parseMe <- function(text) { 
    parsed = parse(text = text) 
    str(parsed) #for diagnosis 
    getParseData(parse(text = parsed)) 
} 

此函數是使用測試testthat

test_that('parseMe',{ 
    expect_that(parseMe('print("hey")'), is_a('data.frame')) 
}) 

封裝返回屬性如果一個運行devtools ::測試()從Rstudio命令行以交互方式,此測試通過。但是,在Rstudio測試環境(v0.99.892)(從「構建」選項卡進行測試時),此測試失敗,因爲parse函數無法返回屬性(由於str而在測試輸出中可見)。 Travis-ci同樣的測試也失敗了。這是什麼原因?它如何解決?

下面是鏈接到最小的測試包,我使用和Travis測試日誌

+0

這確實似乎是問題所在。幹嘛不回答? – OganM

+0

我自己做到了。我會接受它,如果你寫它 – OganM

回答

1

的屬性只保留如果parse(..., keep.source = TRUE)。 keep.source的默認值來自getOption("keep.source"),根據?parse文檔。很可能默認選項值不同,運行R交互式和非交互式。如果你想永遠保持源代碼,你應該確保將它設置爲TRUE。