monotone

monotone Mtn Source Tree

Root/testsuite.at

1# -*- Autoconf -*-
2#
3# the monotone integration testsuite is written in bourne shell,
4# strung together with the autotest framework (part of autoconf).
5#
6# it's a bit icky but it's better than the hand-written thing we were
7# using before, and it's *certainly* more user friendly than dejagnu,
8# and we need *some* tests which run "as the user would run them".
9# bourne shell scripts are pretty close to that.
10#
11
12AT_INIT([integration tests])
13AT_TESTED([monotone])
14
15# some command abbreviations to make life easier
16
17# Set PREEXECUTE in your environment to run monotone under, e.g., valgrind.
18m4_define([MONOTONE], [$PREEXECUTE $_MT_EXEC --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --norc --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=$_ROOT_DIR])
19m4_define([RAW_MONOTONE], [$PREEXECUTE monotone --norc])
20m4_define([MINHOOKS_MONOTONE], [$PREEXECUTE $_MT_EXEC --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --rcfile=$_ROOT_DIR/min_hooks.lua --key=tester@test.net --root=$_ROOT_DIR])
21m4_define([SHA1], [monotone --norc identify $1])
22m4_define([BASE_REVISION], [cat MT/revision])
23m4_define([WORKING_REVISION], [monotone --norc automate get_revision | monotone --norc identify])
24m4_define([CANONICALISE], [
25if test "$OSTYPE" = "msys"; then
26 dos2unix -q -o $1
27fi
28])
29
30# the MONOTONE_SETUP macro deploys the standard lua hooks and loads the
31# standard testing key, which we use for further tests.
32
33m4_define([MONOTONE_SETUP], [
34
35# Absolutify monotone path.
36_MT_EXEC=`which monotone`
37
38# Save the PWD so MONOTONE macro can refer back to it
39_ROOT_DIR=`pwd -P`
40
41# Pick a random port, so running multiple testsuites concurrently on the
42# same machine has a hope of working. Port range will usually be
43# 20050..53347.
44_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`
45
46AT_DATA(test_keys, [@<:@keypair tester@test.net@:>@
47MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
48s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
49vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
50MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
51CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
52XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
53B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
54QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
55t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
56sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
573JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
58or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
598T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
60T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
61ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
62cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
63OFt8n7wQHxbbJvoTIdd/
64@<:@end@:>@
65])
66
67AT_DATA(min_hooks.lua, [
68function get_passphrase(keyid)
69return keyid
70end
71function non_blocking_rng_ok()
72return true
73end
74function persist_phrase_ok()
75return true
76end
77])
78
79AT_DATA(test_hooks.lua, [
80-- this is the "testing" set of lua hooks for monotone
81-- it's intended to support self-tests, not for use in
82-- production. just defines some of the std hooks.
83
84function get_passphrase(keyid)
85return keyid
86end
87
88function non_blocking_rng_ok()
89return true
90end
91
92-- Everything alice signs is trusted, nothing mallory signs is
93-- trusted. For certs signed by other people, everything is
94-- trusted except for one particular cert...
95-- For use of t_trusted.at.
96function get_revision_cert_trust(signers, id, name, val)
97 for k, v in pairs(signers) do
98 if v == "alice@trusted.com" then return true end
99 if v == "mallory@evil.com" then return false end
100 end
101 if (id == "0000000000000000000000000000000000000000"
102 and name == "bad-cert" and val == "bad-val")
103 then return false end
104 return true
105end
106
107function get_manifest_cert_trust(signers, id, name, val)
108 return true
109end
110
111function get_file_cert_trust(signers, id, name, val)
112 return true
113end
114
115function accept_testresult_change(old_results, new_results)
116 for test,res in pairs(old_results)
117 do
118 if res == true and new_results@<:@test@:>@ ~= true
119 then
120 return false
121 end
122 end
123 return true
124end
125
126function persist_phrase_ok()
127return true
128end
129
130function get_author(branchname)
131return "tester@test.net"
132end
133
134function ignore_file(name)
135if (string.find(name, "test_hooks.lua")) then return true end
136if (string.find(name, "keys")) then return true end
137if (string.find(name, "test.db")) then return true end
138return false
139end
140
141function merge2(left_path, right_path, merged_path, left, right)
142io.write("running merge2 hook\n")
143return left
144end
145
146if (attr_functions == nil) then
147 attr_functions = {}
148end
149attr_functions[["test_attr"]] =
150 function(filename, value)
151 io.write(string.format("test_attr:%s:%s\n", filename, value))
152 end
153
154])
155
156AT_CHECK(MONOTONE db init, [], [ignore], [ignore])
157AT_CHECK(MONOTONE read <test_keys, [], [ignore], [ignore])
158AT_CHECK(MONOTONE setup --branch=testbranch ., [], [ignore], [ignore])
159AT_CHECK(rm test_keys)
160])
161
162# run as CHECK_SAME_STDOUT(command1, command2)
163m4_define([CHECK_SAME_STDOUT], [
164AT_CHECK($1, [], [stdout], [ignore])
165AT_CHECK(mv stdout expout)
166AT_CHECK($2, [], [expout], [ignore])
167])
168
169# run as CHECK_SAME_CANONICALISED_STDOUT(command1, command2)
170m4_define([CHECK_SAME_CANONICALISED_STDOUT], [
171AT_CHECK($1, [], [stdout], [ignore])
172AT_CHECK(mv stdout output1)
173AT_CHECK(CANONICALISE(output1))
174AT_CHECK($2, [], [stdout], [ignore])
175AT_CHECK(mv stdout output2)
176AT_CHECK(CANONICALISE(output2))
177AT_CHECK(cmp output1 output2)
178])
179
180# run as CHECK_DIFFERENT_STDOUT(command1, command2)
181m4_define([CHECK_DIFFERENT_STDOUT], [
182AT_CHECK($1, [], [stdout], [ignore])
183AT_CHECK(mv stdout firstout)
184AT_CHECK($2, [], [stdout], [ignore])
185AT_CHECK(mv stdout secondout)
186AT_CHECK(cmp firstout secondout, [1], [ignore], [ignore])
187])
188
189# run as CHECK_SAME_DB_CONTENTS(db1, db2)
190m4_define([CHECK_SAME_DB_CONTENTS], [
191CHECK_SAME_STDOUT(MONOTONE --db=$1 ls keys, MONOTONE --db=$2 ls keys)
192
193REVS=`MONOTONE --db=$1 complete revision ""`
194for R in $REVS; do
195 CHECK_SAME_STDOUT(MONOTONE --db=$1 ls certs $R, MONOTONE --db=$2 ls certs $R)
196 CHECK_SAME_STDOUT(MONOTONE --db=$1 automate get_revision $R, MONOTONE --db=$2 automate get_revision $R)
197done
198
199CHECK_SAME_STDOUT(MONOTONE --db=$1 complete manifest "", MONOTONE --db=$2 complete manifest "")
200MANIFESTS=`MONOTONE --db=$1 complete manifest ""`
201for M in $MANIFESTS; do
202 CHECK_SAME_STDOUT(MONOTONE --db=$1 automate get_manifest $M, MONOTONE --db=$2 automate get_manifest $M)
203done
204
205CHECK_SAME_STDOUT(MONOTONE --db=$1 complete file "", MONOTONE --db=$2 complete file "")
206FILES=`MONOTONE --db=$1 complete file ""`
207for F in $FILES; do
208 CHECK_SAME_STDOUT(MONOTONE --db=$1 automate get_file $F, MONOTONE --db=$2 automate get_file $F)
209done
210])
211
212# run as PROBE_NODE(filename, rsha, fsha)
213m4_define([PROBE_NODE], [
214AT_CHECK(rm -rf MT.old)
215AT_CHECK(mv MT MT.old)
216AT_CHECK(rm $1)
217AT_CHECK(MONOTONE checkout --revision=$2 ., [], [ignore])
218AT_CHECK(mv MT.old/options MT)
219PROBE_R_SHA=`BASE_REVISION`
220PROBE_F_SHA=`SHA1($1)`
221AT_CHECK(test $PROBE_R_SHA = $2)
222AT_CHECK(test $PROBE_F_SHA = $3)
223])
224
225# run as REVERT_TO(rsha[,branch])
226m4_define([REVERT_TO], [
227AT_CHECK(rm -rf MT.old)
228AT_CHECK(mv MT MT.old)
229m4_case([$2],
230 [], [AT_CHECK(MONOTONE checkout --revision=$1 ., [], [ignore])],
231 [AT_CHECK(MONOTONE --branch=$2 checkout --revision=$1 ., [], [ignore])])
232PROBE_R_SHA=`BASE_REVISION`
233AT_CHECK(test $PROBE_R_SHA = $1)
234])
235
236# run as ADD_FILE(filename, data)
237m4_define([ADD_FILE], [
238AT_DATA($1, $2)
239AT_CHECK(MONOTONE add $1, [], [ignore], [ignore])
240])
241
242# run as SET_FILE(filename, data)
243m4_define([SET_FILE], [
244AT_DATA($1, $2)
245])
246
247# run as COMMIT(branch)
248m4_define([COMMIT], [
249AT_CHECK(MONOTONE --branch=$1 commit --message blah-blah, [], [ignore],
250[ignore])
251])
252
253m4_define([NOT_ON_WIN32], [
254if test "$OSTYPE" = "msys"; then
255 exit 77
256fi
257])
258
259# Some tests want to include data files.
260# Usage: NEED_UNB64 will cancel the test (reporting success) if we
261# can't decode base64'ed text.
262# After calling NEED_UNB64, you can use UNB64(infile, outfile) to
263# decode base64'ed text.
264m4_define([NEED_UNB64], [
265if test -n "`command -v mimencode`" 2>/dev/null; then
266 UNB64_COMMAND="mimencode -u"
267elif test -n "`command -v recode`" 2>/dev/null; then
268 UNB64_COMMAND="recode /Base64"
269elif perl -MMIME::Base64 -e 1 2>/dev/null; then
270 UNB64_COMMAND="perl -MMIME::Base64 -ne 'print decode_base64(\$_)'"
271elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
272 UNB64_COMMAND="python -c 'import sys;sys.stdout.write(sys.stdin.read().decode("'"'"base64"'"'"))'"
273else
274 # This is lame! We should XFAIL the test so the user knows that
275 # they're not, you know, actually testing the software. But
276 # Autotest runs XFAIL conditions in a completely different shell, so
277 # we can't without duplicating the whole test here.
278 exit 77
279fi
280# Poor man's logging:
281AT_CHECK(echo $UNB64_COMMAND, [], [ignore], [ignore])
282])
283m4_define([UNB64], [AT_CHECK(
284if test "$OSTYPE" = "msys"; then
285 mimencode -u -o $2 $1
286else
287 eval $UNB64_COMMAND <$1 >$2
288fi
289)])
290
291# Usage: NEED_UNGZ will cancel the test (reporting success) if we
292# can't decode gzipped text.
293# After calling NEED_UNGZ, you can use UNGZ(infile, outfile) to
294# decode gzipped text.
295m4_define([NEED_UNGZ], [
296if test -n "`command -v gunzip`" 2>/dev/null; then
297 # This is lame! We should XFAIL the test so the user knows that
298 # they're not, you know, actually testing the software. But
299 # Autotest runs XFAIL conditions in a completely different shell, so
300 # we can't without duplicating the whole test here.
301 UNGZ_COMMAND="gunzip -c"
302fi
303# Poor man's logging:
304AT_CHECK(echo $UNGZ_COMMAND, [], [ignore], [ignore])
305])
306m4_define([UNGZ], [AT_CHECK(
307if test "$OSTYPE" = "msys"; then
308 if test "$1" != "$2.gz"; then
309 mv $1 $2.gz
310 fi
311 gunzip $2.gz
312else
313 eval $UNGZ_COMMAND <$1 >$2
314fi
315)])
316
317# Usage: NEED_UNGZB64 will XFAIL the test if we can't decode base64'ed
318# gzipped text.
319# After calling NEED_UNGZB64, you can use UNGZB64(infile, outfile) to
320# decode base64'ed gzipped text.
321m4_define([NEED_UNGZB64], [
322NEED_UNB64
323NEED_UNGZ
324])
325m4_define([UNGZB64], [
326UNB64($1, $2.gz)
327UNGZ($2.gz, $2)
328])
329
330# netsync helpers
331# NETSYNC_SETUP sets up 2 databases; RUN_NETSYNC netsyncs between
332# them, MONOTONE2 operates on the second one.
333
334m4_define([NETSYNC_SETUP], [
335
336AT_CHECK(cp test.db test2.db)
337AT_CHECK(cp -r keys/ keys2)
338AT_CHECK(cp test.db test3.db)
339AT_CHECK(cp -r keys/ keys3)
340AT_DATA(netsync.lua, [
341function get_netsync_read_permitted(pattern, identity)
342return true
343end
344
345function get_netsync_write_permitted(identity)
346return true
347end
348])
349
350])
351
352m4_define([MONOTONE2], MONOTONE --db=test2.db --keydir=keys2)
353m4_define([MONOTONE3], MONOTONE --db=test3.db --keydir=keys3)
354
355m4_define([NETSYNC_KILL], [
356# kill last seen pid if there is no pid file (needed for cases where
357# NETSYNC_KILL{,HARD} is used more than once on a single process.
358if test -e monotone_at.pid; then
359 mt_pid=`cat monotone_at.pid`
360fi
361if test "$OSTYPE" = "msys"; then
362 # we can't use MingW's kill because it can't target Win32 pids.
363 pskill=`which pskill`
364 if test $pskill && test -x $pskill; then
365 $pskill $mt_pid 2>/dev/null
366 else
367 ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[[pp]]=="monotone")system("kill " $a);}'
368 fi
369else
370 kill -TERM $mt_pid 2>/dev/null
371fi
372rm -f monotone_at.pid 2>/dev/null
373])
374m4_define([NETSYNC_KILLHARD], [
375# kill last seen pid if there is no pid file (needed for cases where
376# NETSYNC_KILL{,HARD} is used more than once on a single process.
377if test -e monotone_at.pid; then
378 mt_pid=`cat monotone_at.pid`
379fi
380if test "$OSTYPE" = "msys"; then
381 # we can't use MingW's kill because it can't target Win32 pids.
382 pskill=`which pskill`
383 if test $pskill && test -x $pskill; then
384 $pskill $mt_pid 2>/dev/null
385 else
386 ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[[pp]]=="monotone")system("kill -KILL " $a);}'
387 fi
388else
389 kill -KILL $mt_pid 2>/dev/null
390fi
391rm -f monotone_at.pid 2>/dev/null
392])
393
394m4_define([NETSYNC_ADDRESS], [localhost:$_PORT])
395
396# run as NETSYNC_SERVE_N_START(2|3, pattern)
397# note that NETSYNC_SERVE_START is _not_ a special case of this macro.
398m4_define([NETSYNC_SERVE_N_START], [
399NETSYNC_KILLHARD
400MONOTONE --db=test$1.db --keydir=keys$1 --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=MT/server_dump --bind=NETSYNC_ADDRESS serve m4_if($2, [], "{}*", $2) &
401sleep 4
402])
403# run as NETSYNC_SERVE_START(pattern)
404m4_define([NETSYNC_SERVE_START], [
405NETSYNC_KILLHARD
406MONOTONE --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=MT/server_dump --bind=NETSYNC_ADDRESS serve m4_if($1, [], "{}*", $1) &
407sleep 4
408])
409# run as STDHOOKS_NETSYNC_SERVE_N_START(2|3, pattern)
410# note that NETSYNC_SERVE_START is _not_ a special case of this macro.
411m4_define([MINHOOKS_NETSYNC_SERVE_N_START], [
412NETSYNC_KILLHARD
413MINHOOKS_MONOTONE --db=test$1.db --keydir=keys$1 --pid-file=monotone_at.pid --dump=MT/server_dump --bind=NETSYNC_ADDRESS serve m4_if($2, [], "{}*", $2) &
414sleep 4
415])
416# run as MINHOOKS_NETSYNC_SERVE_START(pattern)
417m4_define([MINHOOKS_NETSYNC_SERVE_START], [
418NETSYNC_KILLHARD
419MINHOOKS_MONOTONE --pid-file=monotone_at.pid --dump=MT/server_dump --bind=NETSYNC_ADDRESS serve m4_if($1, [], "{}*", $1) &
420sleep 4
421])
422# run as NETSYNC_SERVE_STOP
423m4_define([NETSYNC_SERVE_STOP], [
424NETSYNC_KILL
425sleep 1
426NETSYNC_KILLHARD
427])
428# run as NETSYNC_CLIENT_N_RUN(2|3, push|pull|sync, pattern[, expected result])
429# first argument chooses whether to use the 2nd or 3rd database
430m4_define([NETSYNC_CLIENT_N_RUN], [
431AT_CHECK(MONOTONE --db=test$1.db --keydir=keys$1 --rcfile=netsync.lua $2 NETSYNC_ADDRESS $3, [$4], [ignore], [ignore])
432])
433# run as NETSYNC_CLIENT_RUN(push|pull|sync, pattern[, expected result])
434m4_define([NETSYNC_CLIENT_RUN], [
435NETSYNC_CLIENT_N_RUN(2, $1, $2, $3)
436])
437# run as RUN_NETSYNC(push|pull|sync, pattern)
438# It is the second database that is always the client; take this into
439# account when choosing push|pull|sync.
440m4_define([RUN_NETSYNC], [
441NETSYNC_SERVE_START($2)
442NETSYNC_CLIENT_RUN($1, $2, 0)
443NETSYNC_SERVE_STOP
444])
445# run as QGREP(arguments) the same way you'd run 'grep -q arguments'
446# same for QEGREP and egrep -q
447m4_define([QGREP], [grep $1 >/dev/null])
448m4_define([QEGREP], [egrep $1 >/dev/null])
449# run as TAIL(lines)
450m4_define([TAIL], [(tail -n $1 2>/dev/null || tail -$1)])
451
452# run as LARGISH_FILE_CREATE(filename, size) to create a <size> MB file of
453# uncompressible data
454m4_define([LARGISH_FILE_CREATE], [
455awk -- 'BEGIN{srand(5253);for(a=0;a<1024*1024;a+=20)printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256);}' > largish.tmp
456i=$2
457while test $i -gt 0; do
458cat largish.tmp >> $1
459i=$((i - 1))
460done
461rm -f largish.tmp
462])
463
464# include all the sub-tests we're going to use
465
466m4_include(tests/t_null.at)
467m4_include(tests/t_scan.at)
468m4_include(tests/t_import.at)
469m4_include(tests/t_genkey.at)
470m4_include(tests/t_unidiff.at)
471m4_include(tests/t_persist_phrase.at)
472m4_include(tests/t_versions.at)
473m4_include(tests/t_fork.at)
474m4_include(tests/t_update.at)
475m4_include(tests/t_merge.at)
476m4_include(tests/t_merge_add.at)
477m4_include(tests/t_related_merge2_data.at)
478m4_include(tests/t_merge2_add.at)
479m4_include(tests/t_merge2_data.at)
480m4_include(tests/t_unidiff2.at)
481m4_include(tests/t_cwork.at)
482m4_include(tests/t_revert.at)
483m4_include(tests/t_add.at)
484m4_include(tests/t_drop.at)
485m4_include(tests/t_drop_missing.at)
486m4_include(tests/t_cross.at)
487m4_include(tests/t_rename.at)
488m4_include(tests/t_renamed.at)
489m4_include(tests/t_erename.at)
490m4_include(tests/t_cvsimport.at)
491m4_include(tests/t_i18n_file.at)
492m4_include(tests/t_fmerge.at)
493m4_include(tests/t_netsync.at)
494m4_include(tests/t_netsync_single.at)
495m4_include(tests/t_netsync_pubkey.at)
496m4_include(tests/t_netsync_repeated.at)
497m4_include(tests/t_netsync_unrelated.at)
498m4_include(tests/t_disapprove.at)
499m4_include(tests/t_testresult.at)
500m4_include(tests/t_singlecvs.at)
501m4_include(tests/t_ls_missing.at)
502m4_include(tests/t_attributes.at)
503m4_include(tests/t_single_char_filenames.at)
504m4_include(tests/t_restrictions.at)
505m4_include(tests/t_subdirs.at)
506m4_include(tests/t_movepatch.at)
507m4_include(tests/t_movedel.at)
508m4_include(tests/t_remerge.at)
509m4_include(tests/t_update_missing.at)
510m4_include(tests/t_chkeypass.at)
511m4_include(tests/t_diff_added_file.at)
512m4_include(tests/t_update_to_revision.at)
513m4_include(tests/t_heads.at)
514m4_include(tests/t_heads_discontinuous_branch.at)
515m4_include(tests/t_merge_1.at)
516m4_include(tests/t_merge_2.at)
517m4_include(tests/t_tags.at)
518m4_include(tests/t_add_dot.at)
519m4_include(tests/t_cleanup_empty_dir.at)
520m4_include(tests/t_merge_add_del.at)
521m4_include(tests/t_add_edge.at)
522m4_include(tests/t_patch_drop_add.at)
523m4_include(tests/t_add_drop_add.at)
524m4_include(tests/t_merge2_add_drop_add.at)
525m4_include(tests/t_add_patch_drop_add.at)
526m4_include(tests/t_patch_vs_drop_add.at)
527m4_include(tests/t_explicit_merge.at)
528m4_include(tests/t_ambig_update.at)
529m4_include(tests/t_checkout_dir.at)
530m4_include(tests/t_checkout_options.at)
531m4_include(tests/t_trusted.at)
532m4_include(tests/t_attr.at)
533m4_include(tests/t_rcfile_required.at)
534m4_include(tests/t_persistent_server_revision.at)
535m4_include(tests/t_persistent_server_keys.at)
536m4_include(tests/t_fmerge_normalize.at)
537m4_include(tests/t_delete_dir.at)
538m4_include(tests/t_migrate_schema.at)
539m4_include(tests/t_dump_load.at)
540m4_include(tests/t_no_change_deltas.at)
541m4_include(tests/t_drop_rename_patch.at)
542m4_include(tests/t_cmdline_options.at)
543m4_include(tests/t_log_nonexistent.at)
544m4_include(tests/t_crlf.at)
545m4_include(tests/t_netsync_diffbranch.at)
546m4_include(tests/t_netsync_nocerts.at)
547m4_include(tests/t_check_same_db_contents.at)
548m4_include(tests/t_merge_ancestor.at)
549m4_include(tests/t_propagate_desc.at)
550m4_include(tests/t_propagate_anc.at)
551m4_include(tests/t_status_missing.at)
552m4_include(tests/t_persistent_server_keys_2.at)
553m4_include(tests/t_update_1.at)
554m4_include(tests/t_vcheck.at)
555m4_include(tests/t_db_with_dots.at)
556m4_include(tests/t_subdir_add.at)
557m4_include(tests/t_subdir_drop.at)
558m4_include(tests/t_subdir_revert.at)
559m4_include(tests/t_subdir_rename.at)
560m4_include(tests/t_subdir_attr.at)
561m4_include(tests/t_lca_1.at)
562m4_include(tests/t_update_2.at)
563m4_include(tests/t_rename_dir_cross_level.at)
564m4_include(tests/t_rename_added_in_rename.at)
565m4_include(tests/t_rename_conflict.at)
566m4_include(tests/t_rename_dir_patch.at)
567m4_include(tests/t_delete_dir_patch.at)
568m4_include(tests/t_revert_dirs.at)
569m4_include(tests/t_revert_rename.at)
570m4_include(tests/t_revert_unchanged.at)
571m4_include(tests/t_cdiff.at)
572m4_include(tests/t_no_rename_overwrite.at)
573m4_include(tests/t_checkout_noop_on_fail.at)
574m4_include(tests/t_monotone_agent.at)
575m4_include(tests/t_approval_semantics.at)
576m4_include(tests/t_rebuild.at)
577m4_include(tests/t_lua_privkey.at)
578m4_include(tests/t_i18n_changelog.at)
579m4_include(tests/t_restrictions_warn_on_unknown.at)
580m4_include(tests/t_need_mt_revision.at)
581m4_include(tests/t_update_null_revision.at)
582m4_include(tests/t_branch_checkout.at)
583m4_include(tests/t_load_into_existing.at)
584m4_include(tests/t_automate_version.at)
585m4_include(tests/t_automate_heads.at)
586m4_include(tests/t_merge_normalization_edge_case.at)
587m4_include(tests/t_undo_update.at)
588m4_include(tests/t_change_empty_file.at)
589m4_include(tests/t_largish_file.at)
590m4_include(tests/t_add_intermediate_MT_path.at)
591m4_include(tests/t_merge_3.at)
592m4_include(tests/t_merge_4.at)
593m4_include(tests/t_db_missing.at)
594m4_include(tests/t_database_check.at)
595m4_include(tests/t_add_owndb.at)
596m4_include(tests/t_can_execute.at)
597m4_include(tests/t_diff_binary.at)
598m4_include(tests/t_command_completion.at)
599m4_include(tests/t_merge_rename_file_and_rename_dir.at)
600m4_include(tests/t_diff_restrict.at)
601m4_include(tests/t_cat_file_by_name.at)
602m4_include(tests/t_epoch.at)
603m4_include(tests/t_epoch_server.at)
604m4_include(tests/t_epoch_unidirectional.at)
605m4_include(tests/t_vars.at)
606m4_include(tests/t_netsync_defaults.at)
607m4_include(tests/t_netsync_set_defaults.at)
608m4_include(tests/t_netsync_absorbs.at)
609m4_include(tests/t_netsync_checks_server_key.at)
610m4_include(tests/t_merge_5.at)
611m4_include(tests/t_empty_id_completion.at)
612m4_include(tests/t_empty_path.at)
613m4_include(tests/t_empty_env.at)
614m4_include(tests/t_short_opts.at)
615m4_include(tests/t_netsync_sigpipe.at)
616m4_include(tests/t_setup_creates_log.at)
617m4_include(tests/t_checkout_creates_log.at)
618m4_include(tests/t_commit_log_1.at)
619m4_include(tests/t_commit_log_2.at)
620m4_include(tests/t_dropkey_1.at)
621m4_include(tests/t_dropkey_2.at)
622m4_include(tests/t_rename_attr.at)
623m4_include(tests/t_automate_ancestors.at)
624m4_include(tests/t_automate_descendents.at)
625m4_include(tests/t_automate_erase_ancestors.at)
626m4_include(tests/t_automate_toposort.at)
627m4_include(tests/t_diff_first_rev.at)
628m4_include(tests/t_automate_ancestry_difference.at)
629m4_include(tests/t_automate_leaves.at)
630m4_include(tests/t_log_depth.at)
631m4_include(tests/t_commit_log_3.at)
632m4_include(tests/t_at_sign.at)
633m4_include(tests/t_db_execute.at)
634m4_include(tests/t_sql_unpack.at)
635m4_include(tests/t_final_space.at)
636m4_include(tests/t_inodeprints.at)
637m4_include(tests/t_inodeprints_update.at)
638m4_include(tests/t_ls_known.at)
639m4_include(tests/t_cvsimport_samelog.at)
640m4_include(tests/t_sticky_branch.at)
641m4_include(tests/t_checkout_id_sets_branch.at)
642m4_include(tests/t_netsync_largish_file.at)
643m4_include(tests/t_update_off_branch.at)
644m4_include(tests/t_setup_checkout_modify_new_dir.at)
645m4_include(tests/t_cvspull_combined.at)
646m4_include(tests/t_cvspull_separate.at)
647m4_include(tests/t_cvspull_committemplate.at)
648m4_include(tests/t_cvspull_samedirname.at)
649m4_include(tests/t_cvstakeover_modified.at)
650m4_include(tests/t_cvspush_loop.at)
651m4_include(tests/t_cvspull_cvsbranch.at)
652m4_include(tests/t_cvspull_rapid.at)
653m4_include(tests/t_cvspull_md5fail.at)
654m4_include(tests/t_rename_dir_add_dir_with_old_name.at)
655m4_include(tests/t_rcs_import.at)
656m4_include(tests/t_cvsimport2.at)
657m4_include(tests/t_lf_crlf.at)
658m4_include(tests/t_add_vs_commit.at)
659m4_include(tests/t_update_nonexistent.at)
660m4_include(tests/t_override_author_date.at)
661m4_include(tests/t_add_stomp_file.at)
662m4_include(tests/t_database_check_minor.at)
663m4_include(tests/t_db_kill_rev_locally.at)
664m4_include(tests/t_drop_attr.at)
665m4_include(tests/t_attr_drop.at)
666m4_include(tests/t_log_depth_single.at)
667m4_include(tests/t_attr_init.at)
668m4_include(tests/t_add_executable.at)
669m4_include(tests/t_inodeprints_hook.at)
670m4_include(tests/t_bad_packets.at)
671m4_include(tests/t_multiple_heads_msg.at)
672m4_include(tests/t_diff_currev.at)
673m4_include(tests/t_normalized_filenames.at)
674m4_include(tests/t_automate_inventory.at)
675m4_include(tests/t_rename_file_to_dir.at)
676m4_include(tests/t_replace_file_with_dir.at)
677m4_include(tests/t_replace_dir_with_file.at)
678m4_include(tests/t_parents_children.at)
679m4_include(tests/t_automate_graph.at)
680m4_include(tests/t_i18n_file_data.at)
681m4_include(tests/t_cvsimport_manifest_cycle.at)
682m4_include(tests/t_select_cert.at)
683m4_include(tests/t_automate_select.at)
684m4_include(tests/t_refresh_inodeprints.at)
685m4_include(tests/t_merge_6.at)
686m4_include(tests/t_annotate.at)
687m4_include(tests/t_annotate_add_collision.at)
688m4_include(tests/t_annotate_branch_collision.at)
689m4_include(tests/t_netsync_error.at)
690m4_include(tests/t_options.at)
691m4_include(tests/t_annotate_copy_all.at)
692m4_include(tests/t_cvsimport_deleted_invar.at)
693m4_include(tests/t_rcfile_stdin.at)
694m4_include(tests/t_monotone_up.at)
695m4_include(tests/t_drop_vs_patch_rename.at)
696m4_include(tests/t_unreadable_MT.at)
697m4_include(tests/t_cvsimport3.at)
698m4_include(tests/t_commit_message_file.at)
699m4_include(tests/t_automate_attributes.at)
700m4_include(tests/t_unidiff3.at)
701m4_include(tests/t_netsync_permissions.at)
702m4_include(tests/t_update_with_blocked_rename.at)
703m4_include(tests/t_drop_vs_dropadd.at)
704m4_include(tests/t_annotate_lineage_dependent.at)
705m4_include(tests/t_annotate_split_line.at)
706m4_include(tests/t_automate_certs.at)
707m4_include(tests/t_selector_later_earlier.at)
708m4_include(tests/t_automate_stdio.at)
709m4_include(tests/t_cvsimport_drepper.at)
710m4_include(tests/t_update_with_pending_drop.at)
711m4_include(tests/t_update_with_pending_add.at)
712m4_include(tests/t_update_with_pending_rename.at)
713m4_include(tests/t_restricted_commit_with_inodeprints.at)
714m4_include(tests/t_merge_manual.at)
715m4_include(tests/t_revert_restrict.at)
716m4_include(tests/t_status.at)
717m4_include(tests/t_cvsimport_drepper2.at)
718m4_include(tests/t_rcfile_dir.at)
719m4_include(tests/t_lua_includedir.at)
720m4_include(tests/t_existsonpath.at)
721m4_include(tests/t_db_kill_branch_certs_locally.at)
722m4_include(tests/t_netsync_globs.at)
723m4_include(tests/t_set_default.at)
724m4_include(tests/t_netsync_read_permissions.at)
725m4_include(tests/t_netsync_exclude.at)
726m4_include(tests/t_netsync_exclude_default.at)
727m4_include(tests/t_ambiguous_tags.at)
728m4_include(tests/t_kill_tag_locally.at)
729m4_include(tests/t_restricted_diff_unchanged.at)
730m4_include(tests/t_selector_globbing.at)
731m4_include(tests/t_diff_external.at)
732m4_include(tests/t_migrate_broken_schema.at)
733m4_include(tests/t_ls_branches.at)
734m4_include(tests/t_database_check_normalized.at)
735m4_include(tests/t_annotate_no_rev.at)
736m4_include(tests/t_merge_add_rename_add.at)
737m4_include(tests/t_update_branch.at)
738m4_include(tests/t_commit_cancelled.at)
739m4_include(tests/t_merge_lca.at)
740m4_include(tests/t_commit_log_writeback.at)
741m4_include(tests/t_log_brief.at)
742m4_include(tests/t_explicit_merge_with_anc.at)
743m4_include(tests/t_drop_execute.at)
744m4_include(tests/t_rename_execute.at)
745m4_include(tests/t_read_from_file.at)
746m4_include(tests/t_setup_existing_path.at)
747m4_include(tests/t_mt_ignore.at)
748m4_include(tests/t_automate_get_file.at)
749m4_include(tests/t_automate_get_manifest.at)
750m4_include(tests/t_automate_get_revision.at)
751m4_include(tests/t_unreadable_db.at)
752m4_include(tests/t_restriction_with_exclude.at)
753m4_include(tests/t_restriction_with_exclude_iprint.at)
754m4_include(tests/t_rename_diff_names.at)
755m4_include(tests/t_key_management_without_db.at)
756m4_include(tests/t_automate_keys.at)
757m4_include(tests/t_diff_outside_working_dir.at)
758m4_include(tests/t_log_outside_working_dir.at)
759m4_include(tests/t_add_inside_MT.at)
760m4_include(tests/t_annotate_renames.at)
761m4_include(tests/t_config_confdir.at)
762m4_include(tests/t_database_sig_cleanup.at)
763m4_include(tests/t_update_switch_branch.at)
764m4_include(tests/t_mixed_case_pwd.at)
765m4_include(tests/t_read_privkey.at)

Archive Download this file

Branches

Tags

Quick Links:     www.monotone.ca    -     Downloads    -     Documentation    -     Wiki    -     Code Forge    -     Build Status