Index: third_party/cython/src/Cython/Build/Tests/TestStripLiterals.py |
diff --git a/third_party/cython/src/Cython/Build/Tests/TestStripLiterals.py b/third_party/cython/src/Cython/Build/Tests/TestStripLiterals.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ca8e6a7d1456b05cfbfc795c71e3be27d560f0f2 |
--- /dev/null |
+++ b/third_party/cython/src/Cython/Build/Tests/TestStripLiterals.py |
@@ -0,0 +1,57 @@ |
+from Cython.Build.Dependencies import strip_string_literals |
+ |
+from Cython.TestUtils import CythonTest |
+ |
+class TestStripLiterals(CythonTest): |
+ |
+ def t(self, before, expected): |
+ actual, literals = strip_string_literals(before, prefix="_L") |
+ self.assertEquals(expected, actual) |
+ for key, value in literals.items(): |
+ actual = actual.replace(key, value) |
+ self.assertEquals(before, actual) |
+ |
+ def test_empty(self): |
+ self.t("", "") |
+ |
+ def test_single_quote(self): |
+ self.t("'x'", "'_L1_'") |
+ |
+ def test_double_quote(self): |
+ self.t('"x"', '"_L1_"') |
+ |
+ def test_nested_quotes(self): |
+ self.t(""" '"' "'" """, """ '_L1_' "_L2_" """) |
+ |
+ def test_triple_quote(self): |
+ self.t(" '''a\n''' ", " '''_L1_''' ") |
+ |
+ def test_backslash(self): |
+ self.t(r"'a\'b'", "'_L1_'") |
+ self.t(r"'a\\'", "'_L1_'") |
+ self.t(r"'a\\\'b'", "'_L1_'") |
+ |
+ def test_unicode(self): |
+ self.t("u'abc'", "u'_L1_'") |
+ |
+ def test_raw(self): |
+ self.t(r"r'abc\\'", "r'_L1_'") |
+ |
+ def test_raw_unicode(self): |
+ self.t(r"ru'abc\\'", "ru'_L1_'") |
+ |
+ def test_comment(self): |
+ self.t("abc # foo", "abc #_L1_") |
+ |
+ def test_comment_and_quote(self): |
+ self.t("abc # 'x'", "abc #_L1_") |
+ self.t("'abc#'", "'_L1_'") |
+ |
+ def test_include(self): |
+ self.t("include 'a.pxi' # something here", |
+ "include '_L1_' #_L2_") |
+ |
+ def test_extern(self): |
+ self.t("cdef extern from 'a.h': # comment", |
+ "cdef extern from '_L1_': #_L2_") |
+ |