[PATCH stable] tests: tighten checks for octal escapes in shell printf

Matt Mackall mpm at selenic.com
Tue Feb 7 18:57:52 UTC 2012


On Tue, 2012-02-07 at 13:44 +0000, Jim Hague wrote:
> # HG changeset patch
> # User Jim Hague <jim.hague at acm.org>
> # Date 1328622226 0
> # Branch stable
> # Node ID fe91064d31f3ce06e2430be8e3917281f8cb4e6c
> # Parent  2e8f4b82c551014a5895b3dfc5858f2341bd7f41
> tests: tighten checks for octal escapes in shell printf.
> 
> printf on AIX default shell ksh (89) says \1 is an invalid escape. It insists
> on at least 2 digits. This causes failures in test-keyword.t and test-status.t.
> 
> check-code.py already looks out for \NNN and recommends using Python for outputting
> octal values. Extend the check to \NN and \N and fix up resulting failures.
> 
> diff -r 2e8f4b82c551 -r fe91064d31f3 contrib/check-code.py
> --- a/contrib/check-code.py	Mon Feb 06 21:17:50 2012 +0100
> +++ b/contrib/check-code.py	Tue Feb 07 13:43:46 2012 +0000
> @@ -54,7 +54,7 @@
>      (r'head -c', "don't use 'head -c', use 'dd'"),
>      (r'sha1sum', "don't use sha1sum, use $TESTDIR/md5sum.py"),
>      (r'ls.*-\w*R', "don't use 'ls -R', use 'find'"),
> -    (r'printf.*\\\d\d\d', "don't use 'printf \NNN', use Python"),
> +    (r'printf.*\\\d{1,3}', "don't use 'printf \NNN', use Python"),
>      (r'printf.*\\x', "don't use printf \\x, use Python"),
>      (r'\$\(.*\)', "don't use $(expr), use `expr`"),
>      (r'rm -rf \*', "don't use naked rm -rf, target a directory"),
> diff -r 2e8f4b82c551 -r fe91064d31f3 tests/test-diffstat.t
> --- a/tests/test-diffstat.t	Mon Feb 06 21:17:50 2012 +0100
> +++ b/tests/test-diffstat.t	Tue Feb 07 13:43:46 2012 +0000
> @@ -35,7 +35,7 @@
>  
>    $ hg ci -m appenda
>  
> -  $ printf '\0' > c
> +  $ python -c 'file("c", "wb").write("\0")'

So close! "Use Python" now means "use the awesome inline Python syntax",
ie:

  >>> open("c", "wb").write("\0")

http://mercurial.selenic.com/wiki/WritingTests#Inline_Python

Note the preference for open() over file().

>    $ touch d
>    $ hg add c d
>  
> @@ -54,7 +54,7 @@
>  
>    $ hg ci -m createb
>  
> -  $ printf '\0' > "file with spaces"
> +  $ python -c 'file("file with spaces", "wb").write("\0")'
>    $ hg add "file with spaces"
>  
>  Filename with spaces diffstat:
> diff -r 2e8f4b82c551 -r fe91064d31f3 tests/test-keyword.t
> --- a/tests/test-keyword.t	Mon Feb 06 21:17:50 2012 +0100
> +++ b/tests/test-keyword.t	Tue Feb 07 13:43:46 2012 +0000
> @@ -169,10 +169,10 @@
>  
>  hg status of kw-ignored binary file starting with '\1\n'
>  
> -  $ printf '\1\nfoo' > i
> +  $ python -c 'file("i", "wb").write("\1\nfoo")'
>    $ hg -q commit -Am metasep i
>    $ hg status
> -  $ printf '\1\nbar' > i
> +  $ python -c 'file("i", "wb").write("\1\nbar")'
>    $ hg status
>    M i
>    $ hg -q commit -m "modify metasep" i
> diff -r 2e8f4b82c551 -r fe91064d31f3 tests/test-status.t
> --- a/tests/test-status.t	Mon Feb 06 21:17:50 2012 +0100
> +++ b/tests/test-status.t	Tue Feb 07 13:43:46 2012 +0000
> @@ -279,12 +279,12 @@
>  
>    $ hg init repo5
>    $ cd repo5
> -  $ printf '\1\nfoo' > 010a
> +  $ python -c 'file("010a", "wb").write("\1\nfoo")'
>    $ hg ci -q -A -m 'initial checkin'
>    $ hg status -A
>    C 010a
>  
> -  $ printf '\1\nbar' > 010a
> +  $ python -c 'file("010a", "wb").write("\1\nbar")'
>    $ hg status -A
>    M 010a
>    $ hg ci -q -m 'modify 010a'
> diff -r 2e8f4b82c551 -r fe91064d31f3 tests/test-subrepo-paths.t
> --- a/tests/test-subrepo-paths.t	Mon Feb 06 21:17:50 2012 +0100
> +++ b/tests/test-subrepo-paths.t	Tue Feb 07 13:43:46 2012 +0000
> @@ -17,7 +17,7 @@
>  hg debugsub with remapping
>  
>    $ echo '[subpaths]' >> .hg/hgrc
> -  $ printf 'http://example.net/lib(.*) = C:\\libs\\\\1-lib\\\n' >> .hg/hgrc
> +  $ printf 'http://example.net/lib(.*) = C:\\libs\\\\1-lib\\\n' >> .hg/hgrc # no-check-code
>  
>    $ hg debugsub
>    path sub
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel


-- 
Mathematics is the supreme nostalgia of our time.





More information about the Mercurial-devel mailing list