mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 00:45:18 +03:00
4a7b28d08b
Summary: Previously `hg server` uses `HGPORT` that might be in use. This patch uses `-p 0 --port-file ...` so `hg server` always gets assigned a free port. The change was first made by the following Ruby script: ``` re = /^ \$ hg serve(.*) -p \$(HGPORT[12]?) (.*[^\\])$\n \$/ Dir['*.t'].each do |path| old = File.read(path) new = old.lines.map do |l| next l if l[/\(glob\)/] or not l['$HGPORT'] or l[/^ [$>]/] "#{l.chomp} (glob)\n" end.join.gsub re, <<-'EOS'.chomp $ hg serve\1 -p 0 --port-file $TESTTMP/.port \3 $ \2=`cat $TESTTMP/.port` $ EOS File.write(path, new) if old != new end ``` Then there are some manual changes: run-tests.py: It now treats `$HGPORT` in output as glob pattern `*`, since it does not know the assigned value in tests. test-bookmarks-pushpull.t, test-https.t: Some `hg pull`s were changed to use explicit paths instead of relying on `.hgrc` since the test restarts the server and `.hg/hgrc` having an outdated URL. test-schemes.t: The test writes `$HGPORT` to `.hgrc` before assigning it. Changed the order so the correct `$HGPORT` is written. test-patchbomb-tls.t: Changed `(?) (glob)` to `(glob) (?)`. Reviewed By: DurhamG Differential Revision: D6925398 fbshipit-source-id: d5c10476f43ce23f9e99618807580cf8ba92595c
47 lines
1.4 KiB
Perl
47 lines
1.4 KiB
Perl
#require killdaemons
|
|
|
|
Test wire protocol unbundle with hashed heads (capability: unbundlehash)
|
|
|
|
$ cat << EOF >> $HGRCPATH
|
|
> [devel]
|
|
> # This tests is intended for bundle1 only.
|
|
> # bundle2 carries the head information inside the bundle itself and
|
|
> # always uses 'force' as the heads value.
|
|
> legacy.exchange = bundle1
|
|
> EOF
|
|
|
|
Create a remote repository.
|
|
|
|
$ hg init remote
|
|
$ hg serve -R remote --config web.push_ssl=False --config web.allow_push=* -p 0 --port-file $TESTTMP/.port -d --pid-file=hg1.pid -E error.log -A access.log
|
|
$ HGPORT=`cat $TESTTMP/.port`
|
|
$ cat hg1.pid >> $DAEMON_PIDS
|
|
|
|
Clone the repository and push a change.
|
|
|
|
$ hg clone http://localhost:$HGPORT/ local
|
|
no changes found
|
|
updating to branch default
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ touch local/README
|
|
$ hg ci -R local -A -m hoge
|
|
adding README
|
|
$ hg push -R local
|
|
pushing to http://localhost:$HGPORT/ (glob)
|
|
searching for changes
|
|
remote: adding changesets
|
|
remote: adding manifests
|
|
remote: adding file changes
|
|
remote: added 1 changesets with 1 changes to 1 files
|
|
|
|
Ensure hashed heads format is used.
|
|
The hash here is always the same since the remote repository only has the null head.
|
|
|
|
$ cat access.log | grep unbundle
|
|
* - - [*] "POST /?cmd=unbundle HTTP/1.1" 200 - x-hgarg-1:heads=686173686564+6768033e216468247bd031a0a2d9876d79818f8f* (glob)
|
|
|
|
Explicitly kill daemons to let the test exit on Windows
|
|
|
|
$ killdaemons.py
|
|
|