diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -40,6 +40,8 @@ 'ArcanistCoffeeLintLinterTestCase' => 'lint/linter/__tests__/ArcanistCoffeeLintLinterTestCase.php', 'ArcanistCommentRemover' => 'parser/ArcanistCommentRemover.php', 'ArcanistCommentRemoverTestCase' => 'parser/__tests__/ArcanistCommentRemoverTestCase.php', + 'ArcanistCommitLinter' => 'lint/linter/ArcanistCommitLinter.php', + 'ArcanistCommitLinterTestCase' => 'lint/linter/__tests__/ArcanistCommitLinterTestCase.php', 'ArcanistCommitWorkflow' => 'workflow/ArcanistCommitWorkflow.php', 'ArcanistCompilerLikeLintRenderer' => 'lint/renderer/ArcanistCompilerLikeLintRenderer.php', 'ArcanistConduitLinter' => 'lint/linter/ArcanistConduitLinter.php', @@ -241,6 +243,8 @@ 'ArcanistCoffeeLintLinter' => 'ArcanistExternalLinter', 'ArcanistCoffeeLintLinterTestCase' => 'ArcanistArcanistLinterTestCase', 'ArcanistCommentRemoverTestCase' => 'ArcanistTestCase', + 'ArcanistCommitLinter' => 'ArcanistLinter', + 'ArcanistCommitLinterTestCase' => 'ArcanistArcanistLinterTestCase', 'ArcanistCommitWorkflow' => 'ArcanistWorkflow', 'ArcanistCompilerLikeLintRenderer' => 'ArcanistLintRenderer', 'ArcanistConduitLinter' => 'ArcanistLinter', diff --git a/src/lint/linter/ArcanistCommitLinter.php b/src/lint/linter/ArcanistCommitLinter.php new file mode 100644 --- /dev/null +++ b/src/lint/linter/ArcanistCommitLinter.php @@ -0,0 +1,56 @@ + pht('Explicit %s', '@no'.'commit'), + ); + } + + public function lintPath($path) { + if ($this->getEngine()->getCommitHookMode()) { + $this->lintNoCommit($path); + } + } + + private function lintNoCommit($path) { + $data = $this->getData($path); + + $deadly = '@no'.'commit'; + $offset = strpos($data, $deadly); + + if ($offset !== false) { + $this->raiseLintAtOffset( + $offset, + self::LINT_NO_COMMIT, + pht( + 'This file is explicitly marked as "%s", which blocks commits.', + $deadly), + $deadly); + } + } + +} diff --git a/src/lint/linter/ArcanistTextLinter.php b/src/lint/linter/ArcanistTextLinter.php --- a/src/lint/linter/ArcanistTextLinter.php +++ b/src/lint/linter/ArcanistTextLinter.php @@ -11,7 +11,6 @@ const LINT_EOF_NEWLINE = 4; const LINT_BAD_CHARSET = 5; const LINT_TRAILING_WHITESPACE = 6; - const LINT_NO_COMMIT = 7; const LINT_BOF_WHITESPACE = 8; const LINT_EOF_WHITESPACE = 9; @@ -84,7 +83,6 @@ self::LINT_EOF_NEWLINE => pht('File Does Not End in Newline'), self::LINT_BAD_CHARSET => pht('Bad Charset'), self::LINT_TRAILING_WHITESPACE => pht('Trailing Whitespace'), - self::LINT_NO_COMMIT => pht('Explicit %s', '@no'.'commit'), self::LINT_BOF_WHITESPACE => pht('Leading Whitespace at BOF'), self::LINT_EOF_WHITESPACE => pht('Trailing Whitespace at EOF'), ); @@ -116,10 +114,6 @@ $this->lintBOFWhitespace($path); $this->lintEOFWhitespace($path); - - if ($this->getEngine()->getCommitHookMode()) { - $this->lintNoCommit($path); - } } protected function lintNewlines($path) { @@ -293,21 +287,4 @@ ''); } - private function lintNoCommit($path) { - $data = $this->getData($path); - - $deadly = '@no'.'commit'; - - $offset = strpos($data, $deadly); - if ($offset !== false) { - $this->raiseLintAtOffset( - $offset, - self::LINT_NO_COMMIT, - pht( - 'This file is explicitly marked as "%s", which blocks commits.', - $deadly), - $deadly); - } - } - } diff --git a/src/lint/linter/__tests__/ArcanistCommitLinterTestCase.php b/src/lint/linter/__tests__/ArcanistCommitLinterTestCase.php new file mode 100644 --- /dev/null +++ b/src/lint/linter/__tests__/ArcanistCommitLinterTestCase.php @@ -0,0 +1,12 @@ +executeTestsInDirectory( + dirname(__FILE__).'/commit/', + new ArcanistCommitLinter()); + } + +} diff --git a/src/lint/linter/__tests__/text/nocommit-hook.lint-test b/src/lint/linter/__tests__/commit/nocommit-hook.lint-test rename from src/lint/linter/__tests__/text/nocommit-hook.lint-test rename to src/lint/linter/__tests__/commit/nocommit-hook.lint-test --- a/src/lint/linter/__tests__/text/nocommit-hook.lint-test +++ b/src/lint/linter/__tests__/commit/nocommit-hook.lint-test @@ -4,5 +4,5 @@ ~~~~~~~~~~ ~~~~~~~~~~ { - "hook" : true -} \ No newline at end of file + "hook": true +} diff --git a/src/lint/linter/__tests__/text/nocommit-nohook.lint-test b/src/lint/linter/__tests__/commit/nocommit-nohook.lint-test rename from src/lint/linter/__tests__/text/nocommit-nohook.lint-test rename to src/lint/linter/__tests__/commit/nocommit-nohook.lint-test