py3: allow run-tests.py to run on Windows
This is now functional:
HGMODULEPOLICY=py py -3 run-tests.py --local test-help.t --pure --view bcompare
However, on this machine without a C compiler, it tries to load cext anyway, and
blows up. I haven't looked into why, other than to see that it does set the
environment variable. When the test exits though, I see it can't find
killdaemons.py, get-with-headers.py, etc.
I have no idea why these changes are needed, given that it runs on Linux. But
os.system() is insisting that it take a str, and subprocess.Popen() blows up
without str:
Errored test-help.t: Traceback (most recent call last):
File "run-tests.py", line 810, in run
self.runTest()
File "run-tests.py", line 858, in runTest
ret, out = self._run(env)
File "run-tests.py", line 1268, in _run
exitcode, output = self._runcommand(cmd, env)
File "run-tests.py", line 1141, in _runcommand
env=env)
File "C:\Program Files\Python37\lib\subprocess.py", line 756, in __init__
restore_signals, start_new_session)
File "C:\Program Files\Python37\lib\subprocess.py", line 1100, in _execute_child
args = list2cmdline(args)
File "C:\Program Files\Python37\lib\subprocess.py", line 511, in list2cmdline
needquote = (" " in arg) or ("\t" in arg) or not arg
TypeError: argument of type 'int' is not iterable
This is exactly how it crashes when trying to spin up a pager too. I left one
instance of os.system() unchanged in _installhg(), because it doesn't get there.
#require baz symlink
$ baz my-id "mercurial <mercurial@mercurial-scm.org>"
$ echo "[extensions]" >> $HGRCPATH
$ echo "convert=" >> $HGRCPATH
create baz archive
$ baz make-archive baz@mercurial--convert hg-test-convert-baz
initialize baz repo
$ mkdir baz-repo
$ cd baz-repo/
$ baz init-tree baz@mercurial--convert/baz--test--0
$ baz import
* creating version baz@mercurial--convert/baz--test--0
* imported baz@mercurial--convert/baz--test--0
create initial files
$ echo 'this is a file' > a
$ baz add a
$ mkdir src
$ baz add src
$ cd src
$ dd count=1 if=/dev/zero of=b > /dev/null 2> /dev/null
$ baz add b
HACK: hide GNU tar-1.22 "tar: The --preserve option is deprecated, use --preserve-permissions --preserve-order instead"
$ baz commit -s "added a file, src and src/b (binary)" 2>&1 | grep -v '^tar'
* build pristine tree for baz@mercurial--convert/baz--test--0--base-0
* Scanning for full-tree revision: .
* from import revision: baz@mercurial--convert/baz--test--0--base-0
A/ .arch-ids
A/ src
A/ src/.arch-ids
A .arch-ids/a.id
A a
A src/.arch-ids/=id
A src/.arch-ids/b.id
A src/b
* update pristine tree (baz@mercurial--convert/baz--test--0--base-0 => baz--test--0--patch-1)
* committed baz@mercurial--convert/baz--test--0--patch-1
create link file and modify a
$ ln -s ../a a-link
$ baz add a-link
$ echo 'this a modification to a' >> ../a
$ baz commit -s "added link to a and modify a"
A src/.arch-ids/a-link.id
A src/a-link
M a
* update pristine tree (baz@mercurial--convert/baz--test--0--patch-1 => baz--test--0--patch-2)
* committed baz@mercurial--convert/baz--test--0--patch-2
create second link and modify b
$ ln -s ../a a-link-2
$ baz add a-link-2
$ dd count=1 seek=1 if=/dev/zero of=b > /dev/null 2> /dev/null
$ baz commit -s "added second link and modify b"
A src/.arch-ids/a-link-2.id
A src/a-link-2
Mb src/b
* update pristine tree (baz@mercurial--convert/baz--test--0--patch-2 => baz--test--0--patch-3)
* committed baz@mercurial--convert/baz--test--0--patch-3
b file to link and a-link-2 to regular file
$ rm -f a-link-2
$ echo 'this is now a regular file' > a-link-2
$ ln -sf ../a b
$ baz commit -s "file to link and link to file test"
fl src/b
lf src/a-link-2
* update pristine tree (baz@mercurial--convert/baz--test--0--patch-3 => baz--test--0--patch-4)
* committed baz@mercurial--convert/baz--test--0--patch-4
move a-link-2 file and src directory
$ cd ..
$ baz mv src/a-link-2 c
$ baz mv src test
$ baz commit -s "move and rename a-link-2 file and src directory"
D/ src/.arch-ids
A/ test/.arch-ids
/> src test
=> src/.arch-ids/a-link-2.id .arch-ids/c.id
=> src/a-link-2 c
=> src/.arch-ids/=id test/.arch-ids/=id
=> src/.arch-ids/a-link.id test/.arch-ids/a-link.id
=> src/.arch-ids/b.id test/.arch-ids/b.id
* update pristine tree (baz@mercurial--convert/baz--test--0--patch-4 => baz--test--0--patch-5)
* committed baz@mercurial--convert/baz--test--0--patch-5
move and add the moved file again
$ echo e > e
$ baz add e
$ baz commit -s "add e"
A .arch-ids/e.id
A e
* update pristine tree (baz@mercurial--convert/baz--test--0--patch-5 => baz--test--0--patch-6)
* committed baz@mercurial--convert/baz--test--0--patch-6
$ baz mv e f
$ echo ee > e
$ baz add e
$ baz commit -s "move e and recreate it again"
A .arch-ids/e.id
A e
=> .arch-ids/e.id .arch-ids/f.id
=> e f
* update pristine tree (baz@mercurial--convert/baz--test--0--patch-6 => baz--test--0--patch-7)
* committed baz@mercurial--convert/baz--test--0--patch-7
$ cd ..
converting baz repo to Mercurial
$ hg convert baz-repo baz-repo-hg
initializing destination baz-repo-hg repository
analyzing tree version baz@mercurial--convert/baz--test--0...
scanning source...
sorting...
converting...
7 initial import
6 added a file, src and src/b (binary)
5 added link to a and modify a
4 added second link and modify b
3 file to link and link to file test
2 move and rename a-link-2 file and src directory
1 add e
0 move e and recreate it again
$ baz register-archive -d baz@mercurial--convert
$ glog()
> {
> hg log -G --template '{rev} "{desc|firstline}" files: {files}\n' "$@"
> }
show graph log
$ glog -R baz-repo-hg
o 7 "move e and recreate it again" files: e f
|
o 6 "add e" files: e
|
o 5 "move and rename a-link-2 file and src directory" files: c src/a-link src/a-link-2 src/b test/a-link test/b
|
o 4 "file to link and link to file test" files: src/a-link-2 src/b
|
o 3 "added second link and modify b" files: src/a-link-2 src/b
|
o 2 "added link to a and modify a" files: a src/a-link
|
o 1 "added a file, src and src/b (binary)" files: a src/b
|
o 0 "initial import" files:
$ hg up -q -R baz-repo-hg
$ hg -R baz-repo-hg manifest --debug
c4072c4b72e1cabace081888efa148ee80ca3cbb 644 a
0201ac32a3a8e86e303dff60366382a54b48a72e 644 c
1a4a864db0073705a11b1439f563bfa4b46d9246 644 e
09e0222742fc3f75777fa9d68a5d8af7294cb5e7 644 f
c0067ba5ff0b7c9a3eb17270839d04614c435623 644 @ test/a-link
375f4263d86feacdea7e3c27100abd1560f2a973 644 @ test/b
$ hg -R baz-repo-hg log -r 5 -r 7 -C --debug | grep copies
copies: c (src/a-link-2) test/a-link (src/a-link) test/b (src/b)
copies: f (e)