summaryrefslogtreecommitdiff
path: root/tests/run/pycontextvar.pyx
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run/pycontextvar.pyx')
-rw-r--r--tests/run/pycontextvar.pyx56
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/run/pycontextvar.pyx b/tests/run/pycontextvar.pyx
new file mode 100644
index 000000000..44e741c42
--- /dev/null
+++ b/tests/run/pycontextvar.pyx
@@ -0,0 +1,56 @@
+# mode: run
+
+from cpython.contextvars cimport (
+ PyContextVar_New, PyContextVar_New_with_default,
+ get_value, get_value_no_default,
+)
+
+NOTHING = object()
+CVAR = PyContextVar_New("cvar", NULL)
+CVAR_WITH_DEFAULT = PyContextVar_New_with_default("cvar_wd", "DEFAULT")
+
+
+import contextvars
+PYCVAR = contextvars.ContextVar("pycvar")
+
+def disable_for_pypy737(f):
+ import sys
+ # will be fixed in PyPy 7.3.8
+ if hasattr(sys, 'pypy_version_info') and sys.pypy_version_info < (7,3,8):
+ return None
+ return f
+
+
+@disable_for_pypy737
+def test_get_value(var, default=NOTHING):
+ """
+ >>> test_get_value(CVAR)
+ >>> test_get_value(CVAR, "default")
+ 'default'
+ >>> test_get_value(PYCVAR)
+ >>> test_get_value(PYCVAR, "default")
+ 'default'
+ >>> test_get_value(CVAR_WITH_DEFAULT)
+ 'DEFAULT'
+ >>> test_get_value(CVAR_WITH_DEFAULT, "default")
+ 'DEFAULT'
+ """
+ return get_value(var, default) if default is not NOTHING else get_value(var)
+
+
+@disable_for_pypy737
+def test_get_value_no_default(var, default=NOTHING):
+ """
+ >>> test_get_value_no_default(CVAR)
+ >>> test_get_value_no_default(CVAR, "default")
+ 'default'
+ >>> test_get_value_no_default(PYCVAR)
+ >>> test_get_value_no_default(PYCVAR, "default")
+ 'default'
+ >>> test_get_value_no_default(CVAR_WITH_DEFAULT)
+ >>> test_get_value_no_default(CVAR_WITH_DEFAULT, "default")
+ 'default'
+ """
+ return get_value_no_default(var, default) if default is not NOTHING else get_value_no_default(var)
+
+__test__ = {}