PySnooper/tests/samples/recursion.py

63 lines
2.1 KiB
Python

import pysnooper
@pysnooper.snoop(depth=2)
def factorial(x):
if x <= 1:
return 1
return mul(x, factorial(x - 1))
def mul(a, b):
return a * b
def main():
factorial(4)
expected_output = '''
Source path:... Whatever
Starting var:.. x = 4
20:28:17.875295 call 5 def factorial(x):
20:28:17.875509 line 6 if x <= 1:
20:28:17.875550 line 8 return mul(x, factorial(x - 1))
Starting var:.. x = 3
20:28:17.875624 call 5 def factorial(x):
20:28:17.875668 line 6 if x <= 1:
20:28:17.875703 line 8 return mul(x, factorial(x - 1))
Starting var:.. x = 2
20:28:17.875771 call 5 def factorial(x):
20:28:17.875813 line 6 if x <= 1:
20:28:17.875849 line 8 return mul(x, factorial(x - 1))
Starting var:.. x = 1
20:28:17.875913 call 5 def factorial(x):
20:28:17.875953 line 6 if x <= 1:
20:28:17.875987 line 7 return 1
20:28:17.876021 return 7 return 1
Return value:.. 1
Starting var:.. a = 2
Starting var:.. b = 1
20:28:17.876111 call 11 def mul(a, b):
20:28:17.876151 line 12 return a * b
20:28:17.876190 return 12 return a * b
Return value:.. 2
20:28:17.876235 return 8 return mul(x, factorial(x - 1))
Return value:.. 2
Starting var:.. a = 3
Starting var:.. b = 2
20:28:17.876320 call 11 def mul(a, b):
20:28:17.876359 line 12 return a * b
20:28:17.876397 return 12 return a * b
Return value:.. 6
20:28:17.876442 return 8 return mul(x, factorial(x - 1))
Return value:.. 6
Starting var:.. a = 4
Starting var:.. b = 6
20:28:17.876525 call 11 def mul(a, b):
20:28:17.876563 line 12 return a * b
20:28:17.876601 return 12 return a * b
Return value:.. 24
20:28:17.876646 return 8 return mul(x, factorial(x - 1))
Return value:.. 24
'''