Browse Source

Fixed the existing test and added a new one for git tag version guessing.

Beau Simensen 12 years ago
parent
commit
f9fe39e624
1 changed files with 34 additions and 0 deletions
  1. 34 0
      tests/Composer/Test/Package/Loader/RootPackageLoaderTest.php

+ 34 - 0
tests/Composer/Test/Package/Loader/RootPackageLoaderTest.php

@@ -35,6 +35,11 @@ class RootPackageLoaderTest extends \PHPUnit_Framework_TestCase
 
         /* Can do away with this mock object when https://github.com/sebastianbergmann/phpunit-mock-objects/issues/81 is fixed */
         $processExecutor = new ProcessExecutorMock(function($command, &$output = null, $cwd = null) use ($self, $commitHash) {
+            if (0 === strpos($command, 'git describe')) {
+                // simulate not being on a tag
+                return 1;
+            }
+
             $self->assertStringStartsWith('git branch', $command);
 
             $output = "* (no branch) $commitHash Commit message\n";
@@ -49,4 +54,33 @@ class RootPackageLoaderTest extends \PHPUnit_Framework_TestCase
 
         $this->assertEquals("dev-$commitHash", $package->getVersion());
     }
+
+    public function testTagBecomesVersion()
+    {
+        if (!function_exists('proc_open')) {
+            $this->markTestSkipped('proc_open() is not available');
+        }
+
+        $manager = $this->getMockBuilder('\\Composer\\Repository\\RepositoryManager')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $self = $this;
+
+        /* Can do away with this mock object when https://github.com/sebastianbergmann/phpunit-mock-objects/issues/81 is fixed */
+        $processExecutor = new ProcessExecutorMock(function($command, &$output = null, $cwd = null) use ($self) {
+            $self->assertEquals('git describe --exact-match', $command);
+
+            $output = "v2.0.5-alpha2";
+
+            return 0;
+        });
+
+        $config = new Config;
+        $config->merge(array('repositories' => array('packagist' => false)));
+        $loader = new RootPackageLoader($manager, $config, null, $processExecutor);
+        $package = $loader->load(array());
+
+        $this->assertEquals("2.0.5.0-alpha2", $package->getVersion());
+    }
 }