Skip to content

Commit 3d81359

Browse files
committed
python-stdlib/unittest-discover: Handle expectedfauliures in unitest.
Signed-off-by: Jos Verlinde <Jos_Verlinde@hotmail.com>
1 parent 5d46e0c commit 3d81359

3 files changed

Lines changed: 25 additions & 2 deletions

File tree

python-stdlib/unittest-discover/unittest/__main__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,8 @@ def discover_main():
146146
# Ensure an appropriate output is printed if no tests are found.
147147
runner.run(TestSuite())
148148

149-
# Terminate with non zero return code in case of failures.
150-
sys.exit(result.failuresNum + result.errorsNum)
149+
# Non-zero exit on failures; an unexpected success counts as a failure too.
150+
sys.exit(result.failuresNum + result.errorsNum + result.unexpectedSuccessesNum)
151151

152152

153153
discover_main()
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# @expectedFailure test that unexpectedly passes -> the run must exit non-zero.
2+
# Not named "test_*.py" so discovery skips it; tools/ci.sh runs it explicitly.
3+
4+
import unittest
5+
6+
7+
class TestUnexpectedSuccess(unittest.TestCase):
8+
@unittest.expectedFailure
9+
def test_unexpectedly_passes(self):
10+
self.assertEqual(1, 1)
11+
12+
13+
if __name__ == "__main__":
14+
unittest.main()

tools/ci.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,15 @@ function ci_package_tests_run {
111111
if [ $? -ne 0 ]; then false; return; fi
112112
done
113113

114+
# unexpected_success.py isn't named "test_*.py" so discovery skips it; run it
115+
# explicitly and assert an unexpected success exits non-zero (like CPython).
116+
echo "Running test python-stdlib/unittest/tests/unexpected_success.py (expecting failure)"
117+
if (cd python-stdlib/unittest/tests && "${MICROPYTHON}" -m unittest unexpected_success.py); then
118+
echo "Error: an unexpected success did not produce a non-zero exit code"
119+
false
120+
return
121+
fi
122+
114123
(cd micropython/usb/usb-device && "${MICROPYTHON}" -m tests.test_core_buffer)
115124
if [ $? -ne 0 ]; then false; return; fi
116125

0 commit comments

Comments
 (0)