test_markerlib.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import os
  2. import pytest
  3. class TestMarkerlib:
  4. @pytest.mark.importorskip('ast')
  5. def test_markers(self):
  6. from _markerlib import interpret, default_environment, compile
  7. os_name = os.name
  8. assert interpret("")
  9. assert interpret("os.name != 'buuuu'")
  10. assert interpret("os_name != 'buuuu'")
  11. assert interpret("python_version > '1.0'")
  12. assert interpret("python_version < '5.0'")
  13. assert interpret("python_version <= '5.0'")
  14. assert interpret("python_version >= '1.0'")
  15. assert interpret("'%s' in os.name" % os_name)
  16. assert interpret("'%s' in os_name" % os_name)
  17. assert interpret("'buuuu' not in os.name")
  18. assert not interpret("os.name == 'buuuu'")
  19. assert not interpret("os_name == 'buuuu'")
  20. assert not interpret("python_version < '1.0'")
  21. assert not interpret("python_version > '5.0'")
  22. assert not interpret("python_version >= '5.0'")
  23. assert not interpret("python_version <= '1.0'")
  24. assert not interpret("'%s' not in os.name" % os_name)
  25. assert not interpret("'buuuu' in os.name and python_version >= '5.0'")
  26. assert not interpret("'buuuu' in os_name and python_version >= '5.0'")
  27. environment = default_environment()
  28. environment['extra'] = 'test'
  29. assert interpret("extra == 'test'", environment)
  30. assert not interpret("extra == 'doc'", environment)
  31. def raises_nameError():
  32. try:
  33. interpret("python.version == '42'")
  34. except NameError:
  35. pass
  36. else:
  37. raise Exception("Expected NameError")
  38. raises_nameError()
  39. def raises_syntaxError():
  40. try:
  41. interpret("(x for x in (4,))")
  42. except SyntaxError:
  43. pass
  44. else:
  45. raise Exception("Expected SyntaxError")
  46. raises_syntaxError()
  47. statement = "python_version == '5'"
  48. assert compile(statement).__doc__ == statement