Merge branch '1.2'
commit
43903a3979
|
@ -77,32 +77,44 @@
|
|||
"require": {
|
||||
"type": "object",
|
||||
"description": "This is a hash of package name (keys) and version constraints (values) that are required to run this package.",
|
||||
"additionalProperties": true
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"replace": {
|
||||
"type": "object",
|
||||
"description": "This is a hash of package name (keys) and version constraints (values) that can be replaced by this package.",
|
||||
"additionalProperties": true
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"conflict": {
|
||||
"type": "object",
|
||||
"description": "This is a hash of package name (keys) and version constraints (values) that conflict with this package.",
|
||||
"additionalProperties": true
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"provide": {
|
||||
"type": "object",
|
||||
"description": "This is a hash of package name (keys) and version constraints (values) that this package provides in addition to this package's name.",
|
||||
"additionalProperties": true
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"require-dev": {
|
||||
"type": "object",
|
||||
"description": "This is a hash of package name (keys) and version constraints (values) that this package requires for developing it (testing tools and such).",
|
||||
"additionalProperties": true
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"suggest": {
|
||||
"type": "object",
|
||||
"description": "This is a hash of package name (keys) and descriptions (values) that this package suggests work well with it (this will be suggested to the user during installation).",
|
||||
"additionalProperties": true
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
"type": "object",
|
||||
|
@ -134,12 +146,16 @@
|
|||
"github-oauth": {
|
||||
"type": "object",
|
||||
"description": "A hash of domain name => github API oauth tokens, typically {\"github.com\":\"<token>\"}.",
|
||||
"additionalProperties": true
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"gitlab-oauth": {
|
||||
"type": "object",
|
||||
"description": "A hash of domain name => gitlab API oauth tokens, typically {\"gitlab.com\":\"<token>\"}.",
|
||||
"additionalProperties": true
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"gitlab-token": {
|
||||
"type": "object",
|
||||
|
@ -165,7 +181,20 @@
|
|||
"http-basic": {
|
||||
"type": "object",
|
||||
"description": "A hash of domain name => {\"username\": \"...\", \"password\": \"...\"}.",
|
||||
"additionalProperties": true
|
||||
"additionalProperties": {
|
||||
"type": "object",
|
||||
"required": ["username", "password"],
|
||||
"properties": {
|
||||
"username": {
|
||||
"type": "string",
|
||||
"description": "The username used for HTTP Basic authentication"
|
||||
},
|
||||
"password": {
|
||||
"type": "string",
|
||||
"description": "The password used for HTTP Basic authentication"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"store-auths": {
|
||||
"type": ["string", "boolean"],
|
||||
|
@ -174,7 +203,9 @@
|
|||
"platform": {
|
||||
"type": "object",
|
||||
"description": "This is a hash of package name (keys) and version (values) that will be used to mock the platform packages on this machine.",
|
||||
"additionalProperties": true
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"vendor-dir": {
|
||||
"type": "string",
|
||||
|
@ -280,12 +311,22 @@
|
|||
"psr-0": {
|
||||
"type": "object",
|
||||
"description": "This is a hash of namespaces (keys) and the directories they can be found in (values, can be arrays of paths) by the autoloader.",
|
||||
"additionalProperties": true
|
||||
"additionalProperties": {
|
||||
"type": ["string", "array"],
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"psr-4": {
|
||||
"type": "object",
|
||||
"description": "This is a hash of namespaces (keys) and the PSR-4 directories they can map to (values, can be arrays of paths) by the autoloader.",
|
||||
"additionalProperties": true
|
||||
"additionalProperties": {
|
||||
"type": ["string", "array"],
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"classmap": {
|
||||
"type": "array",
|
||||
|
@ -308,12 +349,22 @@
|
|||
"psr-0": {
|
||||
"type": "object",
|
||||
"description": "This is a hash of namespaces (keys) and the directories they can be found into (values, can be arrays of paths) by the autoloader.",
|
||||
"additionalProperties": true
|
||||
"additionalProperties": {
|
||||
"type": ["string", "array"],
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"psr-4": {
|
||||
"type": "object",
|
||||
"description": "This is a hash of namespaces (keys) and the PSR-4 directories they can map to (values, can be arrays of paths) by the autoloader.",
|
||||
"additionalProperties": true
|
||||
"additionalProperties": {
|
||||
"type": ["string", "array"],
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"classmap": {
|
||||
"type": "array",
|
||||
|
|
|
@ -195,7 +195,7 @@ class HgDriver extends VcsDriver
|
|||
*/
|
||||
public static function supports(IOInterface $io, Config $config, $url, $deep = false)
|
||||
{
|
||||
if (preg_match('#(^(?:https?|ssh)://(?:[^@]@)?bitbucket.org|https://(?:.*?)\.kilnhg.com)#i', $url)) {
|
||||
if (preg_match('#(^(?:https?|ssh)://(?:[^@]+@)?bitbucket.org|https://(?:.*?)\.kilnhg.com)#i', $url)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -99,7 +99,17 @@ class ProcessExecutor
|
|||
return;
|
||||
}
|
||||
|
||||
echo $buffer;
|
||||
if (null === $this->io) {
|
||||
echo $buffer;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (Process::ERR === $type) {
|
||||
$this->io->writeError($buffer);
|
||||
} else {
|
||||
$this->io->write($buffer);
|
||||
}
|
||||
}
|
||||
|
||||
public static function getTimeout()
|
||||
|
|
|
@ -340,7 +340,7 @@ class EventDispatcherTest extends TestCase
|
|||
->setConstructorArgs(array(
|
||||
$this->createComposerInstance(),
|
||||
$io = $this->getMock('Composer\IO\IOInterface'),
|
||||
new ProcessExecutor,
|
||||
new ProcessExecutor($io),
|
||||
))
|
||||
->setMethods(array('getListeners'))
|
||||
->getMock();
|
||||
|
@ -354,9 +354,11 @@ class EventDispatcherTest extends TestCase
|
|||
->method('writeError')
|
||||
->with($this->equalTo('> echo foo'));
|
||||
|
||||
ob_start();
|
||||
$io->expects($this->once())
|
||||
->method('write')
|
||||
->with($this->equalTo('foo'.PHP_EOL));
|
||||
|
||||
$dispatcher->dispatchScript(ScriptEvents::POST_INSTALL_CMD, false);
|
||||
$this->assertEquals('foo', trim(ob_get_clean()));
|
||||
}
|
||||
|
||||
public function testDispatcherOutputsErrorOnFailedCommand()
|
||||
|
|
|
@ -44,6 +44,14 @@ class ComposerSchemaTest extends \PHPUnit_Framework_TestCase
|
|||
$this->assertTrue($this->check($json));
|
||||
}
|
||||
|
||||
public function testRequireTypes()
|
||||
{
|
||||
$json = '{"name": "name", "description": "description", "require": {"a": ["b"]} }';
|
||||
$this->assertEquals(array(
|
||||
array('property' => 'require.a', 'message' => 'Array value found, but a string is required', 'constraint' => 'type'),
|
||||
), $this->check($json));
|
||||
}
|
||||
|
||||
public function testMinimumStabilityValues()
|
||||
{
|
||||
$json = '{ "name": "vendor/package", "description": "generic description", "minimum-stability": "" }';
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Composer\Test\Repository\Vcs;
|
||||
|
||||
use Composer\Repository\Vcs\HgDriver;
|
||||
use Composer\TestCase;
|
||||
use Composer\Util\Filesystem;
|
||||
use Composer\Config;
|
||||
|
||||
class HgDriverTest extends TestCase
|
||||
{
|
||||
|
||||
/** @type \Composer\IO\IOInterface|\PHPUnit_Framework_MockObject_MockObject */
|
||||
private $io;
|
||||
/** @type Config */
|
||||
private $config;
|
||||
/** @type string */
|
||||
private $home;
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
$this->io = $this->getMock('Composer\IO\IOInterface');
|
||||
$this->home = $this->getUniqueTmpDirectory();
|
||||
$this->config = new Config();
|
||||
$this->config->merge(array(
|
||||
'config' => array(
|
||||
'home' => $this->home,
|
||||
),
|
||||
));
|
||||
}
|
||||
|
||||
public function tearDown()
|
||||
{
|
||||
$fs = new Filesystem;
|
||||
$fs->removeDirectory($this->home);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider supportsDataProvider
|
||||
*/
|
||||
public function testSupports($repositoryUrl)
|
||||
{
|
||||
$this->assertTrue(
|
||||
HgDriver::supports($this->io, $this->config, $repositoryUrl)
|
||||
);
|
||||
}
|
||||
|
||||
public function supportsDataProvider()
|
||||
{
|
||||
return array(
|
||||
array('ssh://bitbucket.org/user/repo'),
|
||||
array('ssh://hg@bitbucket.org/user/repo'),
|
||||
array('ssh://user@bitbucket.org/user/repo'),
|
||||
array('https://bitbucket.org/user/repo'),
|
||||
array('https://user@bitbucket.org/user/repo'),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
|
@ -35,6 +35,17 @@ class ProcessExecutorTest extends TestCase
|
|||
$this->assertEquals("foo".PHP_EOL, $output);
|
||||
}
|
||||
|
||||
public function testUseIOIsNotNullAndIfNotCaptured()
|
||||
{
|
||||
$io = $this->getMock('Composer\IO\IOInterface');
|
||||
$io->expects($this->once())
|
||||
->method('write')
|
||||
->with($this->equalTo('foo'.PHP_EOL));
|
||||
|
||||
$process = new ProcessExecutor($io);
|
||||
$process->execute('echo foo');
|
||||
}
|
||||
|
||||
public function testExecuteCapturesStderr()
|
||||
{
|
||||
$process = new ProcessExecutor;
|
||||
|
|
Loading…
Reference in New Issue