From 361a5325c707fa37393c41bac05d82c6e22196f8 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Fri, 22 Jul 2016 14:54:46 +0200 Subject: [PATCH 1/6] #18 the `Versions` class is not to be gitignored, as a stub will be present in its place --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 9916a6d..0122635 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ /vendor/ -src/PackageVersions/Versions.php composer.lock clover.xml \ No newline at end of file From ecf8760e742cd2fe523eb6afa05f9d47c18a2037 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Fri, 22 Jul 2016 15:02:57 +0200 Subject: [PATCH 2/6] #18 tests for a `FallbackVersions` provider that can work with just a `composer.lock` assumed location --- .../FallbackVersionsTest.php | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 test/PackageVersionsTest/FallbackVersionsTest.php diff --git a/test/PackageVersionsTest/FallbackVersionsTest.php b/test/PackageVersionsTest/FallbackVersionsTest.php new file mode 100644 index 0000000..7464fce --- /dev/null +++ b/test/PackageVersionsTest/FallbackVersionsTest.php @@ -0,0 +1,61 @@ +getMessage() + ); + } + + rename(__DIR__ . '/../../composer.lock.backup', __DIR__ . '/../../composer.lock'); + } + + public function testValidVersions() + { + $lockData = json_decode(file_get_contents(__DIR__ . '/../../composer.lock'), true); + + $packages = array_merge($lockData['packages'], $lockData['packages-dev']); + + self::assertNotEmpty($packages); + + foreach ($packages as $package) { + self::assertSame( + $package['version'] . '@' . $package['source']['reference'], + Versions::getVersion($package['name']) + ); + } + } + + public function testInvalidVersionsAreRejected() + { + $this->expectException(\OutOfBoundsException::class); + + Versions::getVersion(uniqid('', true) . '/' . uniqid('', true)); + } +} From 20783c908b27f20b7f86abf4da19ba6718e8ab88 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Fri, 22 Jul 2016 15:03:38 +0200 Subject: [PATCH 3/6] #18 implemented `FallbackVersions` as per specification --- src/PackageVersions/FallbackVersions.php | 78 ++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 src/PackageVersions/FallbackVersions.php diff --git a/src/PackageVersions/FallbackVersions.php b/src/PackageVersions/FallbackVersions.php new file mode 100644 index 0000000..831f5b1 --- /dev/null +++ b/src/PackageVersions/FallbackVersions.php @@ -0,0 +1,78 @@ + $package['version'] . '@' . ( + $package['source']['reference']?? $package['dist']['reference'] ?? '' + ); + } + + yield 'unknown/root-package@UNKNOWN'; + } +} From c70fd71141254d85c22b156094bb50c4fc487dba Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Fri, 22 Jul 2016 15:04:12 +0200 Subject: [PATCH 4/6] #18 stubbed out `Versions` class, so that it works even when the package is installed with `--no-scripts` --- src/PackageVersions/Versions.php | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/PackageVersions/Versions.php diff --git a/src/PackageVersions/Versions.php b/src/PackageVersions/Versions.php new file mode 100644 index 0000000..9de8496 --- /dev/null +++ b/src/PackageVersions/Versions.php @@ -0,0 +1,29 @@ + Date: Fri, 22 Jul 2016 15:04:51 +0200 Subject: [PATCH 5/6] #18 gitignoring `PackageVersions\Versions` again, since the stub is now in place --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 0122635..9916a6d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /vendor/ +src/PackageVersions/Versions.php composer.lock clover.xml \ No newline at end of file From 0a1a91ea4d08baa225724845431bee542773fd1a Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Fri, 22 Jul 2016 15:08:36 +0200 Subject: [PATCH 6/6] #18 testing with `--no-scripts` --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index e6c99d4..a3e7622 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,6 +9,7 @@ env: - DEPENDENCIES="" - DEPENDENCIES="--prefer-lowest --prefer-stable" - DEPENDENCIES="--classmap-authoritative" + - DEPENDENCIES="--no-scripts" before_script: - sh .travis.install.sh