summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2018-07-10 16:21:34 +1000
committerDamien George <damien.p.george@gmail.com>2018-07-10 16:33:57 +1000
commite2e22e3d7e29985579b2c91c639c71229422f349 (patch)
treec9606c2ac7241209e6620c849a76b97ff39f3dc2 /tests
parentee40d1704fc3ec285f0be67ef7010670a1c5c01a (diff)
py/objgenerator: Implement __name__ with normal fun attr accessor code.
With the recent change b488a4a8480533a6a3c9468c2f8bd359c94d4d02, a generating function now has the same layout in memory as a normal bytecode function, and so can reuse the latter's attribute accessor code to implement __name__.
Diffstat (limited to 'tests')
-rw-r--r--tests/basics/generator_name.py16
-rwxr-xr-xtests/run-tests2
2 files changed, 17 insertions, 1 deletions
diff --git a/tests/basics/generator_name.py b/tests/basics/generator_name.py
new file mode 100644
index 000000000..77259a821
--- /dev/null
+++ b/tests/basics/generator_name.py
@@ -0,0 +1,16 @@
+# test __name__ on generator functions
+
+def Fun():
+ yield
+
+class A:
+ def Fun(self):
+ yield
+
+try:
+ print(Fun.__name__)
+ print(A.Fun.__name__)
+ print(A().Fun.__name__)
+except AttributeError:
+ print('SKIP')
+ raise SystemExit
diff --git a/tests/run-tests b/tests/run-tests
index e1b594edf..e4a0e20ed 100755
--- a/tests/run-tests
+++ b/tests/run-tests
@@ -336,7 +336,7 @@ def run_tests(pyb, tests, args, base_path="."):
# Some tests are known to fail with native emitter
# Remove them from the below when they work
if args.emit == 'native':
- skip_tests.update({'basics/%s.py' % t for t in 'gen_yield_from gen_yield_from_close gen_yield_from_ducktype gen_yield_from_exc gen_yield_from_executing gen_yield_from_iter gen_yield_from_send gen_yield_from_stopped gen_yield_from_throw gen_yield_from_throw2 gen_yield_from_throw3 generator1 generator2 generator_args generator_close generator_closure generator_exc generator_pend_throw generator_return generator_send'.split()}) # require yield
+ skip_tests.update({'basics/%s.py' % t for t in 'gen_yield_from gen_yield_from_close gen_yield_from_ducktype gen_yield_from_exc gen_yield_from_executing gen_yield_from_iter gen_yield_from_send gen_yield_from_stopped gen_yield_from_throw gen_yield_from_throw2 gen_yield_from_throw3 generator1 generator2 generator_args generator_close generator_closure generator_exc generator_name generator_pend_throw generator_return generator_send'.split()}) # require yield
skip_tests.update({'basics/%s.py' % t for t in 'bytes_gen class_store_class globals_del string_join'.split()}) # require yield
skip_tests.update({'basics/async_%s.py' % t for t in 'def await await2 for for2 with with2 with_break with_return'.split()}) # require yield
skip_tests.update({'basics/%s.py' % t for t in 'try_reraise try_reraise2'.split()}) # require raise_varargs