mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-20 21:14:14 +08:00
Summary: fix https://github.com/pytorch/pytorch/issues/50448. This replaces all `test/*.py` files with run_tests(). This PR does not address test files in the subdirectories because they seems unrelated. Pull Request resolved: https://github.com/pytorch/pytorch/pull/50451 Reviewed By: janeyx99 Differential Revision: D25899924 Pulled By: walterddr fbshipit-source-id: f7c861f0096624b2791ad6ef6a16b1c4895cce71
107 lines
2.9 KiB
Python
107 lines
2.9 KiB
Python
from torch.testing._internal import expecttest
|
|
from torch.testing._internal.common_utils import TestCase, run_tests
|
|
|
|
import string
|
|
import textwrap
|
|
import doctest
|
|
from typing import Dict, Any
|
|
|
|
import hypothesis
|
|
from hypothesis.strategies import text, integers, composite, sampled_from, booleans
|
|
|
|
|
|
@composite
|
|
def text_lineno(draw):
|
|
t = draw(text("a\n"))
|
|
lineno = draw(integers(min_value=1, max_value=t.count("\n") + 1))
|
|
return (t, lineno)
|
|
|
|
|
|
class TestExpectTest(TestCase):
|
|
@hypothesis.given(text_lineno())
|
|
def test_nth_line_ref(self, t_lineno):
|
|
t, lineno = t_lineno
|
|
hypothesis.event("lineno = {}".format(lineno))
|
|
|
|
def nth_line_ref(src, lineno):
|
|
xs = src.split("\n")[:lineno]
|
|
xs[-1] = ''
|
|
return len("\n".join(xs))
|
|
self.assertEqual(expecttest.nth_line(t, lineno), nth_line_ref(t, lineno))
|
|
|
|
@hypothesis.given(text(string.printable), booleans(), sampled_from(['"', "'"]))
|
|
def test_replace_string_literal_roundtrip(self, t, raw, quote):
|
|
if raw:
|
|
hypothesis.assume(expecttest.ok_for_raw_triple_quoted_string(t, quote=quote))
|
|
prog = """\
|
|
r = {r}{quote}placeholder{quote}
|
|
r2 = {r}{quote}placeholder2{quote}
|
|
r3 = {r}{quote}placeholder3{quote}
|
|
""".format(r='r' if raw else '', quote=quote * 3)
|
|
new_prog = expecttest.replace_string_literal(textwrap.dedent(prog), 2, t)[0]
|
|
ns : Dict[str, Any] = {}
|
|
exec(new_prog, ns)
|
|
msg = "program was:\n{}".format(new_prog)
|
|
self.assertEqual(ns['r'], 'placeholder', msg=msg) # noqa: F821
|
|
self.assertEqual(ns['r2'], expecttest.normalize_nl(t), msg=msg) # noqa: F821
|
|
self.assertEqual(ns['r3'], 'placeholder3', msg=msg) # noqa: F821
|
|
|
|
def test_sample(self):
|
|
prog = r"""
|
|
single_single('''0''')
|
|
single_multi('''1''')
|
|
multi_single('''\
|
|
2
|
|
''')
|
|
multi_multi_less('''\
|
|
3
|
|
4
|
|
''')
|
|
multi_multi_same('''\
|
|
5
|
|
''')
|
|
multi_multi_more('''\
|
|
6
|
|
''')
|
|
"""
|
|
# NB: These are the end of the statements, not beginning
|
|
# TODO: Test other permutations of these edits
|
|
edits = [(2, "a"),
|
|
(3, "b\n"),
|
|
(6, "c"),
|
|
(10, "d\n"),
|
|
(13, "e\n"),
|
|
(16, "f\ng\n")]
|
|
history = expecttest.EditHistory()
|
|
fn = 'not_a_real_file.py'
|
|
for lineno, actual in edits:
|
|
lineno = history.adjust_lineno(fn, lineno)
|
|
prog, delta = expecttest.replace_string_literal(prog, lineno, actual)
|
|
history.record_edit(fn, lineno, delta)
|
|
self.assertExpectedInline(prog, r"""
|
|
single_single('''a''')
|
|
single_multi('''\
|
|
b
|
|
''')
|
|
multi_single('''c''')
|
|
multi_multi_less('''\
|
|
d
|
|
''')
|
|
multi_multi_same('''\
|
|
e
|
|
''')
|
|
multi_multi_more('''\
|
|
f
|
|
g
|
|
''')
|
|
""")
|
|
|
|
|
|
def load_tests(loader, tests, ignore):
|
|
tests.addTests(doctest.DocTestSuite(expecttest))
|
|
return tests
|
|
|
|
|
|
if __name__ == '__main__':
|
|
run_tests()
|