[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/differential/__tests__/ -> DifferentialParseRenderTestCase.php (source)

   1  <?php
   2  
   3  final class DifferentialParseRenderTestCase extends PhabricatorTestCase {
   4  
   5    public function testParseRender() {
   6      $dir = dirname(__FILE__).'/data/';
   7      foreach (Filesystem::listDirectory($dir, $show_hidden = false) as $file) {
   8        if (!preg_match('/\.diff$/', $file)) {
   9          continue;
  10        }
  11        $data = Filesystem::readFile($dir.$file);
  12  
  13        $opt_file = $dir.$file.'.options';
  14        if (Filesystem::pathExists($opt_file)) {
  15          $options = Filesystem::readFile($opt_file);
  16          $options = json_decode($options, true);
  17          if (!is_array($options)) {
  18            throw new Exception("Invalid options file: {$opt_file}.");
  19          }
  20        } else {
  21          $options = array();
  22        }
  23  
  24        foreach (array('one', 'two') as $type) {
  25          $parser = $this->buildChangesetParser($type, $data, $file);
  26          $actual = $parser->render(null, null, array());
  27  
  28          $expect = Filesystem::readFile($dir.$file.'.'.$type.'.expect');
  29          $this->assertEqual($expect, (string)$actual, $file.'.'.$type);
  30        }
  31      }
  32    }
  33  
  34    private function buildChangesetParser($type, $data, $file) {
  35      $parser = new ArcanistDiffParser();
  36      $changes = $parser->parseDiff($data);
  37  
  38      $diff = DifferentialDiff::newFromRawChanges(
  39        PhabricatorUser::getOmnipotentUser(),
  40        $changes);
  41      if (count($diff->getChangesets()) !== 1) {
  42        throw new Exception("Expected one changeset: {$file}");
  43      }
  44  
  45      $changeset = head($diff->getChangesets());
  46  
  47      $engine = new PhabricatorMarkupEngine();
  48      $engine->setViewer(new PhabricatorUser());
  49  
  50      $cparser = new DifferentialChangesetParser();
  51      $cparser->setDisableCache(true);
  52      $cparser->setChangeset($changeset);
  53      $cparser->setMarkupEngine($engine);
  54  
  55      if ($type == 'one') {
  56        $cparser->setRenderer(new DifferentialChangesetOneUpTestRenderer());
  57      } else if ($type == 'two') {
  58        $cparser->setRenderer(new DifferentialChangesetTwoUpTestRenderer());
  59      } else {
  60        throw new Exception("Unknown renderer type '{$type}'!");
  61      }
  62  
  63      return $cparser;
  64    }
  65  
  66  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1