Mercurial > hg
diff tests/test-convert-p4-filetypes @ 8829:ce4b92f5cea7
convert: Make P4 conversion cope with keywords, binary files and symbolic links.
Convert now handles errors from p4 during conversion more gracefully.
If keyword expansion is enabled in a P4 file then keywords will be
unexpanded in hg.
Added testcase for p4 filetypes and keyword (un)expansion.
This testcase ignores UTF and Apple files to avoid binary data.
Edited by pmezard: fixed collation issue on OSX
author | Frank Kingswood <frank@kingswood-consulting.co.uk> |
---|---|
date | Thu, 18 Jun 2009 10:39:04 +0100 |
parents | |
children | 95046688f80f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-convert-p4-filetypes Thu Jun 18 10:39:04 2009 +0100 @@ -0,0 +1,104 @@ +#!/bin/sh + +"$TESTDIR/hghave" p4 execbit symlink || exit 80 + +echo "[extensions]" >> $HGRCPATH +echo "convert = " >> $HGRCPATH + +echo % create p4 depot +export P4ROOT=$PWD/depot +export P4AUDIT=$P4ROOT/audit +export P4JOURNAL=$P4ROOT/journal +export P4LOG=$P4ROOT/log +export P4PORT=localhost:16661 +export P4DEBUG=1 +export P4CHARSET=utf8 + +echo % start the p4 server +[ ! -d $P4ROOT ] && mkdir $P4ROOT +p4d -f -J off -xi >$P4ROOT/stdout 2>$P4ROOT/stderr +p4d -f -J off >$P4ROOT/stdout 2>$P4ROOT/stderr & +trap "echo % stop the p4 server ; p4 admin stop" EXIT + +# wait for the server to initialize +while ! p4 ; do + sleep 1 +done >/dev/null 2>/dev/null + +echo % create a client spec +export P4CLIENT=hg-p4-import +DEPOTPATH=//depot/test-mercurial-import/... +p4 client -o | sed '/^View:/,$ d' >p4client +echo View: >>p4client +echo " $DEPOTPATH //$P4CLIENT/..." >>p4client +p4 client -i <p4client + +echo % populate the depot +TYPES="text binary symlink" +TYPES="$TYPES text+m text+w text+x text+k text+kx text+ko text+l text+C text+D text+F text+S text+S2" +TYPES="$TYPES binary+k binary+x binary+kx symlink+k" +TYPES="$TYPES ctext cxtext ktext kxtext ltext tempobj ubinary uxbinary xbinary xltext xtempobj xtext" +# not testing these +#TYPES="$TYPES apple resource unicode utf16 uresource xunicode xutf16" +for T in $TYPES ; do + T2=`echo $T | tr [:upper:] [:lower:]` + case $T in + apple) + ;; + symlink*) + echo "this is target $T" >target_$T2 + ln -s target_$T file_$T2 + p4 add target_$T2 + p4 add -t $T file_$T2 + ;; + binary*) + python -c "file('file_$T2', 'wb').write('this is $T')" + p4 add -t $T file_$T2 + ;; + *) + echo "this is $T" >file_$T2 + p4 add -t $T file_$T2 + ;; + esac +done +p4 submit -d initial + +echo % test keyword expansion +p4 edit file_* target_* +for T in $TYPES ; do + T2=`echo $T | tr [:upper:] [:lower:]` + echo '$Id$' >>file_$T2 + echo '$Header$' >>file_$T2 + echo '$Date$' >>file_$T2 + echo '$DateTime$' >>file_$T2 + echo '$Change$' >>file_$T2 + echo '$File$' >>file_$T2 + echo '$Revision$' >>file_$T2 + echo '$Header$$Header$Header$' >>file_$T2 +done + +ln -s 'target_$Header$' crazy_symlink+k +p4 add -t symlink+k crazy_symlink+k + +p4 submit -d keywords + +echo % check keywords in p4 +grep -H Header file_* + +echo % convert +hg convert -s p4 $DEPOTPATH dst +hg -R dst log --template 'rev={rev} desc="{desc}" tags="{tags}" files="{files}"\n'g + +echo % revision 0 +hg -R dst update 0 +head dst/file_* | cat -v + +echo +echo % revision 1 +hg -R dst update 1 +head dst/file_* | cat -v +echo +echo % crazy_symlink +readlink crazy_symlink+k +readlink dst/crazy_symlink+k +