1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-22 14:52:40 +01:00

Write tests for ArcanistNoLintLinter

Summary: With a special guest appearance from `ArcanistGeneratedLinter`.

Test Plan: `arc unit`

Reviewers: epriestley, #blessed_reviewers

Reviewed By: epriestley, #blessed_reviewers

Subscribers: Korvin, epriestley

Differential Revision: https://secure.phabricator.com/D11345
This commit is contained in:
Joshua Spence 2015-01-15 07:03:14 +11:00
parent afc53ed322
commit 272f737110
9 changed files with 65 additions and 10 deletions

View file

@ -81,6 +81,7 @@ phutil_register_library_map(array(
'ArcanistFlake8LinterTestCase' => 'lint/linter/__tests__/ArcanistFlake8LinterTestCase.php',
'ArcanistFutureLinter' => 'lint/linter/ArcanistFutureLinter.php',
'ArcanistGeneratedLinter' => 'lint/linter/ArcanistGeneratedLinter.php',
'ArcanistGeneratedLinterTestCase' => 'lint/linter/__tests__/ArcanistGeneratedLinterTestCase.php',
'ArcanistGetConfigWorkflow' => 'workflow/ArcanistGetConfigWorkflow.php',
'ArcanistGitAPI' => 'repository/api/ArcanistGitAPI.php',
'ArcanistGitHookPreReceiveWorkflow' => 'workflow/ArcanistGitHookPreReceiveWorkflow.php',
@ -131,7 +132,7 @@ phutil_register_library_map(array(
'ArcanistNoEffectException' => 'exception/usage/ArcanistNoEffectException.php',
'ArcanistNoEngineException' => 'exception/usage/ArcanistNoEngineException.php',
'ArcanistNoLintLinter' => 'lint/linter/ArcanistNoLintLinter.php',
'ArcanistNoLintTestCaseMisnamed' => 'lint/linter/__tests__/ArcanistNoLintTestCase.php',
'ArcanistNoLintLinterTestCase' => 'lint/linter/__tests__/ArcanistNoLintLinterTestCase.php',
'ArcanistNoneLintRenderer' => 'lint/renderer/ArcanistNoneLintRenderer.php',
'ArcanistPEP8Linter' => 'lint/linter/ArcanistPEP8Linter.php',
'ArcanistPEP8LinterTestCase' => 'lint/linter/__tests__/ArcanistPEP8LinterTestCase.php',
@ -278,6 +279,7 @@ phutil_register_library_map(array(
'ArcanistFlake8LinterTestCase' => 'ArcanistExternalLinterTestCase',
'ArcanistFutureLinter' => 'ArcanistLinter',
'ArcanistGeneratedLinter' => 'ArcanistLinter',
'ArcanistGeneratedLinterTestCase' => 'ArcanistArcanistLinterTestCase',
'ArcanistGetConfigWorkflow' => 'ArcanistWorkflow',
'ArcanistGitAPI' => 'ArcanistRepositoryAPI',
'ArcanistGitHookPreReceiveWorkflow' => 'ArcanistWorkflow',
@ -317,7 +319,7 @@ phutil_register_library_map(array(
'ArcanistNoEffectException' => 'ArcanistUsageException',
'ArcanistNoEngineException' => 'ArcanistUsageException',
'ArcanistNoLintLinter' => 'ArcanistLinter',
'ArcanistNoLintTestCaseMisnamed' => 'ArcanistPhutilTestCase',
'ArcanistNoLintLinterTestCase' => 'ArcanistArcanistLinterTestCase',
'ArcanistNoneLintRenderer' => 'ArcanistLintRenderer',
'ArcanistPEP8Linter' => 'ArcanistExternalLinter',
'ArcanistPEP8LinterTestCase' => 'ArcanistExternalLinterTestCase',

View file

@ -0,0 +1,10 @@
<?php
final class ArcanistGeneratedLinterTestCase
extends ArcanistArcanistLinterTestCase {
public function testLinter() {
return $this->executeTestsInDirectory(dirname(__FILE__).'/generated/');
}
}

View file

@ -87,6 +87,7 @@ abstract class ArcanistLinterTestCase extends ArcanistPhutilTestCase {
'config' => 'optional map<string, wild>',
'path' => 'optional string',
'mode' => 'optional string',
'stopped' => 'optional bool',
));
$exception = null;
@ -126,8 +127,8 @@ abstract class ArcanistLinterTestCase extends ArcanistPhutilTestCase {
$path_name = idx($config, 'path', $path);
$linter->addPath($path_name);
$linter->addData($path_name, $data);
$config = idx($config, 'config', array());
foreach ($config as $key => $value) {
foreach (idx($config, 'config', array()) as $key => $value) {
$linter->setLinterConfigurationValue($key, $value);
}
@ -141,6 +142,16 @@ abstract class ArcanistLinterTestCase extends ArcanistPhutilTestCase {
count($results),
pht('Expect one result returned by linter.'));
$assert_stopped = idx($config, 'stopped');
if ($assert_stopped !== null) {
$this->assertEqual(
$assert_stopped,
$linter->didStopAllLinters(),
$assert_stopped
? pht('Expect linter to be stopped.')
: pht('Expect linter to not be stopped.'));
}
$result = reset($results);
$patcher = ArcanistLintPatcher::newFromArcanistLintResult($result);
$after_lint = $patcher->getModifiedFileContent();

View file

@ -0,0 +1,10 @@
<?php
final class ArcanistNoLintLinterTestCase
extends ArcanistArcanistLinterTestCase {
public function testLinter() {
return $this->executeTestsInDirectory(dirname(__FILE__).'/nolint/');
}
}

View file

@ -1,6 +0,0 @@
<?php
/**
* Not a real test... meant to fail lint if @nolint is not respected.
*/
final class ArcanistNoLintTestCaseMisnamed extends ArcanistPhutilTestCase {}

View file

@ -0,0 +1,7 @@
@generated
~~~~~~~~~~
~~~~~~~~~~
~~~~~~~~~~
{
"stopped": true
}

View file

@ -0,0 +1,7 @@
@not-generated
~~~~~~~~~~
~~~~~~~~~~
~~~~~~~~~~
{
"stopped": false
}

View file

@ -0,0 +1,7 @@
@lint
~~~~~~~~~~
~~~~~~~~~~
~~~~~~~~~~
{
"stopped": false
}

View file

@ -0,0 +1,7 @@
@nolint
~~~~~~~~~~
~~~~~~~~~~
~~~~~~~~~~
{
"stopped": true
}