Spy object also stores the called object

This commit is contained in:
shortcutme 2017-10-04 13:31:49 +02:00
parent be755fe25e
commit c82b19687a
No known key found for this signature in database
GPG key ID: 5B63BAE6CB9613AE
2 changed files with 20 additions and 17 deletions

View file

@ -1,17 +1,20 @@
class Spy: class Spy:
def __init__(self, obj, func_name): def __init__(self, obj, func_name):
self.obj = obj self.obj = obj
self.func_name = func_name self.func_name = func_name
self.func_original = getattr(self.obj, func_name) self.func_original = getattr(self.obj, func_name)
self.calls = [] self.calls = []
def __enter__(self, *args, **kwargs): def __enter__(self, *args, **kwargs):
def loggedFunc(cls, *args, **kwags): def loggedFunc(cls, *args, **kwargs):
print "Logging", self, args, kwargs call = dict(enumerate(args, 1))
self.calls.append(args) call[0] = cls
return self.func_original(cls, *args, **kwargs) call.update(kwargs)
setattr(self.obj, self.func_name, loggedFunc) print "Logging", call
return self.calls 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): def __exit__(self, *args, **kwargs):
setattr(self.obj, self.func_name, self.func_original) setattr(self.obj, self.func_name, self.func_original)

View file

@ -39,7 +39,7 @@ class TestSiteDownload:
site_temp.needFile("data/img/direct_domains.png", priority=15, blocking=False) site_temp.needFile("data/img/direct_domains.png", priority=15, blocking=False)
site_temp.onFileDone.append(boostRequest) site_temp.onFileDone.append(boostRequest)
site_temp.download(blind_includes=True).join(timeout=5) 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 # Test priority
assert file_requests[0:2] == ["content.json", "index.html"] # Must-have files 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 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)) threads.append(site_temp.needFile("data/users/1CjfbrbwtP8Y2QjPy12vpTATkUT7oSiPQ9/peanut-butter-jelly-time.gif", blocking=False))
gevent.joinall(threads) 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/optional.txt")
assert site_temp.storage.isFile("data/users/1CjfbrbwtP8Y2QjPy12vpTATkUT7oSiPQ9/peanut-butter-jelly-time.gif") assert site_temp.storage.isFile("data/users/1CjfbrbwtP8Y2QjPy12vpTATkUT7oSiPQ9/peanut-butter-jelly-time.gif")
@ -257,7 +257,7 @@ class TestSiteDownload:
site.publish() site.publish()
time.sleep(0.1) time.sleep(0.1)
site_temp.download(blind_includes=True).join(timeout=5) 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 assert site_temp.storage.open("data/data.json").read() == data_new