68 lines
1.6 KiB
Python
68 lines
1.6 KiB
Python
|
import sys
|
||
|
|
||
|
import unittest
|
||
|
from numba import njit
|
||
|
|
||
|
|
||
|
@njit
|
||
|
def f0(a, b):
|
||
|
return a + b
|
||
|
|
||
|
|
||
|
@njit
|
||
|
def f1(begin1, end1, begin2, end2):
|
||
|
if begin1 > begin2: return f1(begin2, end2, begin1, end1)
|
||
|
return end1 + 1 >= begin2
|
||
|
|
||
|
|
||
|
@njit
|
||
|
def f0_2(a, b):
|
||
|
return a + b
|
||
|
|
||
|
|
||
|
@njit
|
||
|
def f1_2(begin1, end1, begin2, end2):
|
||
|
if begin1 > begin2: return f1_2(begin2, end2, begin1, end1)
|
||
|
return end1 + 1 >= begin2
|
||
|
|
||
|
|
||
|
class TestSysStdinAssignment(unittest.TestCase):
|
||
|
|
||
|
def test_no_reassignment_of_stdout(self):
|
||
|
"""
|
||
|
https://github.com/numba/numba/issues/3027
|
||
|
Older versions of colorama break stdout/err when recursive functions
|
||
|
are compiled.
|
||
|
|
||
|
This test should work irrespective of colorama version, or indeed its
|
||
|
presence. If the version is too low, it should be disabled and the test
|
||
|
should work anyway, if it is a sufficiently high version or it is not
|
||
|
present, it should work anyway.
|
||
|
"""
|
||
|
|
||
|
originally = sys.stdout, sys.stderr
|
||
|
|
||
|
try:
|
||
|
sys.stdout = None
|
||
|
f0(0, 1) # Not changed stdout?
|
||
|
self.assertEqual(sys.stdout, None)
|
||
|
f1(0, 1, 2, 3) # Not changed stdout?
|
||
|
self.assertEqual(sys.stdout, None)
|
||
|
|
||
|
sys.stderr = None
|
||
|
f0_2(0, 1) # Not changed stderr?
|
||
|
self.assertEqual(sys.stderr, None)
|
||
|
f1_2(0, 1, 2, 3) # Not changed stderr?
|
||
|
self.assertEqual(sys.stderr, None)
|
||
|
|
||
|
finally:
|
||
|
sys.stdout, sys.stderr = originally
|
||
|
|
||
|
self.assertNotEqual(sys.stderr, None)
|
||
|
self.assertNotEqual(sys.stdout, None)
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
unittest.main()
|
||
|
|