1
0
Fork 0

Merge remote-tracking branch 'alcohol/unique-test-directories'

pull/4834/head
Jordi Boggiano 2016-01-26 12:35:29 +00:00
commit 783e0aec8a
25 changed files with 145 additions and 91 deletions

View File

@ -12,14 +12,15 @@
namespace Composer\Test; namespace Composer\Test;
use Symfony\Component\Process\Process; use Composer\TestCase;
use Composer\Util\Filesystem; use Composer\Util\Filesystem;
use Symfony\Component\Finder\Finder; use Symfony\Component\Finder\Finder;
use Symfony\Component\Process\Process;
/** /**
* @group slow * @group slow
*/ */
class AllFunctionalTest extends \PHPUnit_Framework_TestCase class AllFunctionalTest extends TestCase
{ {
protected $oldcwd; protected $oldcwd;
protected $oldenv; protected $oldenv;
@ -29,17 +30,21 @@ class AllFunctionalTest extends \PHPUnit_Framework_TestCase
public function setUp() public function setUp()
{ {
$this->oldcwd = getcwd(); $this->oldcwd = getcwd();
chdir(__DIR__.'/Fixtures/functional'); chdir(__DIR__.'/Fixtures/functional');
} }
public function tearDown() public function tearDown()
{ {
chdir($this->oldcwd); chdir($this->oldcwd);
$fs = new Filesystem; $fs = new Filesystem;
if ($this->testDir) { if ($this->testDir) {
$fs->removeDirectory($this->testDir); $fs->removeDirectory($this->testDir);
$this->testDir = null; $this->testDir = null;
} }
if ($this->oldenv) { if ($this->oldenv) {
$fs->removeDirectory(getenv('COMPOSER_HOME')); $fs->removeDirectory(getenv('COMPOSER_HOME'));
$_SERVER['COMPOSER_HOME'] = $this->oldenv; $_SERVER['COMPOSER_HOME'] = $this->oldenv;
@ -50,7 +55,7 @@ class AllFunctionalTest extends \PHPUnit_Framework_TestCase
public static function setUpBeforeClass() public static function setUpBeforeClass()
{ {
self::$pharPath = sys_get_temp_dir().'/composer-phar-test/composer.phar'; self::$pharPath = self::getUniqueTmpDirectory() . '/composer.phar';
} }
public static function tearDownAfterClass() public static function tearDownAfterClass()
@ -66,9 +71,7 @@ class AllFunctionalTest extends \PHPUnit_Framework_TestCase
} }
$target = dirname(self::$pharPath); $target = dirname(self::$pharPath);
$fs = new Filesystem; $fs = new Filesystem();
$fs->removeDirectory($target);
$fs->ensureDirectoryExists($target);
chdir($target); chdir($target);
$it = new \RecursiveDirectoryIterator(__DIR__.'/../../../', \RecursiveDirectoryIterator::SKIP_DOTS); $it = new \RecursiveDirectoryIterator(__DIR__.'/../../../', \RecursiveDirectoryIterator::SKIP_DOTS);
@ -85,9 +88,11 @@ class AllFunctionalTest extends \PHPUnit_Framework_TestCase
$proc = new Process('php '.escapeshellarg('./bin/compile'), $target); $proc = new Process('php '.escapeshellarg('./bin/compile'), $target);
$exitcode = $proc->run(); $exitcode = $proc->run();
if ($exitcode !== 0 || trim($proc->getOutput())) { if ($exitcode !== 0 || trim($proc->getOutput())) {
$this->fail($proc->getOutput()); $this->fail($proc->getOutput());
} }
$this->assertTrue(file_exists(self::$pharPath)); $this->assertTrue(file_exists(self::$pharPath));
} }
@ -140,7 +145,7 @@ class AllFunctionalTest extends \PHPUnit_Framework_TestCase
$data = array(); $data = array();
$section = null; $section = null;
$testDir = sys_get_temp_dir().'/composer_functional_test'.uniqid(mt_rand(), true); $testDir = self::getUniqueTmpDirectory();
$this->testDir = $testDir; $this->testDir = $testDir;
$varRegex = '#%([a-zA-Z_-]+)%#'; $varRegex = '#%([a-zA-Z_-]+)%#';
$variableReplacer = function ($match) use (&$data, $testDir) { $variableReplacer = function ($match) use (&$data, $testDir) {

View File

@ -88,8 +88,7 @@ class AutoloadGeneratorTest extends TestCase
$this->fs = new Filesystem; $this->fs = new Filesystem;
$that = $this; $that = $this;
$this->workingDir = realpath(sys_get_temp_dir()).DIRECTORY_SEPARATOR.'cmptest-'.md5(uniqid('', true)); $this->workingDir = $this->getUniqueTmpDirectory();
$this->fs->ensureDirectoryExists($this->workingDir);
$this->vendorDir = $this->workingDir.DIRECTORY_SEPARATOR.'composer-test-autoload'; $this->vendorDir = $this->workingDir.DIRECTORY_SEPARATOR.'composer-test-autoload';
$this->ensureDirectoryExistsAndClear($this->vendorDir); $this->ensureDirectoryExistsAndClear($this->vendorDir);
@ -144,6 +143,7 @@ class AutoloadGeneratorTest extends TestCase
if (is_dir($this->workingDir)) { if (is_dir($this->workingDir)) {
$this->fs->removeDirectory($this->workingDir); $this->fs->removeDirectory($this->workingDir);
} }
if (is_dir($this->vendorDir)) { if (is_dir($this->vendorDir)) {
$this->fs->removeDirectory($this->vendorDir); $this->fs->removeDirectory($this->vendorDir);
} }

View File

@ -19,10 +19,11 @@
namespace Composer\Test\Autoload; namespace Composer\Test\Autoload;
use Composer\Autoload\ClassMapGenerator; use Composer\Autoload\ClassMapGenerator;
use Composer\TestCase;
use Symfony\Component\Finder\Finder; use Symfony\Component\Finder\Finder;
use Composer\Util\Filesystem; use Composer\Util\Filesystem;
class ClassMapGeneratorTest extends \PHPUnit_Framework_TestCase class ClassMapGeneratorTest extends TestCase
{ {
/** /**
* @dataProvider getTestCreateMapTests * @dataProvider getTestCreateMapTests
@ -127,10 +128,8 @@ class ClassMapGeneratorTest extends \PHPUnit_Framework_TestCase
{ {
$this->checkIfFinderIsAvailable(); $this->checkIfFinderIsAvailable();
$tempDir = sys_get_temp_dir().'/ComposerTestAmbiguousRefs'; $tempDir = $this->getUniqueTmpDirectory();
if (!is_dir($tempDir.'/other')) { $this->ensureDirectoryExistsAndClear($tempDir.'/other');
mkdir($tempDir.'/other', 0777, true);
}
$finder = new Finder(); $finder = new Finder();
$finder->files()->in($tempDir); $finder->files()->in($tempDir);
@ -171,13 +170,9 @@ class ClassMapGeneratorTest extends \PHPUnit_Framework_TestCase
*/ */
public function testUnambiguousReference() public function testUnambiguousReference()
{ {
$tempDir = sys_get_temp_dir().'/ComposerTestUnambiguousRefs'; $tempDir = $this->getUniqueTmpDirectory();
if (!is_dir($tempDir)) {
mkdir($tempDir, 0777, true);
}
file_put_contents($tempDir.'/A.php', "<?php\nclass A {}"); file_put_contents($tempDir.'/A.php', "<?php\nclass A {}");
file_put_contents( file_put_contents(
$tempDir.'/B.php', $tempDir.'/B.php',
"<?php "<?php

View File

@ -25,15 +25,15 @@ class CacheTest extends TestCase
$this->markTestSkipped('Test causes intermittent failures on Travis'); $this->markTestSkipped('Test causes intermittent failures on Travis');
} }
$this->root = sys_get_temp_dir() . '/composer_testdir'; $this->root = $this->getUniqueTmpDirectory();
$this->ensureDirectoryExistsAndClear($this->root);
$this->files = array(); $this->files = array();
$zeros = str_repeat('0', 1000); $zeros = str_repeat('0', 1000);
for ($i = 0; $i < 4; $i++) { for ($i = 0; $i < 4; $i++) {
file_put_contents("{$this->root}/cached.file{$i}.zip", $zeros); file_put_contents("{$this->root}/cached.file{$i}.zip", $zeros);
$this->files[] = new \SplFileInfo("{$this->root}/cached.file{$i}.zip"); $this->files[] = new \SplFileInfo("{$this->root}/cached.file{$i}.zip");
} }
$this->finder = $this->getMockBuilder('Symfony\Component\Finder\Finder')->disableOriginalConstructor()->getMock(); $this->finder = $this->getMockBuilder('Symfony\Component\Finder\Finder')->disableOriginalConstructor()->getMock();
$io = $this->getMock('Composer\IO\IOInterface'); $io = $this->getMock('Composer\IO\IOInterface');

View File

@ -14,9 +14,10 @@ namespace Composer\Test\Json;
use Composer\Config\JsonConfigSource; use Composer\Config\JsonConfigSource;
use Composer\Json\JsonFile; use Composer\Json\JsonFile;
use Composer\TestCase;
use Composer\Util\Filesystem; use Composer\Util\Filesystem;
class JsonConfigSourceTest extends \PHPUnit_Framework_TestCase class JsonConfigSourceTest extends TestCase
{ {
/** @var Filesystem */ /** @var Filesystem */
private $fs; private $fs;
@ -31,8 +32,7 @@ class JsonConfigSourceTest extends \PHPUnit_Framework_TestCase
protected function setUp() protected function setUp()
{ {
$this->fs = new Filesystem; $this->fs = new Filesystem;
$this->workingDir = realpath(sys_get_temp_dir()).DIRECTORY_SEPARATOR.'cmptest'; $this->workingDir = $this->getUniqueTmpDirectory();
$this->fs->ensureDirectoryExists($this->workingDir);
} }
protected function tearDown() protected function tearDown()

View File

@ -13,9 +13,10 @@
namespace Composer\Test\Downloader; namespace Composer\Test\Downloader;
use Composer\Downloader\FileDownloader; use Composer\Downloader\FileDownloader;
use Composer\TestCase;
use Composer\Util\Filesystem; use Composer\Util\Filesystem;
class FileDownloaderTest extends \PHPUnit_Framework_TestCase class FileDownloaderTest extends TestCase
{ {
protected function getDownloader($io = null, $config = null, $eventDispatcher = null, $cache = null, $rfs = null, $filesystem = null) protected function getDownloader($io = null, $config = null, $eventDispatcher = null, $cache = null, $rfs = null, $filesystem = null)
{ {
@ -53,9 +54,9 @@ class FileDownloaderTest extends \PHPUnit_Framework_TestCase
->will($this->returnValue(array('url'))) ->will($this->returnValue(array('url')))
; ;
$path = tempnam(sys_get_temp_dir(), 'c'); $path = tempnam($this->getUniqueTmpDirectory(), 'c');
$downloader = $this->getDownloader(); $downloader = $this->getDownloader();
try { try {
$downloader->download($packageMock, $path); $downloader->download($packageMock, $path);
$this->fail(); $this->fail();
@ -102,10 +103,7 @@ class FileDownloaderTest extends \PHPUnit_Framework_TestCase
->will($this->returnValue(array())) ->will($this->returnValue(array()))
; ;
do { $path = $this->getUniqueTmpDirectory();
$path = sys_get_temp_dir().'/'.md5(time().mt_rand());
} while (file_exists($path));
$ioMock = $this->getMock('Composer\IO\IOInterface'); $ioMock = $this->getMock('Composer\IO\IOInterface');
$ioMock->expects($this->any()) $ioMock->expects($this->any())
->method('write') ->method('write')
@ -187,14 +185,9 @@ class FileDownloaderTest extends \PHPUnit_Framework_TestCase
; ;
$filesystem = $this->getMock('Composer\Util\Filesystem'); $filesystem = $this->getMock('Composer\Util\Filesystem');
do { $path = $this->getUniqueTmpDirectory();
$path = sys_get_temp_dir().'/'.md5(time().mt_rand());
} while (file_exists($path));
$downloader = $this->getDownloader(null, null, null, null, null, $filesystem); $downloader = $this->getDownloader(null, null, null, null, null, $filesystem);
// make sure the file expected to be downloaded is on disk already // make sure the file expected to be downloaded is on disk already
mkdir($path, 0777, true);
touch($path.'/script.js'); touch($path.'/script.js');
try { try {

View File

@ -14,9 +14,10 @@ namespace Composer\Test\Downloader;
use Composer\Downloader\GitDownloader; use Composer\Downloader\GitDownloader;
use Composer\Config; use Composer\Config;
use Composer\TestCase;
use Composer\Util\Filesystem; use Composer\Util\Filesystem;
class GitDownloaderTest extends \PHPUnit_Framework_TestCase class GitDownloaderTest extends TestCase
{ {
/** @var Filesystem */ /** @var Filesystem */
private $fs; private $fs;
@ -26,7 +27,7 @@ class GitDownloaderTest extends \PHPUnit_Framework_TestCase
protected function setUp() protected function setUp()
{ {
$this->fs = new Filesystem; $this->fs = new Filesystem;
$this->workingDir = realpath(sys_get_temp_dir()).DIRECTORY_SEPARATOR.'cmptest-'.md5(uniqid('', true)); $this->workingDir = $this->getUniqueTmpDirectory();
} }
protected function tearDown() protected function tearDown()

View File

@ -13,16 +13,17 @@
namespace Composer\Test\Downloader; namespace Composer\Test\Downloader;
use Composer\Downloader\HgDownloader; use Composer\Downloader\HgDownloader;
use Composer\TestCase;
use Composer\Util\Filesystem; use Composer\Util\Filesystem;
class HgDownloaderTest extends \PHPUnit_Framework_TestCase class HgDownloaderTest extends TestCase
{ {
/** @var string */ /** @var string */
private $workingDir; private $workingDir;
protected function setUp() protected function setUp()
{ {
$this->workingDir = realpath(sys_get_temp_dir()).DIRECTORY_SEPARATOR.'cmptest-'.md5(uniqid('', true)); $this->workingDir = $this->getUniqueTmpDirectory();
} }
protected function tearDown() protected function tearDown()

View File

@ -13,8 +13,9 @@
namespace Composer\Test\Downloader; namespace Composer\Test\Downloader;
use Composer\Downloader\PearPackageExtractor; use Composer\Downloader\PearPackageExtractor;
use Composer\TestCase;
class PearPackageExtractorTest extends \PHPUnit_Framework_TestCase class PearPackageExtractorTest extends TestCase
{ {
public function testShouldExtractPackage_1_0() public function testShouldExtractPackage_1_0()
{ {
@ -122,7 +123,7 @@ class PearPackageExtractorTest extends \PHPUnit_Framework_TestCase
public function testShouldPerformReplacements() public function testShouldPerformReplacements()
{ {
$from = tempnam(sys_get_temp_dir(), 'pear-extract'); $from = tempnam($this->getUniqueTmpDirectory(), 'pear-extract');
$to = $from.'-to'; $to = $from.'-to';
$original = 'replaced: @placeholder@; not replaced: @another@; replaced again: @placeholder@'; $original = 'replaced: @placeholder@; not replaced: @another@; replaced again: @placeholder@';

View File

@ -16,12 +16,13 @@ use Composer\Downloader\PerforceDownloader;
use Composer\Config; use Composer\Config;
use Composer\Repository\VcsRepository; use Composer\Repository\VcsRepository;
use Composer\IO\IOInterface; use Composer\IO\IOInterface;
use Composer\TestCase;
use Composer\Util\Filesystem; use Composer\Util\Filesystem;
/** /**
* @author Matt Whittom <Matt.Whittom@veteransunited.com> * @author Matt Whittom <Matt.Whittom@veteransunited.com>
*/ */
class PerforceDownloaderTest extends \PHPUnit_Framework_TestCase class PerforceDownloaderTest extends TestCase
{ {
protected $config; protected $config;
protected $downloader; protected $downloader;
@ -34,7 +35,7 @@ class PerforceDownloaderTest extends \PHPUnit_Framework_TestCase
protected function setUp() protected function setUp()
{ {
$this->testPath = sys_get_temp_dir() . '/composer-test'; $this->testPath = $this->getUniqueTmpDirectory();
$this->repoConfig = $this->getRepoConfig(); $this->repoConfig = $this->getRepoConfig();
$this->config = $this->getConfig(); $this->config = $this->getConfig();
$this->io = $this->getMockIoInterface(); $this->io = $this->getMockIoInterface();

View File

@ -13,10 +13,11 @@
namespace Composer\Test\Downloader; namespace Composer\Test\Downloader;
use Composer\Downloader\XzDownloader; use Composer\Downloader\XzDownloader;
use Composer\TestCase;
use Composer\Util\Filesystem; use Composer\Util\Filesystem;
use Composer\Util\RemoteFilesystem; use Composer\Util\RemoteFilesystem;
class XzDownloaderTest extends \PHPUnit_Framework_TestCase class XzDownloaderTest extends TestCase
{ {
/** /**
* @var Filesystem * @var Filesystem
@ -33,7 +34,7 @@ class XzDownloaderTest extends \PHPUnit_Framework_TestCase
if (defined('PHP_WINDOWS_VERSION_BUILD')) { if (defined('PHP_WINDOWS_VERSION_BUILD')) {
$this->markTestSkipped('Skip test on Windows'); $this->markTestSkipped('Skip test on Windows');
} }
$this->testDir = sys_get_temp_dir().'/composer-xz-test-vendor'; $this->testDir = $this->getUniqueTmpDirectory();
} }
public function tearDown() public function tearDown()
@ -67,7 +68,7 @@ class XzDownloaderTest extends \PHPUnit_Framework_TestCase
$downloader = new XzDownloader($io, $config, null, null, null, new RemoteFilesystem($io)); $downloader = new XzDownloader($io, $config, null, null, null, new RemoteFilesystem($io));
try { try {
$downloader->download($packageMock, sys_get_temp_dir().'/composer-xz-test'); $downloader->download($packageMock, $this->getUniqueTmpDirectory());
$this->fail('Download of invalid tarball should throw an exception'); $this->fail('Download of invalid tarball should throw an exception');
} catch (\RuntimeException $e) { } catch (\RuntimeException $e) {
$this->assertContains('File format not recognized', $e->getMessage()); $this->assertContains('File format not recognized', $e->getMessage());

View File

@ -13,9 +13,10 @@
namespace Composer\Test\Downloader; namespace Composer\Test\Downloader;
use Composer\Downloader\ZipDownloader; use Composer\Downloader\ZipDownloader;
use Composer\TestCase;
use Composer\Util\Filesystem; use Composer\Util\Filesystem;
class ZipDownloaderTest extends \PHPUnit_Framework_TestCase class ZipDownloaderTest extends TestCase
{ {
/** /**
@ -28,7 +29,8 @@ class ZipDownloaderTest extends \PHPUnit_Framework_TestCase
if (!class_exists('ZipArchive')) { if (!class_exists('ZipArchive')) {
$this->markTestSkipped('zip extension missing'); $this->markTestSkipped('zip extension missing');
} }
$this->testDir = sys_get_temp_dir().'/composer-zip-test-vendor';
$this->testDir = $this->getUniqueTmpDirectory();
} }
public function tearDown() public function tearDown()

View File

@ -22,6 +22,7 @@ class LibraryInstallerTest extends TestCase
{ {
protected $composer; protected $composer;
protected $config; protected $config;
protected $rootDir;
protected $vendorDir; protected $vendorDir;
protected $binDir; protected $binDir;
protected $dm; protected $dm;
@ -37,10 +38,11 @@ class LibraryInstallerTest extends TestCase
$this->config = new Config(); $this->config = new Config();
$this->composer->setConfig($this->config); $this->composer->setConfig($this->config);
$this->vendorDir = realpath(sys_get_temp_dir()).DIRECTORY_SEPARATOR.'composer-test-vendor'; $this->rootDir = $this->getUniqueTmpDirectory();
$this->vendorDir = $this->rootDir.DIRECTORY_SEPARATOR.'vendor';
$this->ensureDirectoryExistsAndClear($this->vendorDir); $this->ensureDirectoryExistsAndClear($this->vendorDir);
$this->binDir = realpath(sys_get_temp_dir()).DIRECTORY_SEPARATOR.'composer-test-bin'; $this->binDir = $this->rootDir.DIRECTORY_SEPARATOR.'bin';
$this->ensureDirectoryExistsAndClear($this->binDir); $this->ensureDirectoryExistsAndClear($this->binDir);
$this->config->merge(array( $this->config->merge(array(
@ -61,8 +63,7 @@ class LibraryInstallerTest extends TestCase
protected function tearDown() protected function tearDown()
{ {
$this->fs->removeDirectory($this->vendorDir); $this->fs->removeDirectory($this->rootDir);
$this->fs->removeDirectory($this->binDir);
} }
public function testInstallerCreationShouldNotCreateVendorDirectory() public function testInstallerCreationShouldNotCreateVendorDirectory()

View File

@ -13,11 +13,12 @@
namespace Composer\Test\Package\Archiver; namespace Composer\Test\Package\Archiver;
use Composer\Package\Archiver\ArchivableFilesFinder; use Composer\Package\Archiver\ArchivableFilesFinder;
use Composer\TestCase;
use Composer\Util\Filesystem; use Composer\Util\Filesystem;
use Symfony\Component\Process\Process; use Symfony\Component\Process\Process;
use Symfony\Component\Process\ExecutableFinder; use Symfony\Component\Process\ExecutableFinder;
class ArchivableFilesFinderTest extends \PHPUnit_Framework_TestCase class ArchivableFilesFinderTest extends TestCase
{ {
protected $sources; protected $sources;
protected $finder; protected $finder;
@ -29,7 +30,7 @@ class ArchivableFilesFinderTest extends \PHPUnit_Framework_TestCase
$this->fs = $fs; $this->fs = $fs;
$this->sources = $fs->normalizePath( $this->sources = $fs->normalizePath(
realpath(sys_get_temp_dir()).'/composer_archiver_test'.uniqid(mt_rand(), true) $this->getUniqueTmpDirectory()
); );
$fileTree = array( $fileTree = array(

View File

@ -12,11 +12,12 @@
namespace Composer\Test\Package\Archiver; namespace Composer\Test\Package\Archiver;
use Composer\TestCase;
use Composer\Util\Filesystem; use Composer\Util\Filesystem;
use Composer\Util\ProcessExecutor; use Composer\Util\ProcessExecutor;
use Composer\Package\Package; use Composer\Package\Package;
abstract class ArchiverTest extends \PHPUnit_Framework_TestCase abstract class ArchiverTest extends TestCase
{ {
/** /**
* @var \Composer\Util\Filesystem * @var \Composer\Util\Filesystem
@ -37,8 +38,7 @@ abstract class ArchiverTest extends \PHPUnit_Framework_TestCase
{ {
$this->filesystem = new Filesystem(); $this->filesystem = new Filesystem();
$this->process = new ProcessExecutor(); $this->process = new ProcessExecutor();
$this->testDir = sys_get_temp_dir().'/composer_archiver_test_'.mt_rand(); $this->testDir = $this->getUniqueTmpDirectory();
$this->filesystem->ensureDirectoryExists($this->testDir);
} }
public function tearDown() public function tearDown()

View File

@ -21,14 +21,14 @@ class PharArchiverTest extends ArchiverTest
// Set up repository // Set up repository
$this->setupDummyRepo(); $this->setupDummyRepo();
$package = $this->setupPackage(); $package = $this->setupPackage();
$target = sys_get_temp_dir().'/composer_archiver_test.tar'; $target = $this->getUniqueTmpDirectory().'/composer_archiver_test.tar';
// Test archive // Test archive
$archiver = new PharArchiver(); $archiver = new PharArchiver();
$archiver->archive($package->getSourceUrl(), $target, 'tar', array('foo/bar', 'baz', '!/foo/bar/baz')); $archiver->archive($package->getSourceUrl(), $target, 'tar', array('foo/bar', 'baz', '!/foo/bar/baz'));
$this->assertFileExists($target); $this->assertFileExists($target);
unlink($target); $this->filesystem->removeDirectory(dirname($target));
} }
public function testZipArchive() public function testZipArchive()
@ -36,14 +36,14 @@ class PharArchiverTest extends ArchiverTest
// Set up repository // Set up repository
$this->setupDummyRepo(); $this->setupDummyRepo();
$package = $this->setupPackage(); $package = $this->setupPackage();
$target = sys_get_temp_dir().'/composer_archiver_test.zip'; $target = $this->getUniqueTmpDirectory().'/composer_archiver_test.zip';
// Test archive // Test archive
$archiver = new PharArchiver(); $archiver = new PharArchiver();
$archiver->archive($package->getSourceUrl(), $target, 'zip'); $archiver->archive($package->getSourceUrl(), $target, 'zip');
$this->assertFileExists($target); $this->assertFileExists($target);
unlink($target); $this->filesystem->removeDirectory(dirname($target));
} }
/** /**

View File

@ -69,7 +69,7 @@ class PluginInstallerTest extends TestCase
{ {
$loader = new JsonLoader(new ArrayLoader()); $loader = new JsonLoader(new ArrayLoader());
$this->packages = array(); $this->packages = array();
$this->directory = sys_get_temp_dir() . '/' . uniqid(); $this->directory = $this->getUniqueTmpDirectory();
for ($i = 1; $i <= 7; $i++) { for ($i = 1; $i <= 7; $i++) {
$filename = '/Fixtures/plugin-v'.$i.'/composer.json'; $filename = '/Fixtures/plugin-v'.$i.'/composer.json';
mkdir(dirname($this->directory . $filename), 0777, true); mkdir(dirname($this->directory . $filename), 0777, true);

View File

@ -42,7 +42,7 @@ class FilesystemRepositoryTest extends TestCase
} }
/** /**
* @expectedException Composer\Repository\InvalidRepositoryException * @expectedException \Composer\Repository\InvalidRepositoryException
*/ */
public function testCorruptedRepositoryFile() public function testCorruptedRepositoryFile()
{ {

View File

@ -14,19 +14,22 @@ namespace Composer\Test\Repository\Vcs;
use Composer\Downloader\TransportException; use Composer\Downloader\TransportException;
use Composer\Repository\Vcs\GitHubDriver; use Composer\Repository\Vcs\GitHubDriver;
use Composer\TestCase;
use Composer\Util\Filesystem; use Composer\Util\Filesystem;
use Composer\Config; use Composer\Config;
class GitHubDriverTest extends \PHPUnit_Framework_TestCase class GitHubDriverTest extends TestCase
{ {
private $home;
private $config; private $config;
public function setUp() public function setUp()
{ {
$this->home = $this->getUniqueTmpDirectory();
$this->config = new Config(); $this->config = new Config();
$this->config->merge(array( $this->config->merge(array(
'config' => array( 'config' => array(
'home' => sys_get_temp_dir() . '/composer-test', 'home' => $this->home,
), ),
)); ));
} }
@ -34,7 +37,7 @@ class GitHubDriverTest extends \PHPUnit_Framework_TestCase
public function tearDown() public function tearDown()
{ {
$fs = new Filesystem; $fs = new Filesystem;
$fs->removeDirectory(sys_get_temp_dir() . '/composer-test'); $fs->removeDirectory($this->home);
} }
public function testPrivateRepository() public function testPrivateRepository()

View File

@ -14,29 +14,42 @@ namespace Composer\Test\Repository\Vcs;
use Composer\Repository\Vcs\GitLabDriver; use Composer\Repository\Vcs\GitLabDriver;
use Composer\Config; use Composer\Config;
use Composer\TestCase;
use Composer\Util\Filesystem;
/** /**
* @author Jérôme Tamarelle <jerome@tamarelle.net> * @author Jérôme Tamarelle <jerome@tamarelle.net>
*/ */
class GitLabDriverTest extends \PHPUnit_Framework_TestCase class GitLabDriverTest extends TestCase
{ {
private $home;
private $config;
private $io;
private $process;
private $remoteFilesystem;
public function setUp() public function setUp()
{ {
$this->home = $this->getUniqueTmpDirectory();
$this->config = new Config(); $this->config = new Config();
$this->config->merge(array( $this->config->merge(array(
'config' => array( 'config' => array(
'home' => sys_get_temp_dir().'/composer-test', 'home' => $this->home,
'gitlab-domains' => array('mycompany.com/gitlab', 'gitlab.com') 'gitlab-domains' => array('mycompany.com/gitlab', 'gitlab.com')
), ),
)); ));
$this->io = $this->prophesize('Composer\IO\IOInterface'); $this->io = $this->prophesize('Composer\IO\IOInterface');
$this->process = $this->prophesize('Composer\Util\ProcessExecutor'); $this->process = $this->prophesize('Composer\Util\ProcessExecutor');
$this->remoteFilesystem = $this->prophesize('Composer\Util\RemoteFilesystem'); $this->remoteFilesystem = $this->prophesize('Composer\Util\RemoteFilesystem');
} }
public function tearDown()
{
$fs = new Filesystem();
$fs->removeDirectory($this->home);
}
public function getInitializeUrls() public function getInitializeUrls()
{ {
return array( return array(

View File

@ -13,6 +13,7 @@
namespace Composer\Test\Repository\Vcs; namespace Composer\Test\Repository\Vcs;
use Composer\Repository\Vcs\PerforceDriver; use Composer\Repository\Vcs\PerforceDriver;
use Composer\TestCase;
use Composer\Util\Filesystem; use Composer\Util\Filesystem;
use Composer\Config; use Composer\Config;
use Composer\Util\Perforce; use Composer\Util\Perforce;
@ -20,7 +21,7 @@ use Composer\Util\Perforce;
/** /**
* @author Matt Whittom <Matt.Whittom@veteransunited.com> * @author Matt Whittom <Matt.Whittom@veteransunited.com>
*/ */
class PerforceDriverTest extends \PHPUnit_Framework_TestCase class PerforceDriverTest extends TestCase
{ {
protected $config; protected $config;
protected $io; protected $io;
@ -29,6 +30,7 @@ class PerforceDriverTest extends \PHPUnit_Framework_TestCase
protected $testPath; protected $testPath;
protected $driver; protected $driver;
protected $repoConfig; protected $repoConfig;
protected $perforce;
const TEST_URL = 'TEST_PERFORCE_URL'; const TEST_URL = 'TEST_PERFORCE_URL';
const TEST_DEPOT = 'TEST_DEPOT_CONFIG'; const TEST_DEPOT = 'TEST_DEPOT_CONFIG';
@ -36,7 +38,7 @@ class PerforceDriverTest extends \PHPUnit_Framework_TestCase
protected function setUp() protected function setUp()
{ {
$this->testPath = sys_get_temp_dir() . '/composer-test'; $this->testPath = $this->getUniqueTmpDirectory();
$this->config = $this->getTestConfig($this->testPath); $this->config = $this->getTestConfig($this->testPath);
$this->repoConfig = $this->getTestRepoConfig(); $this->repoConfig = $this->getTestRepoConfig();
$this->io = $this->getMockIOInterface(); $this->io = $this->getMockIOInterface();

View File

@ -14,9 +14,31 @@ namespace Composer\Test\Repository\Vcs;
use Composer\Repository\Vcs\SvnDriver; use Composer\Repository\Vcs\SvnDriver;
use Composer\Config; use Composer\Config;
use Composer\TestCase;
use Composer\Util\Filesystem;
class SvnDriverTest extends \PHPUnit_Framework_TestCase class SvnDriverTest extends TestCase
{ {
protected $home;
protected $config;
public function setUp()
{
$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);
}
/** /**
* @expectedException RuntimeException * @expectedException RuntimeException
*/ */
@ -39,17 +61,11 @@ class SvnDriverTest extends \PHPUnit_Framework_TestCase
->method('execute') ->method('execute')
->will($this->returnValue(0)); ->will($this->returnValue(0));
$config = new Config();
$config->merge(array(
'config' => array(
'home' => sys_get_temp_dir() . '/composer-test',
),
));
$repoConfig = array( $repoConfig = array(
'url' => 'http://till:secret@corp.svn.local/repo', 'url' => 'http://till:secret@corp.svn.local/repo',
); );
$svn = new SvnDriver($repoConfig, $console, $config, $process); $svn = new SvnDriver($repoConfig, $console, $this->config, $process);
$svn->initialize(); $svn->initialize();
} }

View File

@ -12,6 +12,7 @@
namespace Composer\Test\Repository; namespace Composer\Test\Repository;
use Composer\TestCase;
use Symfony\Component\Process\ExecutableFinder; use Symfony\Component\Process\ExecutableFinder;
use Composer\Package\Dumper\ArrayDumper; use Composer\Package\Dumper\ArrayDumper;
use Composer\Repository\VcsRepository; use Composer\Repository\VcsRepository;
@ -23,7 +24,7 @@ use Composer\Config;
/** /**
* @group slow * @group slow
*/ */
class VcsRepositoryTest extends \PHPUnit_Framework_TestCase class VcsRepositoryTest extends TestCase
{ {
private static $composerHome; private static $composerHome;
private static $gitRepo; private static $gitRepo;
@ -32,8 +33,8 @@ class VcsRepositoryTest extends \PHPUnit_Framework_TestCase
protected function initialize() protected function initialize()
{ {
$oldCwd = getcwd(); $oldCwd = getcwd();
self::$composerHome = sys_get_temp_dir() . '/composer-home-'.mt_rand().'/'; self::$composerHome = $this->getUniqueTmpDirectory();
self::$gitRepo = sys_get_temp_dir() . '/composer-git-'.mt_rand().'/'; self::$gitRepo = $this->getUniqueTmpDirectory();
$locator = new ExecutableFinder(); $locator = new ExecutableFinder();
if (!$locator->find('git')) { if (!$locator->find('git')) {

View File

@ -44,8 +44,8 @@ class FilesystemTest extends TestCase
public function setUp() public function setUp()
{ {
$this->fs = new Filesystem; $this->fs = new Filesystem;
$this->workingDir = sys_get_temp_dir() . '/composer_testdir'; $this->workingDir = $this->getUniqueTmpDirectory();
$this->testFile = sys_get_temp_dir() . '/composer_test_file'; $this->testFile = $this->getUniqueTmpDirectory() . '/composer_test_file';
} }
public function tearDown() public function tearDown()
@ -54,7 +54,7 @@ class FilesystemTest extends TestCase
$this->fs->removeDirectory($this->workingDir); $this->fs->removeDirectory($this->workingDir);
} }
if (is_file($this->testFile)) { if (is_file($this->testFile)) {
$this->fs->remove($this->testFile); $this->fs->removeDirectory(dirname($this->testFile));
} }
} }

View File

@ -56,12 +56,29 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase
return new AliasPackage($package, $normVersion, $version); return new AliasPackage($package, $normVersion, $version);
} }
protected function ensureDirectoryExistsAndClear($directory) protected static function getUniqueTmpDirectory()
{
$attempts = 5;
$root = sys_get_temp_dir();
do {
$unique = $root . DIRECTORY_SEPARATOR . uniqid('composer-test-');
if (!file_exists($unique) && mkdir($unique, 0777)) {
return realpath($unique);
}
} while (--$attempts);
throw new \RuntimeException('Failed to create a unique temporary directory.');
}
protected static function ensureDirectoryExistsAndClear($directory)
{ {
$fs = new Filesystem(); $fs = new Filesystem();
if (is_dir($directory)) { if (is_dir($directory)) {
$fs->removeDirectory($directory); $fs->removeDirectory($directory);
} }
mkdir($directory, 0777, true); mkdir($directory, 0777, true);
} }
} }