1
0
Fork 0
Refactor the whole cleanChanges/getLocalChanges code to be more strict with null returns

Co-authored-by: Jordi Boggiano <j.boggiano@seld.be>
pull/10591/head
Antoine Makdessi 2022-02-25 20:44:10 +01:00 committed by GitHub
parent 076925ebef
commit 6c0a6e00b3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 39 additions and 20 deletions

View File

@ -109,7 +109,7 @@ EOT
$errors[$targetDir] = $targetDir . ' is a symbolic link.';
}
if ($changes = $downloader->getLocalChanges($package, $targetDir)) {
if (null !== ($changes = $downloader->getLocalChanges($package, $targetDir))) {
$errors[$targetDir] = $changes;
}
}

View File

@ -500,7 +500,7 @@ class FileDownloader implements DownloaderInterface, ChangeReportInterface
$comparer->setSource($targetDir.'_compare');
$comparer->setUpdate($targetDir);
$comparer->doCompare();
$output = $comparer->getChanged(true, true);
$output = $comparer->getChangedAsString(true);
$this->filesystem->removeDirectory($targetDir.'_compare');
} catch (\Exception $e) {
}
@ -511,6 +511,8 @@ class FileDownloader implements DownloaderInterface, ChangeReportInterface
throw $e;
}
return trim($output);
$output = trim($output);
return strlen($output) > 0 ? $output : null;
}
}

View File

@ -92,7 +92,9 @@ class FossilDownloader extends VcsDownloader
$this->process->execute('fossil changes', $output, realpath($path));
return trim($output) ?: null;
$output = trim($output);
return strlen($output) > 0 ? $output : null;
}
/**

View File

@ -225,7 +225,9 @@ class GitDownloader extends VcsDownloader implements DvcsDownloaderInterface
throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput());
}
return trim($output) ?: null;
$output = trim($output);
return strlen($output) > 0 ? $output : null;
}
/**
@ -338,7 +340,7 @@ class GitDownloader extends VcsDownloader implements DvcsDownloaderInterface
throw new \RuntimeException('Source directory ' . $path . ' has unpushed changes on the current branch: '."\n".$unpushed);
}
if (!$changes = $this->getLocalChanges($package, $path)) {
if (null === ($changes = $this->getLocalChanges($package, $path))) {
return \React\Promise\resolve();
}

View File

@ -90,7 +90,9 @@ class HgDownloader extends VcsDownloader
$this->process->execute('hg st', $output, realpath($path));
return trim($output) ?: null;
$output = trim($output);
return strlen($output) > 0 ? $output : null;
}
/**

View File

@ -132,7 +132,7 @@ class SvnDownloader extends VcsDownloader
*/
protected function cleanChanges(PackageInterface $package, string $path, bool $update): PromiseInterface
{
if (!$changes = $this->getLocalChanges($package, $path)) {
if (null === ($changes = $this->getLocalChanges($package, $path))) {
return \React\Promise\resolve();
}

View File

@ -49,12 +49,11 @@ class Comparer
}
/**
* @param bool $toString
* @param bool $explicated
*
* @return array{changed?: string[], removed?: string[], added?: string[]}|string|false false if no change, string only if $toString is true
* @return array{changed?: string[], removed?: string[], added?: string[]}|false false if no change
*/
public function getChanged(bool $toString = false, bool $explicated = false)
public function getChanged(bool $explicated = false)
{
$changed = $this->changed;
if (!count($changed)) {
@ -68,17 +67,29 @@ class Comparer
}
}
if ($toString) {
return $changed;
}
/**
* @param bool $explicated
*
* @return string empty string if no changes
*/
public function getChangedAsString(bool $toString = false, bool $explicated = false): string
{
$changed = $this->getChanged($explicated);
if (false === $changed) {
return '';
}
$strings = array();
foreach ($changed as $sectionKey => $itemSection) {
foreach ($itemSection as $itemKey => $item) {
$strings[] = $item."\r\n";
}
}
$changed = implode("\r\n", $strings);
}
return $changed;
return trim(implode("\r\n", $strings));
}
/**