@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.

Completed Paste Generation

Summary: Ref T2903

Test Plan: Pastes being generated with all types of parents, view policies, code, etc.

Reviewers: epriestley, AnhNhan

Reviewed By: epriestley

CC: AnhNhan, aran, Korvin

Maniphest Tasks: T2903

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

authored by

deedydas and committed by
epriestley
1b4dde80 eaa43629

+130 -17
+4
src/__phutil_library_map__.php
··· 1207 1207 'PhabricatorPasteQuery' => 'applications/paste/query/PhabricatorPasteQuery.php', 1208 1208 'PhabricatorPasteRemarkupRule' => 'applications/paste/remarkup/PhabricatorPasteRemarkupRule.php', 1209 1209 'PhabricatorPasteSearchEngine' => 'applications/paste/query/PhabricatorPasteSearchEngine.php', 1210 + 'PhabricatorPasteTestDataGenerator' => 'applications/paste/lipsum/PhabricatorPasteTestDataGenerator.php', 1210 1211 'PhabricatorPasteViewController' => 'applications/paste/controller/PhabricatorPasteViewController.php', 1211 1212 'PhabricatorPeopleController' => 'applications/people/controller/PhabricatorPeopleController.php', 1212 1213 'PhabricatorPeopleEditController' => 'applications/people/controller/PhabricatorPeopleEditController.php', ··· 1310 1311 'PhabricatorRepositorySymbol' => 'applications/repository/storage/PhabricatorRepositorySymbol.php', 1311 1312 'PhabricatorRepositoryTestCase' => 'applications/repository/storage/__tests__/PhabricatorRepositoryTestCase.php', 1312 1313 'PhabricatorRepositoryType' => 'applications/repository/constants/PhabricatorRepositoryType.php', 1314 + 'PhabricatorRevisionTestDataGenerator' => 'applications/differential/lipsum/PhabricatorRevisionTestDataGenerator.php', 1313 1315 'PhabricatorS3FileStorageEngine' => 'applications/files/engine/PhabricatorS3FileStorageEngine.php', 1314 1316 'PhabricatorSQLPatchList' => 'infrastructure/storage/patch/PhabricatorSQLPatchList.php', 1315 1317 'PhabricatorSSHWorkflow' => 'infrastructure/ssh/PhabricatorSSHWorkflow.php', ··· 2915 2917 'PhabricatorPasteQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', 2916 2918 'PhabricatorPasteRemarkupRule' => 'PhabricatorRemarkupRuleObject', 2917 2919 'PhabricatorPasteSearchEngine' => 'PhabricatorApplicationSearchEngine', 2920 + 'PhabricatorPasteTestDataGenerator' => 'PhabricatorTestDataGenerator', 2918 2921 'PhabricatorPasteViewController' => 'PhabricatorPasteController', 2919 2922 'PhabricatorPeopleController' => 'PhabricatorController', 2920 2923 'PhabricatorPeopleEditController' => 'PhabricatorPeopleController', ··· 3022 3025 'PhabricatorRepositorySvnCommitMessageParserWorker' => 'PhabricatorRepositoryCommitMessageParserWorker', 3023 3026 'PhabricatorRepositorySymbol' => 'PhabricatorRepositoryDAO', 3024 3027 'PhabricatorRepositoryTestCase' => 'PhabricatorTestCase', 3028 + 'PhabricatorRevisionTestDataGenerator' => 'PhabricatorTestDataGenerator', 3025 3029 'PhabricatorS3FileStorageEngine' => 'PhabricatorFileStorageEngine', 3026 3030 'PhabricatorSSHWorkflow' => 'PhutilArgumentWorkflow', 3027 3031 'PhabricatorSavedQuery' => 'PhabricatorSearchDAO',
+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 + }
+12 -17
src/applications/lipsum/management/PhabricatorLipsumGenerateWorkflow.php
··· 18 18 } 19 19 20 20 public function execute(PhutilArgumentParser $args) { 21 + $type = "Paste"; 22 + $classname = "Phabricator".$type."TestDataGenerator"; 21 23 $admin = PhabricatorUser::getOmnipotentUser(); 22 - // $peoplegen = new PhabricatorPeopleTestDataGenerator(); 23 - // $object = $peoplegen->generate(); 24 - // $handle = PhabricatorObjectHandleData::loadOneHandle($object->getPHID(), 25 - // $admin); 26 - // echo "Generated ".$handle->getFullName()."\n"; 24 + try { 25 + $taskgen = newv($classname, array()); 26 + $object = $taskgen->generate(); 27 + 28 + $handle = PhabricatorObjectHandleData::loadOneHandle($object->getPHID(), 29 + $admin); 30 + echo "Generated ".$handle->getFullName()."\n"; 31 + echo "\nRequested data has been generated."; 32 + } catch (PhutilMissingSymbolException $ex) { 33 + } 27 34 28 - $taskgen = new PhabricatorManiphestTaskTestDataGenerator(); 29 - $object = $taskgen->generate(); 30 - $handle = PhabricatorObjectHandleData::loadOneHandle($object->getPHID(), 31 - $admin); 32 - echo "Generated ".$handle->getFullName()."\n"; 33 - echo "\nRequested data has been generated."; 34 35 35 - // $taskgen = new PhabricatorRevisionTestDataGenerator(); 36 - // $object = $taskgen->generate(); 37 - // $handle = PhabricatorObjectHandleData::loadOneHandle($object->getPHID(), 38 - // $admin); 39 - // echo "Generated ".$handle->getFullName()."\n"; 40 - // echo "\nRequested data has been generated."; 41 36 } 42 37 43 38 }
+100
src/applications/paste/lipsum/PhabricatorPasteTestDataGenerator.php
··· 1 + <?php 2 + 3 + final class PhabricatorPasteTestDataGenerator 4 + extends PhabricatorTestDataGenerator { 5 + 6 + // Better Support for this in the future 7 + private $supportedLanguages = array( 8 + "Java" => "java", 9 + "PHP" => "php"); 10 + 11 + public function generate() { 12 + $authorphid = $this->loadAuthorPHID(); 13 + $language = $this->generateLanguage(); 14 + $content = $this->generateContent($language); 15 + $title = $this->generateTitle($language); 16 + $paste_file = PhabricatorFile::newFromFileData( 17 + $content, 18 + array( 19 + 'name' => $title, 20 + 'mime-type' => 'text/plain; charset=utf-8', 21 + 'authorPHID' => $authorphid, 22 + )); 23 + $policy = $this->generatePolicy(); 24 + $filephid = $paste_file->getPHID(); 25 + $parentphid = $this->loadPhabrictorPastePHID(); 26 + $paste = id(new PhabricatorPaste()) 27 + ->setParentPHID($parentphid) 28 + ->setAuthorPHID($authorphid) 29 + ->setTitle($title) 30 + ->setLanguage($language) 31 + ->setViewPolicy($policy) 32 + ->setFilePHID($filephid) 33 + ->save(); 34 + return $paste; 35 + } 36 + 37 + private function loadPhabrictorPastePHID() { 38 + $random = rand(0, 1); 39 + if ($random == 1) { 40 + $paste = id($this->loadOneRandom("PhabricatorPaste")); 41 + if ($paste) { 42 + return $paste->getPHID(); 43 + } 44 + } 45 + return null; 46 + } 47 + 48 + private function loadPhabrictorUserPHID() { 49 + return id($this->loadOneRandom("PhabricatorUser"))->getPHID(); 50 + } 51 + 52 + public function loadAuthorPHID() { 53 + return $this->loadPhabrictorUserPHID(); 54 + } 55 + 56 + public function generateTitle($language = null) { 57 + $taskgen = new PhutilLipsumContextFreeGrammar(); 58 + // Remove Punctuation 59 + $title = preg_replace('/[^a-zA-Z 0-9]+/', '', $taskgen->generate()); 60 + // Capitalize First Letters 61 + $title = ucwords($title); 62 + // Remove Spaces 63 + $title = preg_replace('/\s+/', '', $title); 64 + if ($language == null || 65 + !in_array($language, array_keys($this->supportedLanguages))) { 66 + return $title.".txt"; 67 + } else { 68 + return $title.".".$this->supportedLanguages[$language]; 69 + } 70 + } 71 + 72 + public function generateLanguage() { 73 + $supplemented_lang = $this->supportedLanguages; 74 + $supplemented_lang["lipsum"] = "txt"; 75 + return array_rand($supplemented_lang); 76 + } 77 + 78 + public function generateContent($language = null) { 79 + if ($language == null || 80 + !in_array($language, array_keys($this->supportedLanguages))) { 81 + return id(new PhutilLipsumContextFreeGrammar()) 82 + ->generateSeveral(rand(30, 40)); 83 + } else { 84 + $cfg_class = "Phutil".$language."CodeSnippetContextFreeGrammar"; 85 + return newv($cfg_class, array())->generate(); 86 + } 87 + } 88 + 89 + public function generatePolicy() { 90 + // Make sure 4/5th of all generated Pastes are viewable to all 91 + switch (rand(0, 4)) { 92 + case 0: 93 + return PhabricatorPolicies::POLICY_PUBLIC; 94 + case 1: 95 + return PhabricatorPolicies::POLICY_NOONE; 96 + default: 97 + return PhabricatorPolicies::POLICY_USER; 98 + } 99 + } 100 + }