【发布时间】:2017-05-03 21:47:41
【问题描述】:
我正在尝试在git2r 包的帮助下编写一个分析Apache Pig GitHub repository 的R 包。我还使用testthat 包进行单元测试。
我有一个函数,我们称之为compute(),它包含的代码如下:
repo <- repository("C:\normalized\path\to\apache\pig");
allCommits <- commits(repo);
commitSummary <- capture.output(summary(allCommits[[1]]));
print(commitSummary);
commitSummary 是一个重要部分,因为我在它上面运行了几个正则表达式来恢复插入和删除等数据。
问题是,当我从控制台调用compute() 时,它会打印出Output 1。
但是当我运行devtools::test() 时从我的单元测试文件中调用compute() 时,它会打印出输出2。 (在我写这个问题的过程中,在多次产生 Output 2 之后,它产生了 Output 3。)
当我从控制台运行此问题中的第一个代码块时,它会再次打印出 Output 1。
但是,当我将该代码块复制粘贴到测试文件中时,它会打印出 Output 3。
我很困惑。这怎么可能?
我如何确保git2r::summary() 使用我想要的格式?
输出 1
[1] "Commit: d2de56aad939c7c77324066a6f29cc211e29a077"
[2] "Author: Koji Noguchi <knoguchi@apache.org>"
[3] "When: 2016-12-12 23:07:37"
[4] ""
[5] " PIG-5073: Skip e2e Limit_5 test for Tez (knoguchi)"
[6] " "
[7] " "
[8] " git-svn-id: https://svn.apache.org/repos/asf/pig/trunk@1773899 13f79535-47bb-0310-9956-ffa450edef68"
[9] " "
[10] "2 files changed, 18 insertions, 1 deletions"
[11] "CHANGES.txt | -0 + 2 in 1 hunk"
[12] "test/e2e/pig/tests/nightly.conf | -1 +16 in 2 hunks"
[13] ""
输出 2
[d2de56a] 2016-12-12: PIG-5073: Skip e2e Limit_5 test for Tez (knoguchi)
输出 3
[1] " Length Class Mode " " 1 git_commit S4 "
可能会影响问题清晰度的附加说明
当我从单元测试文件加载并调用调用
compute()的函数时,它会打印出输出1。从工作目录调用compute()设置为测试文件夹和完全相同的参数。为了让事情变得更加混乱,直到最近
devtools::test()产生 Output 1,然后切换到 Output 3,然后才确定 Output 2.-
CRAN 的
git2r::summary(object, ...)文档列出了以下参数:object提交对象。...影响生成的摘要的其他参数。
找不到... 的可接受值。
【问题讨论】:
-
RStudio 可能正在加载与 git2r 不同的 libgit 版本(供自己使用,请记住它的 git 接口也必须针对某些东西构建......),并且可能隐藏 git2r 想要的。我相信命令行。
-
@DirkEddelbuettel 我想这是一个开始。我会调查一下。