Beispiel #1
0
 def test_no_output(self):
     with file_utils.Tempdir() as d:
         inpath = d.create_file("in.pytd", "def f(x) -> str: ...")
         # Not specifying an output is fine; the tool simply checks that the input
         # file is parseable.
         sys.argv = ["main.py", inpath]
         pytd_tool.main()
Beispiel #2
0
 def test_parse_error(self):
     with file_utils.Tempdir() as d:
         inpath = d.create_file("in.pytd",
                                "def f(x): str")  # malformed pytd
         sys.argv = ["main.py", inpath]
         with self.assertRaises(SystemExit):
             pytd_tool.main()
Beispiel #3
0
 def test_output(self):
     with file_utils.Tempdir() as d:
         src = textwrap.dedent("""
     @overload
     def f(x: int) -> str: ...
     @overload
     def f(x: str) -> str: ...
   """).strip()
         inpath = d.create_file("in.pytd", src)
         outpath = os.path.join(d.path, "out.pytd")
         sys.argv = ["main.py", inpath, outpath]
         pytd_tool.main()
         with open(outpath, "r") as f:
             self.assertMultiLineEqual(f.read(), src)
Beispiel #4
0
    def test_optimize(self):
        with file_utils.Tempdir() as d:
            inpath = d.create_file(
                "in.pytd", """
        @overload
        def f(x: int) -> str: ...
        @overload
        def f(x: str) -> str: ...
      """)
            outpath = os.path.join(d.path, "out.pytd")
            sys.argv = ["main.py", "--optimize", inpath, outpath]
            pytd_tool.main()
            with open(outpath, "r") as f:
                self.assertMultiLineEqual(
                    f.read(),
                    textwrap.dedent("""
          from typing import Union

          def f(x: Union[int, str]) -> str: ...
        """).strip())
Beispiel #5
0
 def test_missing_input(self):
     sys.argv = ["main.py"]
     with self.assertRaises(SystemExit):
         pytd_tool.main()
Beispiel #6
0
 def test_version_error(self):
     sys.argv = ["main.py", "--python_version=4.0"]
     with self.assertRaises(SystemExit):
         pytd_tool.main()