Mercurial > hg
annotate tests/test-debian-packages.t @ 38483:3efadf2317c7
windows: add a method to convert Unix style command lines to Windows style
This started as a copy/paste of `os.path.expandvars()`, but limited to a given
dictionary of variables, converting `foo = foo + bar` to `foo += bar`, and
adding 'b' string prefixes. Then code was added to make sure that a value being
substituted in wouldn't itself be expanded by cmd.exe. But that left
inconsistent results between `$var1` and `%var1%` when its value was '%foo%'-
since neither were touched, `$var1` wouldn't expand but `%var1%` would. So
instead, this just converts the Unix style to Windows style (if the variable
exists, because Windows will leave `%missing%` as-is), and lets cmd.exe do its
thing.
I then dropped the %% -> % conversion (because Windows doesn't do this), and
added the ability to escape the '$' with '\'. The escape character is dropped,
for consistency with shell handling.
After everything seemed stable and working, running the whole test suite flagged
a problem near the end of test-bookmarks.t:1069. The problem is cmd.exe won't
pass empty variables to its child, so defined but empty variables are now
skipped. I can't think of anything better, and it seems like a pre-existing
violation of the documentation, which calls out that HG_OLDNODE is empty on
bookmark creation.
Future additions could potentially be replacing strong quotes with double quotes
(cmd.exe doesn't know what to do with the former), escaping a double quote, and
some tilde expansion via os.path.expanduser(). I've got some doubts about
replacing the strong quotes in case sh.exe is run, but it seems like the right
thing to do the vast majority of the time. The original form of this was
discussed about a year ago[1].
[1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-July/100735.html
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sun, 24 Jun 2018 01:13:09 -0400 |
parents | 0133ca39c688 |
children | 7574ccd87200 |
rev | line source |
---|---|
34401
13d3f8aaed87
tests: add "have" check for dpkg builddeps
Kyle Lippincott <spectral@google.com>
parents:
34400
diff
changeset
|
1 #require test-repo slow debhelper debdeps |
26148
7f49efcaa9b4
debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents:
26147
diff
changeset
|
2 |
29219
3c9066ed557c
tests: silence test-repo obsolete warning
timeless <timeless@mozdev.org>
parents:
26148
diff
changeset
|
3 $ . "$TESTDIR/helpers-testrepo.sh" |
33204
ddd65b4f3ae6
tests: alias syshg and syshgenv so they can be switched conditionally
Yuya Nishihara <yuya@tcha.org>
parents:
33116
diff
changeset
|
4 $ testrepohgenv |
29219
3c9066ed557c
tests: silence test-repo obsolete warning
timeless <timeless@mozdev.org>
parents:
26148
diff
changeset
|
5 |
26148
7f49efcaa9b4
debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents:
26147
diff
changeset
|
6 Ensure debuild doesn't run the testsuite, as that could get silly. |
7f49efcaa9b4
debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents:
26147
diff
changeset
|
7 $ DEB_BUILD_OPTIONS=nocheck |
7f49efcaa9b4
debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents:
26147
diff
changeset
|
8 $ export DEB_BUILD_OPTIONS |
26147
a02c22e48142
test-debian-packages: new test for testing construction of debian packages
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
9 $ OUTPUTDIR=`pwd` |
a02c22e48142
test-debian-packages: new test for testing construction of debian packages
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
10 $ export OUTPUTDIR |
a02c22e48142
test-debian-packages: new test for testing construction of debian packages
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
11 |
a02c22e48142
test-debian-packages: new test for testing construction of debian packages
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
12 $ cd "$TESTDIR"/.. |
a02c22e48142
test-debian-packages: new test for testing construction of debian packages
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
13 $ make deb > $OUTPUTDIR/build.log 2>&1 |
a02c22e48142
test-debian-packages: new test for testing construction of debian packages
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
14 $ cd $OUTPUTDIR |
34400
3d936da4f97b
tests: expect parsers.so in cext, parsers.py in pure (test-debian-packages)
Kyle Lippincott <spectral@google.com>
parents:
33204
diff
changeset
|
15 $ ls *.deb | grep -v 'dbg' |
26148
7f49efcaa9b4
debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents:
26147
diff
changeset
|
16 mercurial-common_*.deb (glob) |
7f49efcaa9b4
debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents:
26147
diff
changeset
|
17 mercurial_*.deb (glob) |
7f49efcaa9b4
debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents:
26147
diff
changeset
|
18 main deb should have .so but no .py |
7f49efcaa9b4
debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents:
26147
diff
changeset
|
19 $ dpkg --contents mercurial_*.deb | egrep '(localrepo|parsers)' |
34400
3d936da4f97b
tests: expect parsers.so in cext, parsers.py in pure (test-debian-packages)
Kyle Lippincott <spectral@google.com>
parents:
33204
diff
changeset
|
20 * ./usr/lib/python2.7/dist-packages/mercurial/cext/parsers*.so (glob) |
26148
7f49efcaa9b4
debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents:
26147
diff
changeset
|
21 mercurial-common should have py but no .so or pyc |
34400
3d936da4f97b
tests: expect parsers.so in cext, parsers.py in pure (test-debian-packages)
Kyle Lippincott <spectral@google.com>
parents:
33204
diff
changeset
|
22 $ dpkg --contents mercurial-common_*.deb | egrep '(localrepo|parsers.*so)' |
26148
7f49efcaa9b4
debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents:
26147
diff
changeset
|
23 * ./usr/lib/python2.7/dist-packages/mercurial/localrepo.py (glob) |
34405
9ecc622ca23f
deb: install zsh completions to /usr/share/zsh/vendor-completions
Kyle Lippincott <spectral@google.com>
parents:
34401
diff
changeset
|
24 zsh completions should be in the common package |
9ecc622ca23f
deb: install zsh completions to /usr/share/zsh/vendor-completions
Kyle Lippincott <spectral@google.com>
parents:
34401
diff
changeset
|
25 $ dpkg --contents mercurial-common_*.deb | egrep 'zsh.*[^/]$' |
9ecc622ca23f
deb: install zsh completions to /usr/share/zsh/vendor-completions
Kyle Lippincott <spectral@google.com>
parents:
34401
diff
changeset
|
26 * ./usr/share/zsh/vendor-completions/_hg (glob) |
34406
0133ca39c688
deb: build and install chg
Kyle Lippincott <spectral@google.com>
parents:
34405
diff
changeset
|
27 chg should be installed alongside hg, in the 'mercurial' package |
0133ca39c688
deb: build and install chg
Kyle Lippincott <spectral@google.com>
parents:
34405
diff
changeset
|
28 $ dpkg --contents mercurial_*.deb | egrep 'chg$' |
0133ca39c688
deb: build and install chg
Kyle Lippincott <spectral@google.com>
parents:
34405
diff
changeset
|
29 * ./usr/bin/chg (glob) |
0133ca39c688
deb: build and install chg
Kyle Lippincott <spectral@google.com>
parents:
34405
diff
changeset
|
30 chg should come with a man page |
0133ca39c688
deb: build and install chg
Kyle Lippincott <spectral@google.com>
parents:
34405
diff
changeset
|
31 $ dpkg --contents mercurial_*.deb | egrep 'man.*chg' |
0133ca39c688
deb: build and install chg
Kyle Lippincott <spectral@google.com>
parents:
34405
diff
changeset
|
32 * ./usr/share/man/man1/chg.1.gz (glob) |