@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

xDiffs and Revisions Generating

Summary: Ref T2903

Test Plan: Revisions and Diffs are visually being generated

Reviewers: epriestley, xask.linus

Reviewed By: epriestley

CC: AnhNhan, aran, Korvin

Maniphest Tasks: T2903

Differential Revision: https://secure.phabricator.com/D5835

authored by

deedydas and committed by
epriestley
6eb82ebf 54b2953d

+123 -19
+2 -2
src/__phutil_library_map__.php
··· 899 899 'PhabricatorDeveloperConfigOptions' => 'applications/config/option/PhabricatorDeveloperConfigOptions.php', 900 900 'PhabricatorDifferenceEngine' => 'infrastructure/diff/PhabricatorDifferenceEngine.php', 901 901 'PhabricatorDifferentialConfigOptions' => 'applications/differential/config/PhabricatorDifferentialConfigOptions.php', 902 + 'PhabricatorDifferentialRevisionTestDataGenerator' => 'applications/differential/lipsum/PhabricatorDifferentialRevisionTestDataGenerator.php', 902 903 'PhabricatorDiffusionConfigOptions' => 'applications/diffusion/config/PhabricatorDiffusionConfigOptions.php', 903 904 'PhabricatorDirectoryController' => 'applications/directory/controller/PhabricatorDirectoryController.php', 904 905 'PhabricatorDirectoryMainController' => 'applications/directory/controller/PhabricatorDirectoryMainController.php', ··· 1314 1315 'PhabricatorRepositorySymbol' => 'applications/repository/storage/PhabricatorRepositorySymbol.php', 1315 1316 'PhabricatorRepositoryTestCase' => 'applications/repository/storage/__tests__/PhabricatorRepositoryTestCase.php', 1316 1317 'PhabricatorRepositoryType' => 'applications/repository/constants/PhabricatorRepositoryType.php', 1317 - 'PhabricatorRevisionTestDataGenerator' => 'applications/differential/lipsum/PhabricatorRevisionTestDataGenerator.php', 1318 1318 'PhabricatorS3FileStorageEngine' => 'applications/files/engine/PhabricatorS3FileStorageEngine.php', 1319 1319 'PhabricatorSQLPatchList' => 'infrastructure/storage/patch/PhabricatorSQLPatchList.php', 1320 1320 'PhabricatorSSHWorkflow' => 'infrastructure/ssh/PhabricatorSSHWorkflow.php', ··· 2638 2638 'PhabricatorDefaultSearchEngineSelector' => 'PhabricatorSearchEngineSelector', 2639 2639 'PhabricatorDeveloperConfigOptions' => 'PhabricatorApplicationConfigOptions', 2640 2640 'PhabricatorDifferentialConfigOptions' => 'PhabricatorApplicationConfigOptions', 2641 + 'PhabricatorDifferentialRevisionTestDataGenerator' => 'PhabricatorTestDataGenerator', 2641 2642 'PhabricatorDiffusionConfigOptions' => 'PhabricatorApplicationConfigOptions', 2642 2643 'PhabricatorDirectoryController' => 'PhabricatorController', 2643 2644 'PhabricatorDirectoryMainController' => 'PhabricatorDirectoryController', ··· 3034 3035 'PhabricatorRepositorySvnCommitMessageParserWorker' => 'PhabricatorRepositoryCommitMessageParserWorker', 3035 3036 'PhabricatorRepositorySymbol' => 'PhabricatorRepositoryDAO', 3036 3037 'PhabricatorRepositoryTestCase' => 'PhabricatorTestCase', 3037 - 'PhabricatorRevisionTestDataGenerator' => 'PhabricatorTestDataGenerator', 3038 3038 'PhabricatorS3FileStorageEngine' => 'PhabricatorFileStorageEngine', 3039 3039 'PhabricatorSSHWorkflow' => 'PhutilArgumentWorkflow', 3040 3040 'PhabricatorSavedQuery' => 'PhabricatorSearchDAO',
+119
src/applications/differential/lipsum/PhabricatorDifferentialRevisionTestDataGenerator.php
··· 1 + <?php 2 + 3 + final class PhabricatorDifferentialRevisionTestDataGenerator 4 + extends PhabricatorTestDataGenerator { 5 + 6 + public function generate() { 7 + $author = $this->loadPhabrictorUser(); 8 + $authorPHID = $author->getPHID(); 9 + $revision = new DifferentialRevision(); 10 + $revision->setTitle($this->generateTitle()); 11 + $revision->setSummary($this->generateDescription()); 12 + $revision->setTestPlan($this->generateDescription()); 13 + $revision->loadRelationships(); 14 + $aux_fields = $this->loadAuxiliaryFields($author, $revision); 15 + $diff = $this->generateDiff($author); 16 + // Add Diff 17 + $editor = new DifferentialRevisionEditor($revision); 18 + $editor->setActor($author); 19 + $editor->addDiff($diff, $this->generateDescription()); 20 + $editor->setAuxiliaryFields($aux_fields); 21 + $editor->save(); 22 + // Add Reviewers 23 + $editor2 = new DifferentialCommentEditor($revision, 24 + DifferentialAction::ACTION_ADDREVIEWERS); 25 + $editor2->setActor($author); 26 + $editor2->setAddedReviewers($this->getCCPHIDs()); 27 + $editor2->save(); 28 + // Add CCs 29 + $editor3 = new DifferentialCommentEditor($revision, 30 + DifferentialAction::ACTION_ADDCCS); 31 + $editor3->setActor($author); 32 + $editor3->setAddedCCs($this->getCCPHIDs()); 33 + $editor3->save(); 34 + return $revision->save(); 35 + } 36 + 37 + public function getCCPHIDs() { 38 + $ccs = array(); 39 + for ($i = 0; $i < rand(1, 4);$i++) { 40 + $ccs[] = $this->loadPhabrictorUserPHID(); 41 + } 42 + return $ccs; 43 + } 44 + 45 + public function generateDiff($author) { 46 + $paste_generator = new PhabricatorPasteTestDataGenerator(); 47 + $languages = $paste_generator->supportedLanguages; 48 + $lang = array_rand($languages); 49 + $code = $paste_generator->generateContent($lang); 50 + $altcode = $paste_generator->generateContent($lang); 51 + $newcode = $this->randomlyModify($code, $altcode); 52 + $diff = id(new PhabricatorDifferenceEngine()) 53 + ->generateRawDiffFromFileContent($code, $newcode); 54 + $call = new ConduitCall( 55 + 'differential.createrawdiff', 56 + array( 57 + 'diff' => $diff, 58 + )); 59 + $call->setUser($author); 60 + $result = $call->execute(); 61 + $thediff = id(new DifferentialDiff())->load( 62 + $result['id']); 63 + $thediff->setDescription($this->generateTitle())->save(); 64 + return $thediff; 65 + } 66 + 67 + public function generateDescription() { 68 + return id(new PhutilLipsumContextFreeGrammar()) 69 + ->generate(10, 20); 70 + } 71 + 72 + public function generateTitle() { 73 + return id(new PhutilLipsumContextFreeGrammar()) 74 + ->generate(); 75 + } 76 + 77 + public function randomlyModify($code, $altcode) { 78 + $codearr = explode("\n", $code); 79 + $altcodearr = explode("\n", $altcode); 80 + $no_lines_to_delete = rand(1, 81 + min(count($codearr) - 2, 5)); 82 + $randomlines = array_rand($codearr, 83 + count($codearr) - $no_lines_to_delete); 84 + $newcode = array(); 85 + foreach ($randomlines as $lineno) { 86 + $newcode[] = $codearr[$lineno]; 87 + } 88 + $newlines_count = rand(2, 89 + min(count($codearr) - 2, count($altcodearr) - 2, 5)); 90 + $randomlines_orig = array_rand($codearr, $newlines_count); 91 + $randomlines_new = array_rand($altcodearr, $newlines_count); 92 + $newcode2 = array(); 93 + $c = 0; 94 + for ($i = 0; $i < count($newcode);$i++) { 95 + $newcode2[] = $newcode[$i]; 96 + if (in_array($i, $randomlines_orig)) { 97 + $newcode2[] = $altcodearr[$randomlines_new[$c++]]; 98 + } 99 + } 100 + return implode($newcode2, "\n"); 101 + } 102 + 103 + private function loadAuxiliaryFields($user, DifferentialRevision $revision) { 104 + $aux_fields = DifferentialFieldSelector::newSelector() 105 + ->getFieldSpecifications(); 106 + foreach ($aux_fields as $key => $aux_field) { 107 + $aux_field->setRevision($revision); 108 + if (!$aux_field->shouldAppearOnEdit()) { 109 + unset($aux_fields[$key]); 110 + } else { 111 + $aux_field->setUser($user); 112 + } 113 + } 114 + return DifferentialAuxiliaryField::loadFromStorage( 115 + $revision, 116 + $aux_fields); 117 + } 118 + 119 + }
-14
src/applications/differential/lipsum/PhabricatorRevisionTestDataGenerator.php
··· 1 - <?php 2 - 3 - final class PhabricatorRevisionTestDataGenerator 4 - extends PhabricatorTestDataGenerator { 5 - 6 - public function generate() { 7 - try { 8 - $revision = new DifferentialRevision(); 9 - echo id(new PhutilLipsumContextFreeGrammar())->generate(); 10 - return $revision; 11 - } catch (AphrontQueryDuplicateKeyException $ex) { 12 - } 13 - } 14 - }
-1
src/applications/differential/storage/DifferentialRevision.php
··· 238 238 'SELECT * FROM %T WHERE revisionID = %d ORDER BY sequence', 239 239 self::RELATIONSHIP_TABLE, 240 240 $this->getID()); 241 - 242 241 return $this->attachRelationships($data); 243 242 } 244 243
+1 -1
src/applications/paste/lipsum/PhabricatorPasteTestDataGenerator.php
··· 4 4 extends PhabricatorTestDataGenerator { 5 5 6 6 // Better Support for this in the future 7 - private $supportedLanguages = array( 7 + public $supportedLanguages = array( 8 8 "Java" => "java", 9 9 "PHP" => "php"); 10 10
+1 -1
src/applications/pholio/lipsum/PhabricatorPholioMockTestDataGenerator.php
··· 87 87 $images = newv("PhabricatorFile", array()) 88 88 ->loadAllWhere("mimeType = %s", "image/jpeg"); 89 89 $rand_images = array(); 90 - $quantity = rand(1, 10); 90 + $quantity = rand(2, 10); 91 91 foreach (array_rand($images, $quantity) as $random) { 92 92 $rand_images[] = $images[$random]->getPHID(); 93 93 }