git2r::summary() выдает разные результаты при вызове из консоли и из RStudio

Я пытаюсь написать пакет R, который анализирует хранилище Apache Pig GitHub с помощью git2r пакет. Я также использую testthat пакет для юнит-тестирования.

У меня есть функция, давайте назовем ее compute(), который содержит код в соответствии с:

repo <- repository("C:\normalized\path\to\apache\pig");
allCommits <- commits(repo);
commitSummary <- capture.output(summary(allCommits[[1]]));
print(commitSummary);

commitSummary является важной частью, потому что я использую несколько регулярных выражений для восстановления данных, таких как вставки и удаления.

Проблема в том, когда я звоню compute() из консоли выводится вывод 1.

Но когда compute() вызывается из моего файла модульного теста при запуске devtools::test() выводит вывод 2. (И в процессе написания этого вопроса, после того, как я несколько раз произвел Output 2, он выполнил Output 3.)

Когда я запускаю первый кодовый блок в этом вопросе из консоли, он снова выводит вывод 1.

Однако, когда я копирую и вставляю этот кодовый блок в тестовый файл, он выводит вывод 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 "

Дополнительные примечания, которые могут убрать ясность вопроса

  1. Когда я загружаю и вызываю функцию, вызывающую compute() из файла модульного теста выводится вывод 1. То же самое для звонка compute() из рабочего каталога установить в тестовую папку и точно такие же аргументы.

  2. Чтобы сделать вещи более запутанными, вплоть до совсем недавно devtools::test() произвел Выход 1, затем он переключился на Выход 3 перед установкой на Выход 2.

  3. Документация CRAN для git2r::summary(object, ...) перечисляет следующие аргументы:

    • object Объект коммита.

    • ... Дополнительные аргументы, влияющие на резюме производится.

  4. Принятые значения ... нигде не найти

1 ответ

Решение

Оказывается, возможно, происходит какое-то состояние гонки, связанное с пространством имен, поскольку уже существует summary() функция в базе R (и, возможно, в некоторых других пакетах), которая объясняет, почему было 3 разных выхода.

Я просто изменил каждый

summary(commitObject)

в

git2r::summary(commitObject)

и все, кажется, снова работает.

Другие вопросы по тегам