1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-25 16:22:43 +01:00

Fix PHP 8.1 DifferentialBranchField getBranchDescription strlen(null) error

Summary:
Fix PHP 8.1 strlen(null) error in DifferentialBranchField getBranchDescription()

Fixes T15531

Test Plan:
Simply viewing a diff (eg https://my.phorge.site/D1234) on a PHP 8.1 server generated the error fixed by this diff.

Also created a unit test.

Reviewers: O1 Blessed Committers, valerio.bozzolan

Reviewed By: O1 Blessed Committers, valerio.bozzolan

Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno

Maniphest Tasks: T15531

Differential Revision: https://we.phorge.it/D25335
This commit is contained in:
Steve Campbell 2023-07-05 14:24:47 +01:00
parent 9bf5e17352
commit 9d512595c0
3 changed files with 42 additions and 1 deletions

View file

@ -466,6 +466,7 @@ phutil_register_library_map(array(
'DifferentialBlockHeraldAction' => 'applications/differential/herald/DifferentialBlockHeraldAction.php', 'DifferentialBlockHeraldAction' => 'applications/differential/herald/DifferentialBlockHeraldAction.php',
'DifferentialBlockingReviewerDatasource' => 'applications/differential/typeahead/DifferentialBlockingReviewerDatasource.php', 'DifferentialBlockingReviewerDatasource' => 'applications/differential/typeahead/DifferentialBlockingReviewerDatasource.php',
'DifferentialBranchField' => 'applications/differential/customfield/DifferentialBranchField.php', 'DifferentialBranchField' => 'applications/differential/customfield/DifferentialBranchField.php',
'DifferentialBranchFieldTestCase' => 'applications/differential/customfield/__tests__/DifferentialBranchFieldTestCase.php',
'DifferentialBuildableEngine' => 'applications/differential/harbormaster/DifferentialBuildableEngine.php', 'DifferentialBuildableEngine' => 'applications/differential/harbormaster/DifferentialBuildableEngine.php',
'DifferentialChangeDetailMailView' => 'applications/differential/mail/DifferentialChangeDetailMailView.php', 'DifferentialChangeDetailMailView' => 'applications/differential/mail/DifferentialChangeDetailMailView.php',
'DifferentialChangeHeraldFieldGroup' => 'applications/differential/herald/DifferentialChangeHeraldFieldGroup.php', 'DifferentialChangeHeraldFieldGroup' => 'applications/differential/herald/DifferentialChangeHeraldFieldGroup.php',
@ -6472,6 +6473,7 @@ phutil_register_library_map(array(
'DifferentialBlockHeraldAction' => 'HeraldAction', 'DifferentialBlockHeraldAction' => 'HeraldAction',
'DifferentialBlockingReviewerDatasource' => 'PhabricatorTypeaheadCompositeDatasource', 'DifferentialBlockingReviewerDatasource' => 'PhabricatorTypeaheadCompositeDatasource',
'DifferentialBranchField' => 'DifferentialCustomField', 'DifferentialBranchField' => 'DifferentialCustomField',
'DifferentialBranchFieldTestCase' => 'PhabricatorTestCase',
'DifferentialBuildableEngine' => 'HarbormasterBuildableEngine', 'DifferentialBuildableEngine' => 'HarbormasterBuildableEngine',
'DifferentialChangeDetailMailView' => 'DifferentialMailView', 'DifferentialChangeDetailMailView' => 'DifferentialMailView',
'DifferentialChangeHeraldFieldGroup' => 'HeraldFieldGroup', 'DifferentialChangeHeraldFieldGroup' => 'HeraldFieldGroup',

View file

@ -45,7 +45,7 @@ final class DifferentialBranchField
return pht('%s (bookmark)', $bookmark); return pht('%s (bookmark)', $bookmark);
} else if (strlen($branch)) { } else if (strlen($branch)) {
$onto = $diff->loadTargetBranch(); $onto = $diff->loadTargetBranch();
if (strlen($onto) && ($onto !== $branch)) { if (phutil_nonempty_string($onto) && ($onto !== $branch)) {
return pht( return pht(
'%s (branched from %s)', '%s (branched from %s)',
$branch, $branch,

View file

@ -0,0 +1,39 @@
<?php
final class DifferentialBranchFieldTestCase extends PhabricatorTestCase {
protected function getPhabricatorTestCaseConfiguration() {
return array(
self::PHABRICATOR_TESTCONFIG_BUILD_STORAGE_FIXTURES => true,
);
}
private function getTestDiff() {
$parser = new ArcanistDiffParser();
$raw_diff = <<<EODIFF
diff --git a/src b/src
index 123457..bb216b1 100644
--- a/src
+++ b/src
@@ -1,5 +1,5 @@
Line a
-Line b
+Line 2
Line c
Line d
Line e
EODIFF;
return DifferentialDiff::newFromRawChanges(
PhabricatorUser::getOmnipotentUser(),
$parser->parseDiff($raw_diff));
}
public function testRenderDiffPropertyViewValue() {
$test_object = new DifferentialBranchField();
$diff = $this->getTestDiff();
$diff->setBranch('test');
$this->assertEqual('test',
$test_object->renderDiffPropertyViewValue($diff));
}
}