예제 #1
0
 def test_write_to_file(self):
     fd, filename = tempfile.mkstemp()
     os.close(fd)
     try:
         sqlcon.process("foo", output=filename)
         self.assertEqual(open(filename).read(), "foo\n")
     finally:
         os.unlink(filename)
예제 #2
0
 def test_write_to_sysout(self):
     temp = sys.stdout
     try:
         sys.stdout = io.StringIO()
         sqlcon.process("foo", output="stdout")
         self.assertEqual(sys.stdout.getvalue(), "foo\n")
     finally:
         sys.stdout = temp
예제 #3
0
 def test_write_to_path(self):
     fd, filename = tempfile.mkstemp()
     os.close(fd)
     p = pathlib.Path(filename)
     try:
         sqlcon.process("foo", output=p)
         self.assertEqual(p.read_text(), "foo\n")
     finally:
         p.unlink()
예제 #4
0
    def test_example1(self):
        sql = example(
            ["name", "age", "address"],
            [("name", "=", "tim"), ("address", "~", "England")],
        )
        self.assertEqual(
            sqlcon.process(sql),
            """SELECT
    "name",
    "age",
    "address"
FROM
    (
        SELECT
            *
        FROM
            some_table
        LEFT JOIN
            some_other_table
        USING
            some_table.id = some_other_table.key
    ) AS tmp
WHERE
    "name" = 'tim' AND
    "address" ~ 'England'
""",
        )
예제 #5
0
    def test_plain_text_multiline(self):
        def f():
            yield """
                foo
            """

        self.assertEqual(sqlcon.process(f()), "foo\n")
예제 #6
0
    def test_mixed_text_and_indents(self):
        def f():
            yield """
                foo
            """
            yield 1, "bar", -1
            yield "foo"

        self.assertEqual(sqlcon.process(f()), "foo\n    bar\nfoo\n")
예제 #7
0
    def test_plain_text_indent(self):
        def f():
            yield """
                foo
                    bar
                foo
            """
            yield """
                foo
            """

        self.assertEqual(sqlcon.process(f()), "foo\n    bar\nfoo\nfoo\n")
예제 #8
0
 def test_write_to_unwritable_object(self):
     with self.assertRaises(ValueError):
         sqlcon.process("foo", output=object())
예제 #9
0
 def test_write_to_file_like_object(self):
     output = io.StringIO()
     sqlcon.process("foo", output=output)
     self.assertEqual(output.getvalue(), "foo\n")
예제 #10
0
 def test_plain_text(self):
     self.assertEqual(sqlcon.process(["foo"]), "foo\n")
예제 #11
0
 def test_empty_text(self):
     self.assertEqual(sqlcon.process([""]), "\n")
예제 #12
0
 def test_degenerate_indent_only(self):
     self.assertEqual(sqlcon.process([1]), "")
예제 #13
0
 def test_degenerate_empty_tuple(self):
     self.assertEqual(sqlcon.process(()), "")
예제 #14
0
 def test_degenerate_empty_list(self):
     self.assertEqual(sqlcon.process([]), "")
예제 #15
0
 def test_degenerate_empty_string(self):
     self.assertEqual(sqlcon.process(""), "\n")