From d4a97d87c823e95932f43ad69d3287a4571bbd0c Mon Sep 17 00:00:00 2001 From: vrana Date: Thu, 1 Nov 2012 22:41:00 -0700 Subject: [PATCH] Ask for explanation for skipping lint and unit Summary: Fixes T2023. Test Plan: $ arc diff --nounit # Abort $ arc diff --nounit $ arc diff --nounit --excuse 'Move fast and break things.' Reviewers: epriestley, btrahan Reviewed By: epriestley CC: aran, Korvin Maniphest Tasks: T2023 Differential Revision: https://secure.phabricator.com/D3872 --- src/workflow/ArcanistDiffWorkflow.php | 43 +++++++++++++++++++++------ 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/src/workflow/ArcanistDiffWorkflow.php b/src/workflow/ArcanistDiffWorkflow.php index eef46422..8b6bbfd3 100644 --- a/src/workflow/ArcanistDiffWorkflow.php +++ b/src/workflow/ArcanistDiffWorkflow.php @@ -435,6 +435,18 @@ EOTEXT $unit_result = $data['unitResult']; $this->testResults = $data['testResults']; + if ($this->getArgument('nolint')) { + $this->excuses['lint'] = $this->getSkipExcuse( + 'Provide explanation for skipping lint or press Enter to abort:', + 'lint-excuses'); + } + + if ($this->getArgument('nounit')) { + $this->excuses['unit'] = $this->getSkipExcuse( + 'Provide explanation for skipping unit tests or press Enter to abort:', + 'unit-excuses'); + } + $changes = $this->generateChanges(); if (!$changes) { throw new ArcanistUsageException( @@ -1370,6 +1382,20 @@ EOTEXT return $this->testResults; } + private function getSkipExcuse($prompt, $history) { + $excuse = $this->getArgument('excuse'); + + if ($excuse === null) { + $history = $this->getRepositoryAPI()->getScratchFilePath($history); + $excuse = phutil_console_prompt($prompt, $history); + if ($excuse == '') { + throw new ArcanistUserAbortException(); + } + } + + return $excuse; + } + private function getErrorExcuse($type, $prompt, $history) { if ($this->getArgument('excuse')) { $this->console->sendMessage(array( @@ -2271,13 +2297,13 @@ EOTEXT * @task diffprop */ private function updateLintDiffProperty() { + if (strlen($this->excuses['lint'])) { + $this->updateDiffProperty('arc:lint-excuse', + json_encode($this->excuses['lint'])); + } if ($this->unresolvedLint) { $this->updateDiffProperty('arc:lint', json_encode($this->unresolvedLint)); - if (strlen($this->excuses['lint'])) { - $this->updateDiffProperty('arc:lint-excuse', - json_encode($this->excuses['lint'])); - } } $postponed = $this->postponedLinters; @@ -2296,15 +2322,14 @@ EOTEXT * @task diffprop */ private function updateUnitDiffProperty() { - if (!$this->testResults) { - return; - } - - $this->updateDiffProperty('arc:unit', json_encode($this->testResults)); if (strlen($this->excuses['unit'])) { $this->updateDiffProperty('arc:unit-excuse', json_encode($this->excuses['unit'])); } + + if ($this->testResults) { + $this->updateDiffProperty('arc:unit', json_encode($this->testResults)); + } }