Page MenuHomePhorge

No OneTemporary

diff --git a/src/applications/differential/lipsum/PhabricatorDifferentialRevisionTestDataGenerator.php b/src/applications/differential/lipsum/PhabricatorDifferentialRevisionTestDataGenerator.php
index 2443fe9651..26632dff24 100644
--- a/src/applications/differential/lipsum/PhabricatorDifferentialRevisionTestDataGenerator.php
+++ b/src/applications/differential/lipsum/PhabricatorDifferentialRevisionTestDataGenerator.php
@@ -1,107 +1,109 @@
<?php
final class PhabricatorDifferentialRevisionTestDataGenerator
extends PhabricatorTestDataGenerator {
const GENERATORKEY = 'revisions';
public function getGeneratorName() {
return pht('Differential Revisions');
}
public function generateObject() {
$author = $this->loadPhabricatorUser();
$revision = DifferentialRevision::initializeNewRevision($author);
$revision->attachReviewers(array());
$revision->attachActiveDiff(null);
// This could be a bit richer and more formal than it is.
$revision->setTitle($this->generateTitle());
$revision->setSummary($this->generateDescription());
$revision->setTestPlan($this->generateDescription());
$diff = $this->generateDiff($author);
$type_update = DifferentialRevisionUpdateTransaction::TRANSACTIONTYPE;
$xactions = array();
$xactions[] = id(new DifferentialTransaction())
->setTransactionType($type_update)
->setNewValue($diff->getPHID());
id(new DifferentialTransactionEditor())
->setActor($author)
->setContentSource($this->getLipsumContentSource())
->applyTransactions($revision, $xactions);
return $revision;
}
public function getCCPHIDs() {
$ccs = array();
for ($i = 0; $i < rand(1, 4);$i++) {
$ccs[] = $this->loadPhabricatorUserPHID();
}
return $ccs;
}
public function generateDiff($author) {
$paste_generator = new PhabricatorPasteTestDataGenerator();
- $languages = $paste_generator->supportedLanguages;
- $lang = array_rand($languages);
- $code = $paste_generator->generateContent($lang);
- $altcode = $paste_generator->generateContent($lang);
+ $languages = $paste_generator->getSupportedLanguages();
+ $language = array_rand($languages);
+ $spec = $languages[$language];
+
+ $code = $paste_generator->generateContent($spec);
+ $altcode = $paste_generator->generateContent($spec);
$newcode = $this->randomlyModify($code, $altcode);
$diff = id(new PhabricatorDifferenceEngine())
->generateRawDiffFromFileContent($code, $newcode);
$call = new ConduitCall(
'differential.createrawdiff',
array(
'diff' => $diff,
));
$call->setUser($author);
$result = $call->execute();
$thediff = id(new DifferentialDiff())->load(
$result['id']);
$thediff->setDescription($this->generateTitle())->save();
return $thediff;
}
public function generateDescription() {
return id(new PhutilLipsumContextFreeGrammar())
->generate(10, 20);
}
public function generateTitle() {
return id(new PhutilLipsumContextFreeGrammar())
->generate();
}
public function randomlyModify($code, $altcode) {
$codearr = explode("\n", $code);
$altcodearr = explode("\n", $altcode);
$no_lines_to_delete = rand(1,
min(count($codearr) - 2, 5));
$randomlines = array_rand($codearr,
count($codearr) - $no_lines_to_delete);
$newcode = array();
foreach ($randomlines as $lineno) {
$newcode[] = $codearr[$lineno];
}
$newlines_count = rand(2,
min(count($codearr) - 2, count($altcodearr) - 2, 5));
$randomlines_orig = array_rand($codearr, $newlines_count);
$randomlines_new = array_rand($altcodearr, $newlines_count);
$newcode2 = array();
$c = 0;
for ($i = 0; $i < count($newcode);$i++) {
$newcode2[] = $newcode[$i];
if (in_array($i, $randomlines_orig)) {
$newcode2[] = $altcodearr[$randomlines_new[$c++]];
}
}
return implode($newcode2, "\n");
}
}
diff --git a/src/applications/paste/lipsum/PhabricatorPasteTestDataGenerator.php b/src/applications/paste/lipsum/PhabricatorPasteTestDataGenerator.php
index 24ac718606..80dbc10ee0 100644
--- a/src/applications/paste/lipsum/PhabricatorPasteTestDataGenerator.php
+++ b/src/applications/paste/lipsum/PhabricatorPasteTestDataGenerator.php
@@ -1,101 +1,109 @@
<?php
final class PhabricatorPasteTestDataGenerator
extends PhabricatorTestDataGenerator {
const GENERATORKEY = 'pastes';
public function getGeneratorName() {
return pht('Pastes');
}
public function generateObject() {
$author = $this->loadRandomUser();
list($name, $language, $content) = $this->newPasteContent();
$paste = PhabricatorPaste::initializeNewPaste($author);
$xactions = array();
$xactions[] = $this->newTransaction(
PhabricatorPasteTitleTransaction::TRANSACTIONTYPE,
$name);
- $xactions[] = $this->newTransaction(
- PhabricatorPasteLanguageTransaction::TRANSACTIONTYPE,
- $language);
+ if (strlen($language) > 0) {
+ $xactions[] = $this->newTransaction(
+ PhabricatorPasteLanguageTransaction::TRANSACTIONTYPE,
+ $language);
+ }
$xactions[] = $this->newTransaction(
PhabricatorPasteContentTransaction::TRANSACTIONTYPE,
$content);
$editor = id(new PhabricatorPasteEditor())
->setActor($author)
->setContentSource($this->getLipsumContentSource())
->setContinueOnNoEffect(true)
->applyTransactions($paste, $xactions);
return $paste;
}
protected function newEmptyTransaction() {
return new PhabricatorPasteTransaction();
}
- private function newPasteContent() {
- $languages = array(
- 'txt' => array(),
- 'php' => array(
- 'content' => 'PhutilPHPCodeSnippetContextFreeGrammar',
- ),
- 'java' => array(
- 'content' => 'PhutilJavaCodeSnippetContextFreeGrammar',
- ),
- );
+ public function getSupportedLanguages() {
+ return array(
+ 'php' => array(
+ 'content' => 'PhutilPHPCodeSnippetContextFreeGrammar',
+ ),
+ 'java' => array(
+ 'content' => 'PhutilJavaCodeSnippetContextFreeGrammar',
+ ),
+ );
+ }
+
+ public function generateContent($spec) {
+ $content_generator = idx($spec, 'content');
+ if (!$content_generator) {
+ $content_generator = 'PhutilLipsumContextFreeGrammar';
+ }
+ return newv($content_generator, array())
+ ->generateSeveral($this->roll(4, 12, 10));
+ }
+
+ private function newPasteContent() {
+ $languages = $this->getSupportedLanguages();
$language = array_rand($languages);
$spec = $languages[$language];
$title_generator = idx($spec, 'title');
if (!$title_generator) {
$title_generator = 'PhabricatorPasteFilenameContextFreeGrammar';
}
- $content_generator = idx($spec, 'content');
- if (!$content_generator) {
- $content_generator = 'PhutilLipsumContextFreeGrammar';
- }
-
$title = newv($title_generator, array())
->generate();
- $content = newv($content_generator, array())
- ->generateSeveral($this->roll(4, 12, 10));
+ $content = $this->generateContent($spec);
// Usually add the language as a suffix.
if ($this->roll(1, 20) > 2) {
$title = $title.'.'.$language;
}
switch ($this->roll(1, 20)) {
case 1:
// On critical miss, set a different, random language.
$highlight_as = array_rand($languages);
break;
case 18:
case 19:
case 20:
// Sometimes set it to the correct language.
$highlight_as = $language;
break;
default:
// Usually leave it as autodetect.
$highlight_as = '';
break;
}
return array($title, $highlight_as, $content);
}
}

File Metadata

Mime Type
text/x-diff
Expires
Sun, Jan 19, 15:31 (3 w, 23 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1126015
Default Alt Text
(7 KB)

Event Timeline