diff --git a/src/Composer/Command/InitCommand.php b/src/Composer/Command/InitCommand.php index 5dcfcc4a8..ae3fc8330 100644 --- a/src/Composer/Command/InitCommand.php +++ b/src/Composer/Command/InitCommand.php @@ -40,7 +40,7 @@ class InitCommand extends Command public function parseAuthorString($author) { - if (preg_match('/^(?P[- \.,\p{L}\'’]+) <(?P.+?)>$/u', $author, $match)) { + if (preg_match('/^(?P[- \.,\p{L}\p{N}\'’]+) <(?P.+?)>$/u', $author, $match)) { if ($this->isValidEmail($match['email'])) { return array( 'name' => trim($match['name']), diff --git a/tests/Composer/Test/Command/InitCommandTest.php b/tests/Composer/Test/Command/InitCommandTest.php index dbcbe0bda..7795a4674 100644 --- a/tests/Composer/Test/Command/InitCommandTest.php +++ b/tests/Composer/Test/Command/InitCommandTest.php @@ -33,6 +33,14 @@ class InitCommandTest extends TestCase $this->assertEquals('matti@example.com', $author['email']); } + public function testParseNumericAuthorString() + { + $command = new InitCommand; + $author = $command->parseAuthorString('h4x0r '); + $this->assertEquals('h4x0r', $author['name']); + $this->assertEquals('h4x@example.com', $author['email']); + } + public function testParseEmptyAuthorString() { $command = new InitCommand;