File tree Expand file tree Collapse file tree
unittest-discover/unittest Expand file tree Collapse file tree Original file line number Diff line number Diff 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
153153discover_main ()
Original file line number Diff line number Diff line change 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 ()
Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments