diff options
| author | Ulf Magnusson <ulfalizer@gmail.com> | 2018-01-22 19:20:13 +0100 |
|---|---|---|
| committer | Ulf Magnusson <ulfalizer@gmail.com> | 2018-01-22 20:04:41 +0100 |
| commit | 532b561288f6a9628073e68aaa51b87d9c20e838 (patch) | |
| tree | 05c3efd9d57cb0ddc9d0384e1590dcf639eaa4e3 /testsuite.py | |
| parent | e01cb49d35e5062afb7fe159c8777f74e02aeceb (diff) | |
Simplify escape()
The fancy regex isn't really justified. Much faster with replace() too,
though this is an unlikely hotspot.
Could have used a \g<0> backreference to refer to the entire match
instead of using a capturing group too. Hadn't discovered that.
Add some selftests for escape() and unescape() too.
Diffstat (limited to 'testsuite.py')
| -rw-r--r-- | testsuite.py | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/testsuite.py b/testsuite.py index 0d892ed..9d7dda2 100644 --- a/testsuite.py +++ b/testsuite.py @@ -41,7 +41,7 @@ from kconfiglib import Kconfig, Symbol, Choice, COMMENT, MENU, \ BOOL, TRISTATE, HEX, STRING, \ TRI_TO_STR, \ - KconfigSyntaxError, expr_value + KconfigSyntaxError, expr_value, escape, unescape import difflib import errno import os @@ -241,6 +241,27 @@ def run_selftests(): verify_string_bad(r""" 'foo """) + print("Testing escape() and unescape()") + + def verify_escape_unescape(s, sesc): + # Verify that 's' escapes to 'sesc' and that 'sesc' unescapes to 's' + verify_equal(escape(s), sesc) + verify_equal(unescape(sesc), s) + + verify_escape_unescape(r'' , r'' ) + verify_escape_unescape(r'foo' , r'foo' ) + verify_escape_unescape(r'"' , r'\"' ) + verify_escape_unescape(r'""' , r'\"\"' ) + verify_escape_unescape('\\' , r'\\' ) + verify_escape_unescape(r'\\' , r'\\\\' ) + verify_escape_unescape(r'\"' , r'\\\"' ) + verify_escape_unescape(r'"ab\cd"ef"', r'\"ab\\cd\"ef\"') + + # Backslashes before any character should be unescaped, not just before " + # and \ + verify_equal(unescape(r"\afoo\b\c\\d\\\e\\\\f"), r"afoobc\d\e\\f") + + print("Testing expression evaluation") c = Kconfig("Kconfiglib/tests/Keval") |
