moving to scripts
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,72 @@
|
||||
import ast
|
||||
import astor
|
||||
import pytest
|
||||
import os
|
||||
import sys
|
||||
|
||||
from shutil import copyfile
|
||||
from trio._tools.gen_exports import (
|
||||
get_public_methods,
|
||||
create_passthrough_args,
|
||||
process,
|
||||
)
|
||||
|
||||
SOURCE = '''from _run import _public
|
||||
|
||||
class Test:
|
||||
@_public
|
||||
def public_func(self):
|
||||
"""With doc string"""
|
||||
|
||||
@ignore_this
|
||||
@_public
|
||||
@another_decorator
|
||||
async def public_async_func(self):
|
||||
pass # no doc string
|
||||
|
||||
def not_public(self):
|
||||
pass
|
||||
|
||||
async def not_public_async(self):
|
||||
pass
|
||||
'''
|
||||
|
||||
|
||||
def test_get_public_methods():
|
||||
methods = list(get_public_methods(ast.parse(SOURCE)))
|
||||
assert {m.name for m in methods} == {"public_func", "public_async_func"}
|
||||
|
||||
|
||||
def test_create_pass_through_args():
|
||||
testcases = [
|
||||
("def f()", "()"),
|
||||
("def f(one)", "(one)"),
|
||||
("def f(one, two)", "(one, two)"),
|
||||
("def f(one, *args)", "(one, *args)"),
|
||||
(
|
||||
"def f(one, *args, kw1, kw2=None, **kwargs)",
|
||||
"(one, *args, kw1=kw1, kw2=kw2, **kwargs)",
|
||||
),
|
||||
]
|
||||
|
||||
for (funcdef, expected) in testcases:
|
||||
func_node = ast.parse(funcdef + ":\n pass").body[0]
|
||||
assert isinstance(func_node, ast.FunctionDef)
|
||||
assert create_passthrough_args(func_node) == expected
|
||||
|
||||
|
||||
def test_process(tmp_path):
|
||||
modpath = tmp_path / "_module.py"
|
||||
genpath = tmp_path / "_generated_module.py"
|
||||
modpath.write_text(SOURCE, encoding="utf-8")
|
||||
assert not genpath.exists()
|
||||
with pytest.raises(SystemExit) as excinfo:
|
||||
process([(str(modpath), "runner")], do_test=True)
|
||||
assert excinfo.value.code == 1
|
||||
process([(str(modpath), "runner")], do_test=False)
|
||||
assert genpath.exists()
|
||||
process([(str(modpath), "runner")], do_test=True)
|
||||
# But if we change the lookup path it notices
|
||||
with pytest.raises(SystemExit) as excinfo:
|
||||
process([(str(modpath), "runner.io_manager")], do_test=True)
|
||||
assert excinfo.value.code == 1
|
||||
Reference in New Issue
Block a user