mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 16:57:49 +03:00
2568974470
On Windows platform, invoking printenv.py directly via hook is problematic, because: - unless binding between *.py suffix and python runtime, application selector dialog is displayed, and running test is blocked at each printenv.py invocations - it isn't safe to assume binding between *.py suffix and python runtime, because application binding is easily broken For example, installing IDE (VisualStudio with Python Tools, or so) often requires binding between source files and IDE itself. This patch invokes printenv.py via sh -c for test portability. This is a kind of follow up for 9e4331825bea, which eliminated explicit "python" for printenv.py. There are already other 'sh -c "printenv.py"' in *.t files, and this fix should be reasonable. This changes were confirmed in cases below: - without any application binding for *.py suffix - with binding between *.py suffix and VisualStudio This patch also replaces "echo + redirection" style with "heredoc" style, because: - hook command line is parsed by cmd.exe as shell at first, and - single quotation can't quote arguments on cmd.exe, therefore, - "printenv.py foobar" should be quoted by double quotation, but - nested quoting (or tricky escaping) isn't readable
160 lines
4.1 KiB
Perl
160 lines
4.1 KiB
Perl
#require killdaemons
|
|
|
|
$ hg clone http://localhost:$HGPORT/ copy
|
|
abort: * (glob)
|
|
[255]
|
|
$ test -d copy
|
|
[1]
|
|
|
|
This server doesn't do range requests so it's basically only good for
|
|
one pull
|
|
|
|
$ python "$TESTDIR/dumbhttp.py" -p $HGPORT --pid dumb.pid
|
|
$ cat dumb.pid >> $DAEMON_PIDS
|
|
$ hg init remote
|
|
$ cd remote
|
|
$ echo foo > bar
|
|
$ echo c2 > '.dotfile with spaces'
|
|
$ hg add
|
|
adding .dotfile with spaces
|
|
adding bar
|
|
$ hg commit -m"test"
|
|
$ hg tip
|
|
changeset: 0:02770d679fb8
|
|
tag: tip
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: test
|
|
|
|
$ cd ..
|
|
$ hg clone static-http://localhost:$HGPORT/remote local
|
|
requesting all changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 2 changes to 2 files
|
|
updating to branch default
|
|
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ cd local
|
|
$ hg verify
|
|
checking changesets
|
|
checking manifests
|
|
crosschecking files in changesets and manifests
|
|
checking files
|
|
2 files, 1 changesets, 2 total revisions
|
|
$ cat bar
|
|
foo
|
|
$ cd ../remote
|
|
$ echo baz > quux
|
|
$ hg commit -A -mtest2
|
|
adding quux
|
|
|
|
check for HTTP opener failures when cachefile does not exist
|
|
|
|
$ rm .hg/cache/*
|
|
$ cd ../local
|
|
$ cat >> .hg/hgrc <<EOF
|
|
> [hooks]
|
|
> changegroup = sh -c "printenv.py changegroup"
|
|
> EOF
|
|
$ hg pull
|
|
pulling from static-http://localhost:$HGPORT/remote
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 1 changes to 1 files
|
|
changegroup hook: HG_NODE=4ac2e3648604439c580c69b09ec9d93a88d93432 HG_NODE_LAST=4ac2e3648604439c580c69b09ec9d93a88d93432 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=http://localhost:$HGPORT/remote (glob)
|
|
(run 'hg update' to get a working copy)
|
|
|
|
trying to push
|
|
|
|
$ hg update
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ echo more foo >> bar
|
|
$ hg commit -m"test"
|
|
$ hg push
|
|
pushing to static-http://localhost:$HGPORT/remote
|
|
abort: destination does not support push
|
|
[255]
|
|
|
|
trying clone -r
|
|
|
|
$ cd ..
|
|
$ hg clone -r doesnotexist static-http://localhost:$HGPORT/remote local0
|
|
abort: unknown revision 'doesnotexist'!
|
|
[255]
|
|
$ hg clone -r 0 static-http://localhost:$HGPORT/remote local0
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 2 changes to 2 files
|
|
updating to branch default
|
|
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
test with "/" URI (issue747) and subrepo
|
|
|
|
$ hg init
|
|
$ hg init sub
|
|
$ touch sub/test
|
|
$ hg -R sub commit -A -m "test"
|
|
adding test
|
|
$ hg -R sub tag not-empty
|
|
$ echo sub=sub > .hgsub
|
|
$ echo a > a
|
|
$ hg add a .hgsub
|
|
$ hg -q ci -ma
|
|
$ hg clone static-http://localhost:$HGPORT/ local2
|
|
requesting all changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 3 changes to 3 files
|
|
updating to branch default
|
|
cloning subrepo sub from static-http://localhost:$HGPORT/sub
|
|
requesting all changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 2 changesets with 2 changes to 2 files
|
|
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ cd local2
|
|
$ hg verify
|
|
checking changesets
|
|
checking manifests
|
|
crosschecking files in changesets and manifests
|
|
checking files
|
|
3 files, 1 changesets, 3 total revisions
|
|
checking subrepo links
|
|
$ cat a
|
|
a
|
|
$ hg paths
|
|
default = static-http://localhost:$HGPORT/
|
|
|
|
test with empty repo (issue965)
|
|
|
|
$ cd ..
|
|
$ hg init remotempty
|
|
$ hg clone static-http://localhost:$HGPORT/remotempty local3
|
|
no changes found
|
|
updating to branch default
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ cd local3
|
|
$ hg verify
|
|
checking changesets
|
|
checking manifests
|
|
crosschecking files in changesets and manifests
|
|
checking files
|
|
0 files, 0 changesets, 0 total revisions
|
|
$ hg paths
|
|
default = static-http://localhost:$HGPORT/remotempty
|
|
|
|
test with non-repo
|
|
|
|
$ cd ..
|
|
$ mkdir notarepo
|
|
$ hg clone static-http://localhost:$HGPORT/notarepo local3
|
|
abort: 'http://localhost:$HGPORT/notarepo' does not appear to be an hg repository!
|
|
[255]
|
|
$ killdaemons.py
|