From 128c5d8cf7f7410adbf429638b3a7f50838e0141 Mon Sep 17 00:00:00 2001 From: casanova922 Date: Fri, 3 Jan 2020 12:12:35 +0100 Subject: [PATCH 1/4] Ignore unknown refs instead of throwing an exception (#160) --- src/Gitonomy/Git/ReferenceBag.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/Gitonomy/Git/ReferenceBag.php b/src/Gitonomy/Git/ReferenceBag.php index 178fd9f..57aec25 100644 --- a/src/Gitonomy/Git/ReferenceBag.php +++ b/src/Gitonomy/Git/ReferenceBag.php @@ -366,12 +366,6 @@ protected function initialize() } elseif ($fullname === 'refs/stash') { $reference = new Stash($this->repository, $fullname, $commitHash); $this->references[$fullname] = $reference; - } elseif (preg_match('#^refs/pull/(.*)$#', $fullname)) { - // Do nothing here - } elseif ($fullname === 'refs/notes/gtm-data') { - // Do nothing here - } else { - throw new RuntimeException(sprintf('Unable to parse "%s"', $fullname)); } } } From b968e7924e8f35c53e9223927d8c9497c4d4c647 Mon Sep 17 00:00:00 2001 From: casanova922 Date: Fri, 3 Jan 2020 12:40:33 +0100 Subject: [PATCH 2/4] Add test for unknown refs --- tests/Gitonomy/Git/Tests/ReferenceBagTest.php | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 tests/Gitonomy/Git/Tests/ReferenceBagTest.php diff --git a/tests/Gitonomy/Git/Tests/ReferenceBagTest.php b/tests/Gitonomy/Git/Tests/ReferenceBagTest.php new file mode 100644 index 0000000..e36e170 --- /dev/null +++ b/tests/Gitonomy/Git/Tests/ReferenceBagTest.php @@ -0,0 +1,34 @@ + + * (c) Julien DIDIER + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace Gitonomy\Git\Tests; + +use Gitonomy\Git\Repository; + +class ReferenceBagTest extends AbstractTest +{ + /** + * @dataProvider provideFoobar + */ + public function testUnknownReference(Repository $repository) + { + $hash = $repository->getLog()->getSingleCommit()->getHash(); + + $repository->run('update-ref', ['refs/pipelines/1', $hash]); + $repository->run('update-ref', ['refs/merge-request/1/head', $hash]); + $repository->run('update-ref', ['refs/pull/1/head', $hash]); + $repository->run('update-ref', ['refs/notes/gtm-data', $hash]); + + $refs = $repository->getReferences()->getAll(); + $this->assertIsArray($refs); + } +} From 5dc63678e9bbd9563069d8e9f8d305028ae526f6 Mon Sep 17 00:00:00 2001 From: casanova922 Date: Fri, 3 Jan 2020 12:46:30 +0100 Subject: [PATCH 3/4] Fix error with old PHPUnit versions --- tests/Gitonomy/Git/Tests/ReferenceBagTest.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/Gitonomy/Git/Tests/ReferenceBagTest.php b/tests/Gitonomy/Git/Tests/ReferenceBagTest.php index e36e170..43cd037 100644 --- a/tests/Gitonomy/Git/Tests/ReferenceBagTest.php +++ b/tests/Gitonomy/Git/Tests/ReferenceBagTest.php @@ -29,6 +29,10 @@ public function testUnknownReference(Repository $repository) $repository->run('update-ref', ['refs/notes/gtm-data', $hash]); $refs = $repository->getReferences()->getAll(); - $this->assertIsArray($refs); + if (method_exists($this, 'assertIsArray')) { + $this->assertIsArray($refs); + } else { + $this->assertInternalType('array', $refs); + } } } From 2778979750089bf84831ca69b353d0d0d4ca4c43 Mon Sep 17 00:00:00 2001 From: casanova922 Date: Tue, 7 Jan 2020 09:36:29 +0100 Subject: [PATCH 4/4] Add additional validations to the unknown references test --- tests/Gitonomy/Git/Tests/ReferenceBagTest.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/Gitonomy/Git/Tests/ReferenceBagTest.php b/tests/Gitonomy/Git/Tests/ReferenceBagTest.php index 43cd037..35756bf 100644 --- a/tests/Gitonomy/Git/Tests/ReferenceBagTest.php +++ b/tests/Gitonomy/Git/Tests/ReferenceBagTest.php @@ -34,5 +34,14 @@ public function testUnknownReference(Repository $repository) } else { $this->assertInternalType('array', $refs); } + + // Check that at least it has the master ref + $this->assertArrayHasKey('refs/heads/master', $refs); + + // Check that our custom refs have been ignored + $this->assertArrayNotHasKey('refs/pipelines/1', $refs); + $this->assertArrayNotHasKey('refs/merge-request/1/head', $refs); + $this->assertArrayNotHasKey('refs/pull/1/head', $refs); + $this->assertArrayNotHasKey('refs/notes/gtm-data', $refs); } }