test_helpers.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. from pluggy._hooks import varnames
  2. from pluggy._manager import _formatdef
  3. def test_varnames():
  4. def f(x):
  5. i = 3 # noqa
  6. class A:
  7. def f(self, y):
  8. pass
  9. class B:
  10. def __call__(self, z):
  11. pass
  12. assert varnames(f) == (("x",), ())
  13. assert varnames(A().f) == (("y",), ())
  14. assert varnames(B()) == (("z",), ())
  15. def test_varnames_default():
  16. def f(x, y=3):
  17. pass
  18. assert varnames(f) == (("x",), ("y",))
  19. def test_varnames_class():
  20. class C:
  21. def __init__(self, x):
  22. pass
  23. class D:
  24. pass
  25. class E:
  26. def __init__(self, x):
  27. pass
  28. class F:
  29. pass
  30. assert varnames(C) == (("x",), ())
  31. assert varnames(D) == ((), ())
  32. assert varnames(E) == (("x",), ())
  33. assert varnames(F) == ((), ())
  34. def test_varnames_keyword_only():
  35. def f1(x, *, y):
  36. pass
  37. def f2(x, *, y=3):
  38. pass
  39. def f3(x=1, *, y=3):
  40. pass
  41. assert varnames(f1) == (("x",), ())
  42. assert varnames(f2) == (("x",), ())
  43. assert varnames(f3) == ((), ("x",))
  44. def test_formatdef():
  45. def function1():
  46. pass
  47. assert _formatdef(function1) == "function1()"
  48. def function2(arg1):
  49. pass
  50. assert _formatdef(function2) == "function2(arg1)"
  51. def function3(arg1, arg2="qwe"):
  52. pass
  53. assert _formatdef(function3) == "function3(arg1, arg2='qwe')"
  54. def function4(arg1, *args, **kwargs):
  55. pass
  56. assert _formatdef(function4) == "function4(arg1, *args, **kwargs)"