Changeset View
Changeset View
Standalone View
Standalone View
src/filesystem/binary/__tests__/PhutilBinaryAnalyzerTestCase.php
- This file was added.
<?php | |||||
final class PhutilBinaryAnalyzerTestCase | |||||
extends PhutilTestCase { | |||||
public function testParseGitBinaryVersions() { | |||||
$map = array( | |||||
"git version 2.11.0\n" => '2.11.0', | |||||
'definitely git 7.0' => null, | |||||
); | |||||
foreach ($map as $input => $expect) { | |||||
$actual = PhutilGitBinaryAnalyzer::parseGitBinaryVersion($input); | |||||
$this->assertEqual($expect, $actual, $input); | |||||
} | |||||
} | |||||
public function getParseMercurialBinaryVersions() { | |||||
$map = array( | |||||
"Mercurial Distributed SCM (version 3.5.2+20151001)\n" | |||||
=> '3.5.2', | |||||
'This Is Mercurial 22.0' => null, | |||||
); | |||||
foreach ($map as $input => $expect) { | |||||
$actual = | |||||
PhutilMercurialBinaryAnalyzer::parseMercurialBinaryVersion( | |||||
$input); | |||||
$this->assertEqual($expect, $actual, $input); | |||||
} | |||||
} | |||||
public function testParseSubversionBinaryVersions() { | |||||
$map = array( | |||||
"1.7.20\n" => '1.7.20', | |||||
); | |||||
foreach ($map as $input => $expect) { | |||||
$actual = | |||||
PhutilSubversionBinaryAnalyzer::parseSubversionBinaryVersion( | |||||
$input); | |||||
$this->assertEqual($expect, $actual, $input); | |||||
} | |||||
} | |||||
public function testParseDiffBinaryVersions() { | |||||
$diff_version_281 = <<<EOTEXT | |||||
diff (GNU diffutils) 2.8.1 | |||||
Copyright (C) 2002 Free Software Foundation, Inc. | |||||
This program comes with NO WARRANTY, to the extent permitted by law. | |||||
You may redistribute copies of this program | |||||
under the terms of the GNU General Public License. | |||||
For more information about these matters, see the file named COPYING. | |||||
Written by Paul Eggert, Mike Haertel, David Hayes, | |||||
Richard Stallman, and Len Tower. | |||||
EOTEXT; | |||||
$map = array( | |||||
$diff_version_281 => '2.8.1', | |||||
'diff version 1.2.3' => null, | |||||
); | |||||
foreach ($map as $input => $expect) { | |||||
$actual = PhutilDiffBinaryAnalyzer::parseDiffBinaryVersion($input); | |||||
$this->assertEqual($expect, $actual, $input); | |||||
} | |||||
} | |||||
public function testParsePygmentizeBinaryVersions() { | |||||
$map = array( | |||||
"Pygments version 2.0.1, (c) 2006-2014 by Georg Brandl.\n" | |||||
=> '2.0.1', | |||||
'pygments 3.4' => null, | |||||
); | |||||
foreach ($map as $input => $expect) { | |||||
$actual = | |||||
PhutilPygmentizeBinaryAnalyzer::parsePygmentizeBinaryVersion( | |||||
$input); | |||||
$this->assertEqual($expect, $actual, $input); | |||||
} | |||||
} | |||||
public function testMercurialFilesCommandVersions() { | |||||
$cases = array( | |||||
PhutilMercurialBinaryAnalyzer::CAPABILITY_FILES => array( | |||||
'2.6.2' => false, | |||||
'2.9' => false, | |||||
'3.1' => false, | |||||
'3.2' => true, | |||||
'3.3' => true, | |||||
'3.5.2' => true, | |||||
), | |||||
PhutilMercurialBinaryAnalyzer::CAPABILITY_INJECTION => array( | |||||
'2.0' => true, | |||||
'3.2.3' => true, | |||||
'3.2.4' => false, | |||||
), | |||||
); | |||||
foreach ($cases as $capability => $map) { | |||||
foreach ($map as $input => $expect) { | |||||
$actual = PhutilMercurialBinaryAnalyzer::versionHasCapability( | |||||
$input, | |||||
$capability); | |||||
$this->assertEqual( | |||||
$expect, | |||||
$actual, | |||||
pht('%s on %s', $capability, $input)); | |||||
} | |||||
} | |||||
} | |||||
} |