annotate tests/test-check-code.t @ 41926:4371f543efda

wix: functionality to automate building WiX installers Like we did for Inno Setup, we want to make it easier to produce WiX installers. This commit does that. We introduce a new hgpackaging.wix module for performing all the high-level tasks required to produce WiX installers. This required miscellaneous enhancements to existing code in hgpackaging, including support for signing binaries. A new build.py script for calling into the module APIs has been created. It behaves very similarly to the Inno Setup build.py script. Unlike Inno Setup, we didn't have code in the repo previously to generate WiX installers. It appears that all existing automation for building WiX installers lives in the https://bitbucket.org/tortoisehg/thg-winbuild repository - most notably in its setup.py file. My strategy for inventing the code in this commit was to step through the code in that repo's setup.py and observe what it was doing. Despite the length of setup.py in that repository, the actual amount of steps required to produce a WiX installer is actually quite low. It consists of a basic py2exe build plus invocations of candle.exe and light.exe to produce the MSI. One rabbit hole that gave me fits was locating the Visual Studio 9 C Runtime merge modules. These merge modules are only present on your system if you have a full Visual Studio 2008 installation. Fortunately, I have a copy of Visual Studio 2008 and was able to install all the required updates. I then uploaded these merge modules to a personal repository on GitHub. That is where the added code references them from. We probably don't need to ship the merge modules. But that is for another day. The installs from the MSIs produced with the new automation differ from the last official MSI in the following ways: * Our HTML manual pages have UNIX line endings instead of Windows. * We ship modules in the mercurial.pure package. It appears the upstream packaging code is not including this package due to omission (they supply an explicit list of packages that has drifted out of sync with our setup.py). * We do not ship various distutils.* modules. This is because virtualenvs have a custom distutils/__init__.py that automagically imports distutils from its original location and py2exe gets confused by this. We don't use distutils in core Mercurial and don't provide a usable python.exe, so this omission should be acceptable. * The version of the enum package is different and we ship an enum.pyc instead of an enum/__init__.py. * The version of the docutils package is different and we ship a different set of files. * The version of Sphinx is drastically newer and we ship a number of files the old version did not. (I'm not sure why we ship Sphinx - I think it is a side-effect of the way the THG code was installing dependencies.) * We ship the idna package (dependent of requests which is a dependency of newer versions of Sphinx). * The version of imagesize is different and we ship an imagesize.pyc instead of an imagesize/__init__.pyc. * The version of the jinja2 package is different and the sets of files differs. * We ship the packaging package, which is a dependency for Sphinx. * The version of the pygments package is different and the sets of files differs. * We ship the requests package, which is a dependency for Sphinx. * We ship the snowballstemmer package, which is a dependency for Sphinx. * We ship the urllib3 package, which is a dependency for requests, which is a dependency for Sphinx. * We ship a newer version of the futures package, which includes a handful of extra modules that match Python 3 module names. # no-check-commit because foo_bar naming Differential Revision: https://phab.mercurial-scm.org/D6097
author Gregory Szorc <gregory.szorc@gmail.com>
date Fri, 08 Mar 2019 10:48:22 -0800
parents a2e191a937a9
children b05a3e28cf24
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27368
409a20314c64 tests: move the '-hg' postfix for all style tests
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
1 #require test-repo
409a20314c64 tests: move the '-hg' postfix for all style tests
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
2
29219
3c9066ed557c tests: silence test-repo obsolete warning
timeless <timeless@mozdev.org>
parents: 28529
diff changeset
3 $ . "$TESTDIR/helpers-testrepo.sh"
27368
409a20314c64 tests: move the '-hg' postfix for all style tests
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
4 $ check_code="$TESTDIR"/../contrib/check-code.py
409a20314c64 tests: move the '-hg' postfix for all style tests
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
5 $ cd "$TESTDIR"/..
409a20314c64 tests: move the '-hg' postfix for all style tests
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
6
409a20314c64 tests: move the '-hg' postfix for all style tests
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
7 New errors are not allowed. Warnings are strongly discouraged.
409a20314c64 tests: move the '-hg' postfix for all style tests
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
8 (The writing "no-che?k-code" is for not skipping this file when checking.)
409a20314c64 tests: move the '-hg' postfix for all style tests
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
9
34396
41401f502c83 tests: disable lints on mercurial/thirdparty
Siddharth Agarwal <sid0@fb.com>
parents: 33583
diff changeset
10 $ testrepohg locate \
41401f502c83 tests: disable lints on mercurial/thirdparty
Siddharth Agarwal <sid0@fb.com>
parents: 33583
diff changeset
11 > -X contrib/python-zstandard \
41401f502c83 tests: disable lints on mercurial/thirdparty
Siddharth Agarwal <sid0@fb.com>
parents: 33583
diff changeset
12 > -X hgext/fsmonitor/pywatchman \
41401f502c83 tests: disable lints on mercurial/thirdparty
Siddharth Agarwal <sid0@fb.com>
parents: 33583
diff changeset
13 > -X mercurial/thirdparty \
41401f502c83 tests: disable lints on mercurial/thirdparty
Siddharth Agarwal <sid0@fb.com>
parents: 33583
diff changeset
14 > | sed 's-\\-/-g' | "$check_code" --warnings --per-file=0 - || false
41913
c2237fe1359e packaging: split downloading code into own module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41912
diff changeset
15 Skipping contrib/packaging/hgpackaging/downloads.py it has no-che?k-code (glob)
41916
dc7827a9ba64 packaging: move Inno Setup core logic into a module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41913
diff changeset
16 Skipping contrib/packaging/hgpackaging/inno.py it has no-che?k-code (glob)
41920
a2e191a937a9 packaging: extract py2exe functionality to own module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41916
diff changeset
17 Skipping contrib/packaging/hgpackaging/py2exe.py it has no-che?k-code (glob)
41912
9da97f49d4f4 packaging: establish hgpackaging package
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41858
diff changeset
18 Skipping contrib/packaging/hgpackaging/util.py it has no-che?k-code (glob)
41926
4371f543efda wix: functionality to automate building WiX installers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41920
diff changeset
19 Skipping contrib/packaging/hgpackaging/wix.py it has no-che?k-code (glob)
41858
d7dc4ac1ff84 inno: script to automate building Inno installer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41561
diff changeset
20 Skipping contrib/packaging/inno/build.py it has no-che?k-code (glob)
41926
4371f543efda wix: functionality to automate building WiX installers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41920
diff changeset
21 Skipping contrib/packaging/wix/build.py it has no-che?k-code (glob)
27368
409a20314c64 tests: move the '-hg' postfix for all style tests
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
22 Skipping i18n/polib.py it has no-che?k-code (glob)
30267
b032a7b676c6 statprof: vendor statprof.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 29442
diff changeset
23 Skipping mercurial/statprof.py it has no-che?k-code (glob)
32001
c85f19c66e8d tests: add tests for poorly behaving HTTP server
Gregory Szorc <gregory.szorc@gmail.com>
parents: 31990
diff changeset
24 Skipping tests/badserverext.py it has no-che?k-code (glob)
30549
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30444
diff changeset
25
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30444
diff changeset
26 @commands in debugcommands.py should be in alphabetical order.
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30444
diff changeset
27
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30444
diff changeset
28 >>> import re
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30444
diff changeset
29 >>> commands = []
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30444
diff changeset
30 >>> with open('mercurial/debugcommands.py', 'rb') as fh:
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30444
diff changeset
31 ... for line in fh:
41561
f16c03c7a3d7 tests: use raw string in test-check-code.t
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40163
diff changeset
32 ... m = re.match(br"^@command\('([a-z]+)", line)
30549
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30444
diff changeset
33 ... if m:
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30444
diff changeset
34 ... commands.append(m.group(1))
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30444
diff changeset
35 >>> scommands = list(sorted(commands))
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30444
diff changeset
36 >>> for i, command in enumerate(scommands):
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30444
diff changeset
37 ... if command != commands[i]:
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30444
diff changeset
38 ... print('commands in debugcommands.py not sorted; first differing '
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30444
diff changeset
39 ... 'command is %s; expected %s' % (commands[i], command))
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30444
diff changeset
40 ... break
31731
bdb72dd3957e test-check-code: prevent files being added to the root directory
Jun Wu <quark@fb.com>
parents: 31729
diff changeset
41
bdb72dd3957e test-check-code: prevent files being added to the root directory
Jun Wu <quark@fb.com>
parents: 31729
diff changeset
42 Prevent adding new files in the root directory accidentally.
bdb72dd3957e test-check-code: prevent files being added to the root directory
Jun Wu <quark@fb.com>
parents: 31729
diff changeset
43
33204
ddd65b4f3ae6 tests: alias syshg and syshgenv so they can be switched conditionally
Yuya Nishihara <yuya@tcha.org>
parents: 33128
diff changeset
44 $ testrepohg files 'glob:*'
33583
b2c27d84f05c phabricator: include the suggested arc config in the repo
Alex Gaynor <agaynor@mozilla.com>
parents: 33502
diff changeset
45 .arcconfig
34798
e33381d95930 clang-format: configuration for the clang-format source formatter
Augie Fackler <raf@durin42.com>
parents: 34579
diff changeset
46 .clang-format
31731
bdb72dd3957e test-check-code: prevent files being added to the root directory
Jun Wu <quark@fb.com>
parents: 31729
diff changeset
47 .editorconfig
bdb72dd3957e test-check-code: prevent files being added to the root directory
Jun Wu <quark@fb.com>
parents: 31729
diff changeset
48 .hgignore
bdb72dd3957e test-check-code: prevent files being added to the root directory
Jun Wu <quark@fb.com>
parents: 31729
diff changeset
49 .hgsigs
bdb72dd3957e test-check-code: prevent files being added to the root directory
Jun Wu <quark@fb.com>
parents: 31729
diff changeset
50 .hgtags
35183
bdd2e18b54c5 hgweb: add .jshintrc with some basic rules
Anton Shestakov <av6@dwimlabs.net>
parents: 34798
diff changeset
51 .jshintrc
31731
bdb72dd3957e test-check-code: prevent files being added to the root directory
Jun Wu <quark@fb.com>
parents: 31729
diff changeset
52 CONTRIBUTING
bdb72dd3957e test-check-code: prevent files being added to the root directory
Jun Wu <quark@fb.com>
parents: 31729
diff changeset
53 CONTRIBUTORS
bdb72dd3957e test-check-code: prevent files being added to the root directory
Jun Wu <quark@fb.com>
parents: 31729
diff changeset
54 COPYING
bdb72dd3957e test-check-code: prevent files being added to the root directory
Jun Wu <quark@fb.com>
parents: 31729
diff changeset
55 Makefile
34579
1b59287a1cfa doc: rename README to README.rst
David Demelier <markand@malikania.fr>
parents: 34396
diff changeset
56 README.rst
31731
bdb72dd3957e test-check-code: prevent files being added to the root directory
Jun Wu <quark@fb.com>
parents: 31729
diff changeset
57 hg
bdb72dd3957e test-check-code: prevent files being added to the root directory
Jun Wu <quark@fb.com>
parents: 31729
diff changeset
58 hgeditor
bdb72dd3957e test-check-code: prevent files being added to the root directory
Jun Wu <quark@fb.com>
parents: 31729
diff changeset
59 hgweb.cgi
bdb72dd3957e test-check-code: prevent files being added to the root directory
Jun Wu <quark@fb.com>
parents: 31729
diff changeset
60 setup.py
37804
1ec874717d8a test-check-code: prevent from adding Python modules shadowed by ancient C
Yuya Nishihara <yuya@tcha.org>
parents: 36456
diff changeset
61
1ec874717d8a test-check-code: prevent from adding Python modules shadowed by ancient C
Yuya Nishihara <yuya@tcha.org>
parents: 36456
diff changeset
62 Prevent adding modules which could be shadowed by ancient .so/.dylib.
1ec874717d8a test-check-code: prevent from adding Python modules shadowed by ancient C
Yuya Nishihara <yuya@tcha.org>
parents: 36456
diff changeset
63
1ec874717d8a test-check-code: prevent from adding Python modules shadowed by ancient C
Yuya Nishihara <yuya@tcha.org>
parents: 36456
diff changeset
64 $ testrepohg files \
1ec874717d8a test-check-code: prevent from adding Python modules shadowed by ancient C
Yuya Nishihara <yuya@tcha.org>
parents: 36456
diff changeset
65 > mercurial/base85.py \
1ec874717d8a test-check-code: prevent from adding Python modules shadowed by ancient C
Yuya Nishihara <yuya@tcha.org>
parents: 36456
diff changeset
66 > mercurial/bdiff.py \
1ec874717d8a test-check-code: prevent from adding Python modules shadowed by ancient C
Yuya Nishihara <yuya@tcha.org>
parents: 36456
diff changeset
67 > mercurial/diffhelpers.py \
1ec874717d8a test-check-code: prevent from adding Python modules shadowed by ancient C
Yuya Nishihara <yuya@tcha.org>
parents: 36456
diff changeset
68 > mercurial/mpatch.py \
1ec874717d8a test-check-code: prevent from adding Python modules shadowed by ancient C
Yuya Nishihara <yuya@tcha.org>
parents: 36456
diff changeset
69 > mercurial/osutil.py \
1ec874717d8a test-check-code: prevent from adding Python modules shadowed by ancient C
Yuya Nishihara <yuya@tcha.org>
parents: 36456
diff changeset
70 > mercurial/parsers.py \
1ec874717d8a test-check-code: prevent from adding Python modules shadowed by ancient C
Yuya Nishihara <yuya@tcha.org>
parents: 36456
diff changeset
71 > mercurial/zstd.py
1ec874717d8a test-check-code: prevent from adding Python modules shadowed by ancient C
Yuya Nishihara <yuya@tcha.org>
parents: 36456
diff changeset
72 [1]
40163
9f0ee4a60d65 tests: ensure the python 3 passing test list stays sorted
Augie Fackler <augie@google.com>
parents: 39094
diff changeset
73
9f0ee4a60d65 tests: ensure the python 3 passing test list stays sorted
Augie Fackler <augie@google.com>
parents: 39094
diff changeset
74 Keep python3 tests sorted:
9f0ee4a60d65 tests: ensure the python 3 passing test list stays sorted
Augie Fackler <augie@google.com>
parents: 39094
diff changeset
75 $ sort < contrib/python3-whitelist > $TESTTMP/py3sorted
9f0ee4a60d65 tests: ensure the python 3 passing test list stays sorted
Augie Fackler <augie@google.com>
parents: 39094
diff changeset
76 $ cmp contrib/python3-whitelist $TESTTMP/py3sorted || echo 'Please sort passing tests!'