view tests/test-record @ 8590:59acb9c7d90f

url: use CONNECT for HTTPS connections through HTTP proxy (issue967) urllib2 and httplib does not support using CONNECT proxy requests, but only regular requests over the proxy. This does not work with HTTPS requests as they typically require that the client issues a CONNECT to the proxy to give a direct connection to the remote HTTPS server. This is solved by duplicating some of the httplib functionality and tying it together with the keepalive library such that a HTTPS connection that need to be proxied can be proxied by letting a connection be established to the proxy server and then subsequently performing the normal request to the specified server through the proxy server. As it stands, the code also purports to support HTTPS proxies, i.e. proxies that you connect to using SSL. These are extremely rare and nothing is done to ensure that CONNECT requests can be made to these as that would require multiple SSL handshakes. This use case is also not supported by most other contemporary web tools like curl and Firefox3.
author Henrik Stuart <hg@hstuart.dk>
date Fri, 22 May 2009 08:56:43 +0200
parents 6fa7b6fb90a9
children 8b35b08724eb
line wrap: on
line source

#!/bin/sh

echo "[ui]" >> $HGRCPATH
echo "interactive=true" >> $HGRCPATH
echo "[extensions]" >> $HGRCPATH
echo "record=" >> $HGRCPATH

echo % help

hg help record

hg init a
cd a

echo % select no files

touch empty-rw
hg add empty-rw
hg record empty-rw<<EOF
n
EOF
echo; hg tip -p

echo % select files but no hunks

hg record empty-rw<<EOF
y
n
EOF
echo; hg tip -p

echo % record empty file

hg record -d '0 0' -m empty empty-rw<<EOF
y
y
EOF
echo; hg tip -p

echo % rename empty file

hg mv empty-rw empty-rename
hg record -d '1 0' -m rename<<EOF
y
EOF
echo; hg tip -p

echo % copy empty file

hg cp empty-rename empty-copy
hg record -d '2 0' -m copy<<EOF
y
EOF
echo; hg tip -p

echo % delete empty file

hg rm empty-copy
hg record -d '3 0' -m delete<<EOF
y
EOF
echo; hg tip -p

echo % add binary file

hg bundle --base -2 tip.bundle
hg add tip.bundle
hg record -d '4 0' -m binary<<EOF
y
EOF
echo; hg tip -p

echo % change binary file

hg bundle --base -2 tip.bundle
hg record -d '5 0' -m binary-change<<EOF
y
EOF
echo; hg tip -p

echo % rename and change binary file

hg mv tip.bundle top.bundle
hg bundle --base -2 top.bundle
hg record -d '6 0' -m binary-change-rename<<EOF
y
EOF
echo; hg tip -p

echo % add plain file

for i in 1 2 3 4 5 6 7 8 9 10; do
    echo $i >> plain
done

hg add plain
hg record -d '7 0' -m plain plain<<EOF
y
y
EOF
echo; hg tip -p

echo % modify end of plain file

echo 11 >> plain
hg record -d '8 0' -m end plain <<EOF
y
y
EOF

echo % modify end of plain file, no EOL

hg tip --template '{node}' >> plain
hg record -d '9 0' -m noeol plain <<EOF
y
y
EOF

echo % modify end of plain file, add EOL

echo >> plain
hg record -d '10 0' -m eol plain <<EOF
y
y
y
EOF

echo % modify beginning, trim end, record both

rm plain
for i in 2 2 3 4 5 6 7 8 9 10; do
  echo $i >> plain
done

hg record -d '10 0' -m begin-and-end plain <<EOF
y
y
y
EOF
echo; hg tip -p

echo % trim beginning, modify end

rm plain
for i in 4 5 6 7 8 9 10.new; do
  echo $i >> plain
done

echo % record end

hg record -d '11 0' -m end-only plain <<EOF
y
n
y
EOF
echo; hg tip -p

echo % record beginning

hg record -d '12 0' -m begin-only plain <<EOF
y
y
EOF
echo; hg tip -p

echo % add to beginning, trim from end

rm plain
for i in 1 2 3 4 5 6 7 8 9; do
  echo $i >> plain
done

echo % record end

hg record --traceback -d '13 0' -m end-again plain<<EOF
y
n
y
EOF

echo % add to beginning, middle, end

rm plain
for i in 1 2 3 4 5 5.new 5.reallynew 6 7 8 9 10 11; do
  echo $i >> plain
done

echo % record beginning, middle

hg record -d '14 0' -m middle-only plain <<EOF
y
y
y
n
EOF
echo; hg tip -p

echo % record end

hg record -d '15 0' -m end-only plain <<EOF
y
y
EOF
echo; hg tip -p

mkdir subdir
cd subdir
echo a > a
hg ci -d '16 0' -Amsubdir

echo a >> a
hg record -d '16 0' -m subdir-change a <<EOF
y
y
EOF
echo; hg tip -p

echo a > f1
echo b > f2
hg add f1 f2

hg ci -mz -d '17 0'

echo a >> f1
echo b >> f2

echo % help, quit

hg record <<EOF
?
q
EOF

echo % skip

hg record <<EOF
s
EOF

echo % no

hg record <<EOF
n
EOF

echo % f, quit

hg record <<EOF
f
q
EOF

echo % s, all

hg record -d '18 0' -mx <<EOF
s
a
EOF
echo; hg tip -p

echo % f

hg record -d '19 0' -my <<EOF
f
EOF
echo; hg tip -p

echo % preserve chmod +x

chmod +x f1
echo a >> f1
hg record -d '20 0' -mz <<EOF
y
y
y
EOF
echo; hg tip --config diff.git=True -p

echo % preserve execute permission on original

echo b >> f1
hg record -d '21 0' -maa <<EOF
y
y
y
EOF
echo; hg tip --config diff.git=True -p

echo % preserve chmod -x

chmod -x f1
echo c >> f1
hg record -d '22 0' -mab <<EOF
y
y
y
EOF
echo; hg tip --config diff.git=True -p