summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPádraig Brady <P@draigBrady.com>2015-11-03 11:07:06 +0000
committerPádraig Brady <P@draigBrady.com>2015-11-04 23:30:15 +0000
commit697b8ce26549cceffa8745a1dc0f13654173c575 (patch)
tree8abc475a2a9ef4c028a45dd5d32c9a6f361be84a /tests
parent7549be4af7e8ac9a088927c35a011da835968b9f (diff)
downloadcoreutils-697b8ce26549cceffa8745a1dc0f13654173c575.tar.xz
ls: avoid redundant processing when already escaping
This is mainly noticeable when the multi-byte code within ls.c is triggered by multi-byte quotes. $ seq 200000 | xargs touch $ time ls-old -U --quoting=locale --hide-control-chars >/dev/null real 0m0.483s $ time ls-new -U --quoting=locale --hide-control-chars >/dev/null real 0m0.430s * src/ls.c (quote_name): Avoid rescanning the output looking for unprintable chars when we know the quoting mode already escapes them. * tests/misc/ls-misc.pl: Add tests for all quoting modes, with and without -q, to verify this assumption.
Diffstat (limited to 'tests')
-rwxr-xr-xtests/misc/ls-misc.pl26
1 files changed, 19 insertions, 7 deletions
diff --git a/tests/misc/ls-misc.pl b/tests/misc/ls-misc.pl
index 8b97c50f0..d3897737e 100755
--- a/tests/misc/ls-misc.pl
+++ b/tests/misc/ls-misc.pl
@@ -132,13 +132,25 @@ my @Tests =
['q-q', '-q', $q_bell, {OUT => "q?\n"}],
['q-Q', '-Q', $q_bell, {OUT => "\"q\\a\"\n"}],
- ['q-lit-q', '--quoting=literal -q', $q_bell, {OUT => "q?\n"}],
- ['q-qs-lit', '--quoting=literal', $q_bell, {OUT => "q\a\n"}],
- ['q-qs-sh', '--quoting=shell', $q_bell, {OUT => "q\a\n"}],
- ['q-qs-sh-a', '--quoting=shell-always', $q_bell, {OUT => "'q\a'\n"}],
- ['q-qs-sh-e', '--quoting=shell-escape', $q_bell, {OUT => "'q'\$'\\a'\n"}],
- ['q-qs-c', '--quoting=c', $q_bell, {OUT => "\"q\\a\"\n"}],
- ['q-qs-esc', '--quoting=escape', $q_bell, {OUT => "q\\a\n"}],
+ ['q-qs-lit', '--quoting=literal', $q_bell, {OUT => "q\a\n"}],
+ ['q-qs-sh', '--quoting=shell', $q_bell, {OUT => "q\a\n"}],
+ ['q-qs-sh-a', '--quoting=shell-always',$q_bell, {OUT => "'q\a'\n"}],
+ ['q-qs-sh-e', '--quoting=shell-escape',$q_bell, {OUT => "'q'\$'\\a'\n"}],
+ ['q-qs-c', '--quoting=c', $q_bell, {OUT => "\"q\\a\"\n"}],
+ ['q-qs-esc', '--quoting=escape', $q_bell, {OUT => "q\\a\n"}],
+ ['q-qs-loc', '--quoting=locale', $q_bell, {OUT => "'q\\a'\n"}],
+ ['q-qs-cloc', '--quoting=clocale', $q_bell, {OUT => "\"q\\a\"\n"}],
+
+ ['q-qs-lit-q', '--quoting=literal -q', $q_bell, {OUT => "q?\n"}],
+ ['q-qs-sh-q', '--quoting=shell -q', $q_bell, {OUT => "q?\n"}],
+ ['q-qs-sh-a-q', '--quoting=shell-al -q', $q_bell, {OUT => "'q?'\n"}],
+ ['q-qs-sh-e-q', '--quoting=shell-escape -q',
+ $q_bell, {OUT => "'q'\$'\\a'\n"}],
+ ['q-qs-c-q', '--quoting=c -q', $q_bell, {OUT => "\"q\\a\"\n"}],
+ ['q-qs-esc-q', '--quoting=escape -q', $q_bell, {OUT => "q\\a\n"}],
+ ['q-qs-loc-q', '--quoting=locale -q', $q_bell, {OUT => "'q\\a'\n"}],
+ ['q-qs-cloc-q', '--quoting=clocale -q', $q_bell, {OUT => "\"q\\a\"\n"}],
+
['q-qs-c-1', '--quoting=c',
{IN => {"t\004" => ''}}, {OUT => "\"t\\004\"\n"}],