[PATCH 2 of 6] run-tests: handle output that starts with "$ "

timeless timeless at mozdev.org
Tue Jan 12 12:38:05 CST 2016


# HG changeset patch
# User timeless <timeless at mozdev.org>
# Date 1452619172 0
#      Tue Jan 12 17:19:32 2016 +0000
# Node ID a4f6489df893272a532f9d9cf88b12fd0619efc6
# Parent  13f44adf400886e8d65fcb2bcf5dc5763b250214
run-tests: handle output that starts with "$ "

This is necessary because some help content happens to start with that pattern,
and it is legitimate, so, we add an escape sequence for "$ " as "\$ ".

If you need to use this escape sequence in a dynamic (echo > test-test.t << EOF)
test, remember that you have to escape your backslash because the first one
will be parsed by the shell, and thus will not be in your file.

For normal users, a single backslash is enough, and running your test with -i
will generate the proper escaping.

diff --git a/tests/run-tests.py b/tests/run-tests.py
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -1045,6 +1045,9 @@
             elif l.startswith(b'  > '): # continuations
                 after.setdefault(prepos, []).append(l)
                 script.append(l[4:])
+            elif l.startswith(b'  \\$'): # results
+                # Queue up a list of expected results.
+                expected.setdefault(pos, []).append(l[2:])
             elif l.startswith(b'  '): # results
                 # Queue up a list of expected results.
                 expected.setdefault(pos, []).append(l[2:])
@@ -1077,6 +1080,11 @@
                 lout, lcmd = l.split(salt, 1)
 
             while lout:
+                # We generally expect lines that start with "$ "
+                # To be commands, but they can also be the result of
+                # output, when that happens, we escape them with a \.
+                if lout.startswith('$ '):
+                    lout = '\\' + lout
                 if not lout.endswith(b'\n'):
                     lout += b' (no-eol)\n'
 
diff --git a/tests/test-help.t b/tests/test-help.t
--- a/tests/test-help.t
+++ b/tests/test-help.t
@@ -2260,24 +2260,24 @@
   <ul>
    <li> New (unknown) files are added   automatically by "hg add":
   <pre>
-  \$ ls (re)
+  \$ ls
   foo.c
-  \$ hg status (re)
+  \$ hg status
   ? foo.c
-  \$ hg add (re)
+  \$ hg add
   adding foo.c
-  \$ hg status (re)
+  \$ hg status
   A foo.c
   </pre>
    <li> Specific files to be added can be specified:
   <pre>
-  \$ ls (re)
+  \$ ls
   bar.c  foo.c
-  \$ hg status (re)
+  \$ hg status
   ? bar.c
   ? foo.c
-  \$ hg add bar.c (re)
-  \$ hg status (re)
+  \$ hg add bar.c
+  \$ hg status
   A bar.c
   ? foo.c
   </pre>
diff --git a/tests/test-run-tests.t b/tests/test-run-tests.t
--- a/tests/test-run-tests.t
+++ b/tests/test-run-tests.t
@@ -620,6 +620,16 @@
 
   $ rm -f test-glob-backslash.t
 
+dollar at beginning of line needs to be escaped
+
+  $ cat > test-dollar-escape.t << EOF
+  >   $ echo $ echo this
+  >   \\$ echo this
+  > EOF
+  $ rt test-dollar-escape.t
+  .
+  # Ran 1 tests, 0 skipped, 0 warned, 0 failed.
+
 Test reusability for third party tools
 ======================================
 


More information about the Mercurial-devel mailing list