1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-01 20:30:39 +02:00

GitPreparer: Handle failed git commit test lock

Happens when the Git config does not have user.name and user.email
This commit is contained in:
Deltik
2019-11-28 13:38:24 -06:00
parent ae9f91084b
commit 6e8c81e652

View File

@@ -34,14 +34,13 @@ class GitPreparer implements Preparer
$this->runCommand('git add -f '.escapeshellarg(self::TEST_IN_PROGRESS_FILE)); $this->runCommand('git add -f '.escapeshellarg(self::TEST_IN_PROGRESS_FILE));
$this->runCommand('git add -A -f'); $this->runCommand('git add -A -f');
$commit_command = 'git commit -a --no-gpg-sign ' . $commit_command = 'git -c user.name="Test Run" -c user.email="testrun@example.com" commit -a --no-gpg-sign ' .
"-m '".self::TEST_IN_PROGRESS."! If test crashed, run `git log -1` for instructions' " . "-m '".self::TEST_IN_PROGRESS."! If test crashed, run `git log -1` for instructions' " .
"-m 'Running the test again after fixing the crash will clear this commit\nand any related stashes.' " . "-m 'Running the test again after fixing the crash will clear this commit\nand any related stashes.' " .
"-m 'Alternatively, run these commands to restore the repository to its\npre-test state:' "; "-m 'Alternatively, run these commands to restore the repository to its\npre-test state:' ";
$unsetVcsInProgress_commands = [ $unsetVcsInProgress_commands = [
'git reset --hard HEAD', 'git reset --hard HEAD',
'git clean -fdx', 'git clean -fdx',
// 'git stash pop',
'git reset --mixed HEAD^', 'git reset --mixed HEAD^',
'rm -fv '.escapeshellarg(self::TEST_IN_PROGRESS) 'rm -fv '.escapeshellarg(self::TEST_IN_PROGRESS)
]; ];
@@ -49,8 +48,20 @@ class GitPreparer implements Preparer
{ {
$commit_command .= "-m ".escapeshellarg($command)." "; $commit_command .= "-m ".escapeshellarg($command)." ";
} }
$this->runCommand($commit_command);
// $this->runCommand('git stash push --all -m '.escapeshellarg(self::TEST_IN_PROGRESS)); $stdout = '';
$stderr = '';
$rc = $this->runCommand($commit_command, $stdout, $stderr);
if ($rc !== 0)
{
@unlink(self::TEST_IN_PROGRESS_FILE);
$this->debug('Error taking snapshot with Git!');
$this->debug('========== STDOUT ==========');
$this->debug($stdout);
$this->debug('========== STDERR ==========');
$this->debug($stderr);
throw new Exception("Error taking snapshot with Git!");
}
} }
protected function isVcsInProgress($case = '') protected function isVcsInProgress($case = '')
@@ -71,6 +82,12 @@ class GitPreparer implements Preparer
return in_array(true, $in_progress); return in_array(true, $in_progress);
} }
/**
* @param string $command The command to run
* @param string $stdout Reference to the STDOUT output as a string
* @param string $stderr Reference to the STDERR output as a string
* @return int Return code of the command that was run
*/
protected function runCommand($command, &$stdout = "", &$stderr = "") protected function runCommand($command, &$stdout = "", &$stderr = "")
{ {
$descriptorspec = [ $descriptorspec = [
@@ -85,7 +102,7 @@ class GitPreparer implements Preparer
{ {
fclose($pipe); fclose($pipe);
} }
proc_close($resource); return proc_close($resource);
} }
protected function unsetVcsInProgress() protected function unsetVcsInProgress()