Spy object also stores the called object
This commit is contained in:
parent
be755fe25e
commit
c82b19687a
2 changed files with 20 additions and 17 deletions
|
@ -1,17 +1,20 @@
|
|||
class Spy:
|
||||
def __init__(self, obj, func_name):
|
||||
self.obj = obj
|
||||
self.func_name = func_name
|
||||
self.func_original = getattr(self.obj, func_name)
|
||||
self.calls = []
|
||||
def __init__(self, obj, func_name):
|
||||
self.obj = obj
|
||||
self.func_name = func_name
|
||||
self.func_original = getattr(self.obj, func_name)
|
||||
self.calls = []
|
||||
|
||||
def __enter__(self, *args, **kwargs):
|
||||
def loggedFunc(cls, *args, **kwags):
|
||||
print "Logging", self, args, kwargs
|
||||
self.calls.append(args)
|
||||
return self.func_original(cls, *args, **kwargs)
|
||||
setattr(self.obj, self.func_name, loggedFunc)
|
||||
return self.calls
|
||||
def __enter__(self, *args, **kwargs):
|
||||
def loggedFunc(cls, *args, **kwargs):
|
||||
call = dict(enumerate(args, 1))
|
||||
call[0] = cls
|
||||
call.update(kwargs)
|
||||
print "Logging", call
|
||||
self.calls.append(call)
|
||||
return self.func_original(cls, *args, **kwargs)
|
||||
setattr(self.obj, self.func_name, loggedFunc)
|
||||
return self.calls
|
||||
|
||||
def __exit__(self, *args, **kwargs):
|
||||
setattr(self.obj, self.func_name, self.func_original)
|
||||
def __exit__(self, *args, **kwargs):
|
||||
setattr(self.obj, self.func_name, self.func_original)
|
|
@ -39,7 +39,7 @@ class TestSiteDownload:
|
|||
site_temp.needFile("data/img/direct_domains.png", priority=15, blocking=False)
|
||||
site_temp.onFileDone.append(boostRequest)
|
||||
site_temp.download(blind_includes=True).join(timeout=5)
|
||||
file_requests = [request[2]["inner_path"] for request in requests if request[0] in ("getFile", "streamFile")]
|
||||
file_requests = [request[3]["inner_path"] for request in requests if request[1] in ("getFile", "streamFile")]
|
||||
# Test priority
|
||||
assert file_requests[0:2] == ["content.json", "index.html"] # Must-have files
|
||||
assert file_requests[2:4] == ["data/img/multiuser.png", "data/img/direct_domains.png"] # Directly requested files
|
||||
|
@ -206,7 +206,7 @@ class TestSiteDownload:
|
|||
threads.append(site_temp.needFile("data/users/1CjfbrbwtP8Y2QjPy12vpTATkUT7oSiPQ9/peanut-butter-jelly-time.gif", blocking=False))
|
||||
gevent.joinall(threads)
|
||||
|
||||
assert len([request for request in requests if request[0] == "findHashIds"]) == 1 # findHashids should call only once
|
||||
assert len([request for request in requests if request[1] == "findHashIds"]) == 1 # findHashids should call only once
|
||||
|
||||
assert site_temp.storage.isFile("data/optional.txt")
|
||||
assert site_temp.storage.isFile("data/users/1CjfbrbwtP8Y2QjPy12vpTATkUT7oSiPQ9/peanut-butter-jelly-time.gif")
|
||||
|
@ -257,7 +257,7 @@ class TestSiteDownload:
|
|||
site.publish()
|
||||
time.sleep(0.1)
|
||||
site_temp.download(blind_includes=True).join(timeout=5)
|
||||
assert len([request for request in requests if request[0] in ("getFile", "streamFile")]) == 1
|
||||
assert len([request for request in requests if request[1] in ("getFile", "streamFile")]) == 1
|
||||
|
||||
assert site_temp.storage.open("data/data.json").read() == data_new
|
||||
|
||||
|
|
Loading…
Reference in a new issue