Browse Source

Merge branch '1.2'

Jordi Boggiano 8 years ago
parent
commit
165ff07146

+ 1 - 1
src/Composer/Command/InitCommand.php

@@ -320,7 +320,7 @@ EOT
      */
     public function parseAuthorString($author)
     {
-        if (preg_match('/^(?P<name>[- \.,\p{L}\p{N}\'’]+) <(?P<email>.+?)>$/u', $author, $match)) {
+        if (preg_match('/^(?P<name>[- .,\p{L}\p{N}\'’"()]+) <(?P<email>.+?)>$/u', $author, $match)) {
             if ($this->isValidEmail($match['email'])) {
                 return array(
                     'name'  => trim($match['name']),

+ 4 - 0
src/Composer/Installer.php

@@ -1137,6 +1137,10 @@ class Installer
 
     private function updateInstallReferences(PackageInterface $package, $reference)
     {
+        if (!$reference) {
+            return;
+        }
+
         $package->setSourceReference($reference);
         $package->setDistReference($reference);
 

+ 27 - 0
tests/Composer/Test/Command/InitCommandTest.php

@@ -17,6 +17,7 @@ use Composer\TestCase;
 
 class InitCommandTest extends TestCase
 {
+
     public function testParseValidAuthorString()
     {
         $command = new InitCommand;
@@ -40,6 +41,32 @@ class InitCommandTest extends TestCase
         $this->assertEquals('h4x0r', $author['name']);
         $this->assertEquals('h4x@example.com', $author['email']);
     }
+    
+    /**
+     * Test scenario for issue #5631
+     * @link https://github.com/composer/composer/issues/5631 Issue #5631
+     */
+    public function testParseValidAlias1AuthorString()
+    {
+        $command  = new InitCommand;
+        $author   = $command->parseAuthorString(
+                'Johnathon "Johnny" Smith <john@example.com>');
+        $this->assertEquals('Johnathon "Johnny" Smith', $author['name'] );
+        $this->assertEquals('john@example.com',         $author['email']);
+    }
+    
+    /**
+     * Test scenario for issue #5631
+     * @link https://github.com/composer/composer/issues/5631 Issue #5631
+     */
+    public function testParseValidAlias2AuthorString()
+    {
+        $command  = new InitCommand;
+        $author   = $command->parseAuthorString(
+                'Johnathon (Johnny) Smith <john@example.com>');
+        $this->assertEquals('Johnathon (Johnny) Smith', $author['name'] );
+        $this->assertEquals('john@example.com',         $author['email']);
+    }
 
     public function testParseEmptyAuthorString()
     {