public static function setUpBeforeClass() { $oldCwd = getcwd(); self::$gitRepo = sys_get_temp_dir() . '/composer-git-' . rand() . '/'; $locator = new ExecutableFinder(); if (!$locator->find('git')) { self::$skipped = 'This test needs a git binary in the PATH to be able to run'; return; } if (!mkdir(self::$gitRepo) || !chdir(self::$gitRepo)) { self::$skipped = 'Could not create and move into the temp git repo ' . self::$gitRepo; return; } // init $process = new ProcessExecutor(); $process->execute('git init', $null); touch('foo'); $process->execute('git add foo', $null); $process->execute('git commit -m init', $null); // non-composed tag & branch $process->execute('git tag 0.5.0', $null); $process->execute('git branch oldbranch', $null); // add composed tag & master branch $composer = array('name' => 'a/b'); file_put_contents('composer.json', json_encode($composer)); $process->execute('git add composer.json', $null); $process->execute('git commit -m addcomposer', $null); $process->execute('git tag 0.6.0', $null); // add feature-a branch $process->execute('git checkout -b feature-a', $null); file_put_contents('foo', 'bar feature'); $process->execute('git add foo', $null); $process->execute('git commit -m change-a', $null); // add version to composer.json $process->execute('git checkout master', $null); $composer['version'] = '1.0.0'; file_put_contents('composer.json', json_encode($composer)); $process->execute('git add composer.json', $null); $process->execute('git commit -m addversion', $null); // create tag with wrong version in it $process->execute('git tag 0.9.0', $null); // create tag with correct version in it $process->execute('git tag 1.0.0', $null); // add feature-b branch $process->execute('git checkout -b feature-b', $null); file_put_contents('foo', 'baz feature'); $process->execute('git add foo', $null); $process->execute('git commit -m change-b', $null); // add 1.0 branch $process->execute('git checkout master', $null); $process->execute('git branch 1.0', $null); // add 1.0.x branch $process->execute('git branch 1.1.x', $null); // update master to 2.0 $composer['version'] = '2.0.0'; file_put_contents('composer.json', json_encode($composer)); $process->execute('git add composer.json', $null); $process->execute('git commit -m bump-version', $null); chdir($oldCwd); }
protected function initialize() { $oldCwd = getcwd(); self::$gitRepo = sys_get_temp_dir() . '/composer-git-' . mt_rand() . '/'; $locator = new ExecutableFinder(); if (!$locator->find('git')) { $this->skipped = 'This test needs a git binary in the PATH to be able to run'; return; } if (!@mkdir(self::$gitRepo) || !@chdir(self::$gitRepo)) { $this->skipped = 'Could not create and move into the temp git repo ' . self::$gitRepo; return; } // init $process = new ProcessExecutor(); $exec = function ($command) use($process) { $cwd = getcwd(); if ($process->execute($command, $output, $cwd) !== 0) { throw new \RuntimeException('Failed to execute ' . $command . ': ' . $process->getErrorOutput()); } }; $exec('git init'); $exec('git config user.email composertest@example.org'); $exec('git config user.name ComposerTest'); touch('foo'); $exec('git add foo'); $exec('git commit -m init'); // non-composed tag & branch $exec('git tag 0.5.0'); $exec('git branch oldbranch'); // add composed tag & master branch $composer = array('name' => 'a/b'); file_put_contents('composer.json', json_encode($composer)); $exec('git add composer.json'); $exec('git commit -m addcomposer'); $exec('git tag 0.6.0'); // add feature-a branch $exec('git checkout -b feature/a-1.0-B'); file_put_contents('foo', 'bar feature'); $exec('git add foo'); $exec('git commit -m change-a'); // add version to composer.json $exec('git checkout master'); $composer['version'] = '1.0.0'; file_put_contents('composer.json', json_encode($composer)); $exec('git add composer.json'); $exec('git commit -m addversion'); // create tag with wrong version in it $exec('git tag 0.9.0'); // create tag with correct version in it $exec('git tag 1.0.0'); // add feature-b branch $exec('git checkout -b feature-b'); file_put_contents('foo', 'baz feature'); $exec('git add foo'); $exec('git commit -m change-b'); // add 1.0 branch $exec('git checkout master'); $exec('git branch 1.0'); // add 1.0.x branch $exec('git branch 1.1.x'); // update master to 2.0 $composer['version'] = '2.0.0'; file_put_contents('composer.json', json_encode($composer)); $exec('git add composer.json'); $exec('git commit -m bump-version'); chdir($oldCwd); }