# HG changeset patch # User mpm@selenic.com # Date 1118784522 28800 # Node ID 55f63f3b6a54f63431b552785519b03f12c59cd0 # Parent 27d08c0c2a7e5fe1ad956202cdf88617f561ccfe Add a simple testing framework -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Add a simple testing framework manifest hash: 9eeea72f2f33438040998a190183958764232ece -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCr0wKywK+sNU5EO8RAl9FAJ4o1QUA/YE2hCSlUPngR8h30hT1xQCgoEhu um2QkJOc2Rz7i6xTGPxuqzU= =YyUM -----END PGP SIGNATURE----- diff -r 27d08c0c2a7e -r 55f63f3b6a54 tests/README --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/README Tue Jun 14 13:28:42 2005 -0800 @@ -0,0 +1,27 @@ +A simple testing framework + +This finds all scripts in the test directory named test-* and executes +them. The scripts can be either shell scripts or Python. Each test is +run in a temporary directory that is removed when the test is complete. + +A test- succeeds if the script returns success and its output +matches test-.out. If the new output doesn't match, it is stored in +test-.err. + +There are some tricky points here that you should be aware of when +writing tests: + +- hg commit and hg up -m want user interaction + + for commit use -t "text" + for hg up -m, set HGMERGE to something noninteractive (like true or merge) + +- changeset hashes will change based on user and date which make + things like hg history output change + + use commit -t "test" -u test -d "0 0" + +- diff will show the current time + + use hg diff | sed "s/\(\(---\|+++\).*\)\t.*/\1/" to strip dates + diff -r 27d08c0c2a7e -r 55f63f3b6a54 tests/manifest-bug --- a/tests/manifest-bug Mon Jun 13 18:36:40 2005 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -#!/bin/sh -x - -set +e - -BASE=foo.base -BR1=foo.br1 -BR2=foo.br2 -BR2_1=foo.br2_1 - -mkdir $BASE -cd $BASE -hg init -echo test > file -hg add file -EDITOR="echo 'initial commit' > " hg commit -cd .. - -mkdir $BR1 -cd $BR1 -hg branch ../$BASE -hg checkout -echo test > file1 -hg addremove -EDITOR="echo side commit >" hg commit -cd .. - -mkdir $BR2 -cd $BR2 -hg branch ../$BASE -hg checkout -echo yet more >> file2 -hg addremove -EDITOR="echo second update >" hg commit -cd .. - -mkdir $BR2_1 -cd $BR2_1 -hg branch ../$BR2 -hg checkout -EDITOR="echo commit merge >" hg merge ../$BR1 - -hg checkout diff -r 27d08c0c2a7e -r 55f63f3b6a54 tests/run-tests --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/run-tests Tue Jun 14 13:28:42 2005 -0800 @@ -0,0 +1,46 @@ +#!/bin/bash + +set -e + +tests=0 +failed=0 +H=$PWD + +for f in `ls test-* | grep -Ev "\.|~"` ; do + echo -n "." + D=`mktemp -d` + if [ "$D" == "" ] ; then + echo mktemp failed! + fi + + cd $D + fail=0 + if ! $H/$f > .out 2>&1 ; then + echo $f failed with error code $? + fail=1 + fi + if [ -s .out -a ! -r $H/$f.out ] ; then + echo $f generated unexpected output: + cat .out + cp .out $H/$f.err + fail=1 + elif ! diff -u $H/$f.out .out > /dev/null ; then + echo $f output changed: + diff -u $H/$f.out .out && true + cp .out $H/$f.err + fi + + cd $H + rm -r $D + + failed=$[$failed + $fail] + tests=$[$tests + 1] +done + +echo +echo Ran $tests tests, $failed failed + +if [ $failed -gt 0 ] ; then + exit 1 +fi + diff -r 27d08c0c2a7e -r 55f63f3b6a54 tests/simple-merge --- a/tests/simple-merge Mon Jun 13 18:36:40 2005 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -set -ex -export EDITOR=true -rm -rf test branch - -mkdir test -cd test -echo foo>foo -hg init -hg addremove -hg commit -hg verify -cd .. - -cp -a test branch -cd branch -echo bar>>foo -hg commit - -cd ../test -hg merge ../branch -hg verify - diff -r 27d08c0c2a7e -r 55f63f3b6a54 tests/test-basic --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-basic Tue Jun 14 13:28:42 2005 -0800 @@ -0,0 +1,13 @@ +#!/bin/bash + +set -x +mkdir t +cd t +hg init +echo a > a +hg add a +hg commit -t "test" -u test -d "0 0" +hg history +hg manifest +hg cat a +hg verify \ No newline at end of file diff -r 27d08c0c2a7e -r 55f63f3b6a54 tests/test-basic.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-basic.out Tue Jun 14 13:28:42 2005 -0800 @@ -0,0 +1,22 @@ ++ mkdir t ++ cd t ++ hg init ++ echo a ++ hg add a ++ hg commit -t test -u test -d '0 0' ++ hg history +changeset: 0:acb14030fe0a21b60322c440ad2d20cf7685a376 +user: test +date: Wed Dec 31 16:00:00 1969 +summary: test + ++ hg manifest +b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 644 a ++ hg cat a +a ++ hg verify +checking changesets +checking manifests +crosschecking files in changesets and manifests +checking files +1 files, 1 changesets, 1 total revisions diff -r 27d08c0c2a7e -r 55f63f3b6a54 tests/test-help --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-help Tue Jun 14 13:28:42 2005 -0800 @@ -0,0 +1,9 @@ +#!/bin/bash + +set -x + +hg help +hg add -h +hg help diff +hg help foo + diff -r 27d08c0c2a7e -r 55f63f3b6a54 tests/test-help.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-help.out Tue Jun 14 13:28:42 2005 -0800 @@ -0,0 +1,45 @@ ++ hg help +hg commands: + + add add the specified files on the next commit + addremove add all new files, delete all missing files + annotate show changeset information per file line + cat output the latest or given revision of a file + commit commit the specified files or all outstanding changes + diff diff working directory (or selected files) + export dump the changeset header and diffs for a revision + forget don't add the specified files on the next commit + heads show current repository heads + help show help for a given command or all commands + history show the changelog history + init create a new repository or copy an existing one + log show the revision history of a single file + manifest output the latest or given revision of the project manifest + parents show the parents of the current working dir + patch import an ordered set of patches + pull pull changes from the specified source + push push changes to the specified destination + rawcommit raw commit interface + recover roll back an interrupted transaction + remove remove the specified files on the next commit + serve export the repository via HTTP + status show changed files in the working directory + tags list repository tags + tip show the tip revision + undo undo the last transaction + update update or merge working directory + verify verify the integrity of the repository ++ hg add -h +hg add: option -h not recognized +hg add [files] + +add the specified files on the next commit ++ hg help diff +hg diff [-r A] [-r B] [files] + + -r --rev + revision + +diff working directory (or selected files) ++ hg help foo +hg: unknown command foo diff -r 27d08c0c2a7e -r 55f63f3b6a54 tests/test-simple-update --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-simple-update Tue Jun 14 13:28:42 2005 -0800 @@ -0,0 +1,26 @@ +#!/bin/bash + +set -ex + +mkdir test +cd test +echo foo>foo +hg init +hg addremove +hg commit -t "1" +hg verify +cd .. + +mkdir branch +cd branch +hg init ../test +hg co +echo bar>>foo +hg commit -t "2" + +cd ../test +hg pull ../branch +hg verify +hg co +cat foo +hg manifest \ No newline at end of file diff -r 27d08c0c2a7e -r 55f63f3b6a54 tests/test-simple-update.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-simple-update.out Tue Jun 14 13:28:42 2005 -0800 @@ -0,0 +1,38 @@ ++ mkdir test ++ cd test ++ echo foo ++ hg init ++ hg addremove ++ hg commit -t 1 ++ hg verify +checking changesets +checking manifests +crosschecking files in changesets and manifests +checking files +1 files, 1 changesets, 1 total revisions ++ cd .. ++ mkdir branch ++ cd branch ++ hg init ../test ++ hg co ++ echo bar ++ hg commit -t 2 ++ cd ../test ++ hg pull ../branch +searching for changes +adding changesets +adding manifests +adding file revisions +modified 1 files, added 1 changesets and 1 new revisions ++ hg verify +checking changesets +checking manifests +crosschecking files in changesets and manifests +checking files +1 files, 2 changesets, 2 total revisions ++ hg co ++ cat foo +foo +bar ++ hg manifest +6f4310b00b9a147241b071a60c28a650827fb03d 644 foo diff -r 27d08c0c2a7e -r 55f63f3b6a54 tests/test-up-local-change --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-up-local-change Tue Jun 14 13:28:42 2005 -0800 @@ -0,0 +1,35 @@ +#!/bin/bash + +export HGMERGE=true + +set -ex +mkdir r1 +cd r1 +hg init +echo a > a +hg addremove +hg commit -t "1" -u test -d "0 0" + +cd .. +mkdir r2 +cd r2 +hg init ../r1 +hg up +echo abc > a +hg diff | sed "s/\(\(---\|+++\).*\)\t.*/\1/" + +cd ../r1 +echo b > b +echo a2 > a +hg addremove +hg commit -t "2" -u test -d "0 0" + +cd ../r2 +hg -q pull ../r1 +hg status +hg -d up +hg -d up -m +hg parents +hg -v history +hg diff | sed "s/\(\(---\|+++\).*\)\t.*/\1/" + diff -r 27d08c0c2a7e -r 55f63f3b6a54 tests/test-up-local-change.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-up-local-change.out Tue Jun 14 13:28:42 2005 -0800 @@ -0,0 +1,70 @@ ++ mkdir r1 ++ cd r1 ++ hg init ++ echo a ++ hg addremove ++ hg commit -t 1 -u test -d '0 0' ++ cd .. ++ mkdir r2 ++ cd r2 ++ hg init ../r1 ++ hg up ++ echo abc ++ hg diff ++ sed 's/\(\(---\|+++\).*\)\t.*/\1/' +--- a/a ++++ b/a +@@ -1,1 +1,1 @@ +-a ++abc ++ cd ../r1 ++ echo b ++ echo a2 ++ hg addremove ++ hg commit -t 2 -u test -d '0 0' ++ cd ../r2 ++ hg -q pull ../r1 ++ hg status +C a ++ hg -d up +resolving manifests + ancestor a0c8bcbb local a0c8bcbb remote 1165e8bd + a versions differ, resolve +remote created b +getting b +merging a +resolving a +file a: other d730145a ancestor b789fdd9 ++ hg -d up -m +resolving manifests + ancestor 1165e8bd local 1165e8bd remote 1165e8bd ++ hg parents +changeset: 1:1e71731e6fbb5b35fae293120dea6964371c13c6 +user: test +date: Wed Dec 31 16:00:00 1969 +summary: 2 + ++ hg -v history +changeset: 1:1e71731e6fbb5b35fae293120dea6964371c13c6 +manifest: 1:1165e8bd193e17ad7d321d846fcf27ff3f412758 +user: test +date: Wed Dec 31 16:00:00 1969 +files: a b +description: +2 + +changeset: 0:c19d34741b0a4ced8e4ba74bb834597d5193851e +manifest: 0:a0c8bcbbb45c63b90b70ad007bf38961f64f2af0 +user: test +date: Wed Dec 31 16:00:00 1969 +files: a +description: +1 + ++ hg diff ++ sed 's/\(\(---\|+++\).*\)\t.*/\1/' +--- a/a ++++ b/a +@@ -1,1 +1,1 @@ +-a2 ++abc