1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-26 00:32:41 +01:00

Fail Arcanist tests when they make zero assertions

Summary:
Fixes T4570. When a test case doesn't make any assertions, fail it:

  - A tiny fraction of tests pass by not throwing. These tests can easily make a trivial assertion. It took about 5 minutes to fix them all (D8435, D8436).
  - In other cases, no assertions means a test construction problem, as with T4570. In these cases, failing loudly catches a severe error.
  - Fixes the no-assertion test cases in `arcanist/`
  - Makes the PHP 5.4 test pass for the moment, see discussion in T4334.

Test Plan: Ran `arc unit --everything`.

Reviewers: leebyron, btrahan

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T4570

Differential Revision: https://secure.phabricator.com/D8437
This commit is contained in:
epriestley 2014-03-07 10:03:24 -08:00
parent 22f6207920
commit c6b1f3f070
3 changed files with 16 additions and 1 deletions

View file

@ -1,7 +1,10 @@
<?php <?php
f()[0]; f()[0];
$o->m()[0]; m()[0];
// The check above should be this, see T4334.
// $o->m()[0];
~~~~~~~~~~ ~~~~~~~~~~
disabled:3:5 disabled:3:5

View file

@ -37,6 +37,8 @@ final class XUnitTestResultParserTestCase extends ArcanistTestCase {
} catch (Exception $e) { } catch (Exception $e) {
// OK // OK
} }
$this->assertEqual(true, true);
} }
public function testInvalidXmlInputFailure() { public function testInvalidXmlInputFailure() {
@ -50,6 +52,8 @@ final class XUnitTestResultParserTestCase extends ArcanistTestCase {
} catch (Exception $e) { } catch (Exception $e) {
// OK // OK
} }
$this->assertEqual(true, true);
} }
} }

View file

@ -464,6 +464,14 @@ abstract class ArcanistPhutilTestCase {
$exceptions); $exceptions);
} }
} }
if (!$this->assertions) {
$this->failTest(
pht(
'This test case made no assertions. Test cases must make at '.
'least one assertion.'));
}
} catch (ArcanistPhutilTestTerminatedException $ex) { } catch (ArcanistPhutilTestTerminatedException $ex) {
// Continue with the next test. // Continue with the next test.
} catch (ArcanistPhutilTestSkippedException $ex) { } catch (ArcanistPhutilTestSkippedException $ex) {