You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Please see the test below. The first test fails with an infinite recursion and the second works just great.
import os
from unittest import TestCase
from ludibrio import Stub, any
class TestStubReplacesStdlib(TestCase):
def test_os_path_exist_bug(self):
with Stub() as exists:
from os.path import exists
exists(any()) >> True
self.assertTrue(os.path.exists('/path/to/inexistent/file'))
exists.restore_import()
def test_stub_replacement_success(self):
with Stub() as getsize:
from os.path import getsize
getsize(any()) >> 1
self.assertEquals(os.path.getsize('/path/to/inexistent/file'), 1)
getsize.restore_import()
The text was updated successfully, but these errors were encountered:
I found the cause of this issue. The problem is that the method of Stub _property_called_name relies on getframeinfo of module inspect. This module relies also on function os.path.exists. So when the replace of exists is made affects all the flow.
My suggestion would be to not call _replace_all for modules like ludibrio or inspect (a more finer exception could be made). I would be happy to provide the patch, but I'd definitely need some guidance, because I tried some patches and somehow I lost the Stub for the exists method. (i.e, after the import the exists is no longer a Stub but a function)
Please see the test below. The first test fails with an infinite recursion and the second works just great.
The text was updated successfully, but these errors were encountered: