monotone

monotone Mtn Source Tree

Root/testsuite.lua

  • Property mtn:execute set to true
1#!./tester
2
3ostype = string.sub(get_ostype(), 1, string.find(get_ostype(), " ")-1)
4
5-- maybe this should go in tester.lua instead?
6function getpathof(exe, ext)
7 local function gotit(now)
8 if test.log == nil then
9 logfile:write(exe, " found at ", now, "\n")
10 else
11 test.log:write(exe, " found at ", now, "\n")
12 end
13 return now
14 end
15 local path = os.getenv("PATH")
16 local char
17 if ostype == "Windows" then
18 char = ';'
19 else
20 char = ':'
21 end
22 if ostype == "Windows" then
23 if ext == nil then ext = ".exe" end
24 else
25 if ext == nil then ext = "" end
26 end
27 local now = initial_dir.."/"..exe..ext
28 if exists(now) then return gotit(now) end
29 for x in string.gfind(path, "[^"..char.."]*"..char) do
30 local dir = string.sub(x, 0, -2)
31 if string.find(dir, "[\\/]$") then
32 dir = string.sub(dir, 0, -2)
33 end
34 local now = dir.."/"..exe..ext
35 if exists(now) then return gotit(now) end
36 end
37 if test.log == nil then
38 logfile:write("Cannot find ", exe, "\n")
39 else
40 test.log:write("Cannot find ", exe, "\n")
41 end
42 return nil
43end
44
45monotone_path = getpathof("mtn")
46if monotone_path == nil then monotone_path = "mtn" end
47set_env("mtn", monotone_path)
48
49-- NLS nuisances.
50for _,name in pairs({ "LANG",
51 "LANGUAGE",
52 "LC_ADDRESS",
53 "LC_ALL",
54 "LC_COLLATE",
55 "LC_CTYPE",
56 "LC_IDENTIFICATION",
57 "LC_MEASUREMENT",
58 "LC_MESSAGES",
59 "LC_MONETARY",
60 "LC_NAME",
61 "LC_NUMERIC",
62 "LC_PAPER",
63 "LC_TELEPHONE",
64 "LC_TIME" }) do
65 set_env(name,"C")
66end
67
68
69function safe_mtn(...)
70 return {monotone_path, "--norc", "--root=" .. test.root,
71 "--confdir="..test.root, unpack(arg)}
72end
73
74-- function preexecute(x)
75-- return {"valgrind", "--tool=memcheck", unpack(x)}
76-- end
77
78function raw_mtn(...)
79 if preexecute ~= nil then
80 return preexecute(safe_mtn(unpack(arg)))
81 else
82 return safe_mtn(unpack(arg))
83 end
84end
85
86function mtn(...)
87 return raw_mtn("--rcfile", test.root .. "/test_hooks.lua",
88 "--nostd", "--db=" .. test.root .. "/test.db",
89 "--keydir", test.root .. "/keys",
90 "--key=tester@test.net", unpack(arg))
91end
92
93function minhooks_mtn(...)
94 return raw_mtn("--db=" .. test.root .. "/test.db",
95 "--keydir", test.root .. "/keys",
96 "--rcfile", test.root .. "/min_hooks.lua",
97 "--key=tester@test.net", unpack(arg))
98end
99
100function commit(branch, message, mt)
101 if branch == nil then branch = "testbranch" end
102 if message == nil then message = "blah-blah" end
103 if mt == nil then mt = mtn end
104 check(mt("commit", "--message", message, "--branch", branch), 0, false, false)
105end
106
107function sha1(what)
108 check(safe_mtn("identify", what), 0, false, false)
109 return trim(readfile("ts-stdout"))
110end
111
112function probe_node(filename, rsha, fsha)
113 remove("_MTN.old")
114 rename("_MTN", "_MTN.old")
115 remove(filename)
116 check(mtn("checkout", "--revision", rsha, "."), 0, false)
117 rename("_MTN.old/options", "_MTN")
118 check(base_revision() == rsha)
119 check(sha1(filename) == fsha)
120end
121
122function mtn_setup()
123 getstd("test_keys")
124 getstd("test_hooks.lua")
125 getstd("min_hooks.lua")
126
127 check(mtn("db", "init"), 0, false, false)
128 check(mtn("read", "test_keys"), 0, false, false)
129 check(mtn("setup", "--branch=testbranch", "."), 0, false, false)
130 remove("test_keys")
131end
132
133function base_revision()
134 return (string.gsub(readfile("_MTN/revision"), "%s*$", ""))
135end
136
137function base_manifest()
138 check(safe_mtn("automate", "get_manifest_of", base_revision()), 0, false)
139 copy("ts-stdout", "base_manifest_temp")
140 return sha1("base_manifest_temp")
141end
142
143function certvalue(rev, name)
144 check(safe_mtn("automate", "certs", rev), 0, false)
145 local parsed = parse_basic_io(readfile("ts-stdout"))
146 local cname
147 for _,l in pairs(parsed) do
148 if l.name == "name" then cname = l.values[1] end
149 if cname == name and l.name == "value" then return l.values[1] end
150 end
151 return nil
152end
153
154function qgrep(what, where)
155 local ok,res = pcall(unpack(grep("-q", what, where)))
156 if not ok then err(res) end
157 return res == 0
158end
159
160function addfile(filename, contents, mt)
161 if contents ~= nil then writefile(filename, contents) end
162 if mt == nil then mt = mtn end
163 check(mt("add", filename), 0, false, false)
164end
165
166function revert_to(rev, branch, mt)
167 if type(branch) == "function" then
168 mt = branch
169 branch = nil
170 end
171 if mt == nil then mt = mtn end
172 remove("_MTN.old")
173 rename("_MTN", "_MTN.old")
174
175 if branch == nil then
176 check(mt("checkout", "--revision", rev, "."), 0, false)
177 else
178 check(mt("checkout", "--branch", branch, "--revision", rev, "."), 0, false)
179 end
180 check(base_revision() == rev)
181end
182
183function canonicalize(filename)
184 if ostype == "Windows" then
185 L("Canonicalizing ", filename, "\n")
186 local f = io.open(filename, "rb")
187 local indat = f:read("*a")
188 f:close()
189 local outdat = string.gsub(indat, "\r\n", "\n")
190 f = io.open(filename, "wb")
191 f:write(outdat)
192 f:close()
193 else
194 L("Canonicalization not needed (", filename, ")\n")
195 end
196end
197
198function check_same_db_contents(db1, db2)
199 check_same_stdout(mtn("--db", db1, "ls", "keys"),
200 mtn("--db", db2, "ls", "keys"))
201
202 check(mtn("--db", db1, "complete", "revision", ""), 0, true, false)
203 rename("stdout", "revs")
204 check(mtn("--db", db2, "complete", "revision", ""), 0, true, false)
205 check(samefile("stdout", "revs"))
206 for rev in io.lines("revs") do
207 rev = trim(rev)
208 check_same_stdout(mtn("--db", db1, "automate", "certs", rev),
209 mtn("--db", db2, "automate", "certs", rev))
210 check_same_stdout(mtn("--db", db1, "automate", "get_revision", rev),
211 mtn("--db", db2, "automate", "get_revision", rev))
212 check_same_stdout(mtn("--db", db1, "automate", "get_manifest_of", rev),
213 mtn("--db", db2, "automate", "get_manifest_of", rev))
214 end
215
216 check(mtn("--db", db1, "complete", "file", ""), 0, true, false)
217 rename("stdout", "files")
218 check(mtn("--db", db2, "complete", "file", ""), 0, true, false)
219 check(samefile("stdout", "files"))
220 for file in io.lines("files") do
221 file = trim(file)
222 check_same_stdout(mtn("--db", db1, "automate", "get_file", file),
223 mtn("--db", db2, "automate", "get_file", file))
224 end
225end
226
227-- maybe these should go in tester.lua?
228function do_check_same_stdout(cmd1, cmd2)
229 check(cmd1, 0, true, false)
230 rename("stdout", "stdout-first")
231 check(cmd2, 0, true, false)
232 rename("stdout", "stdout-second")
233 check(samefile("stdout-first", "stdout-second"))
234end
235function do_check_different_stdout(cmd1, cmd2)
236 check(cmd1, 0, true, false)
237 rename("stdout", "stdout-first")
238 check(cmd2, 0, true, false)
239 rename("stdout", "stdout-second")
240 check(not samefile("stdout-first", "stdout-second"))
241end
242function check_same_stdout(a, b, c)
243 if type(a) == "table" and type(b) == "table" then
244 return do_check_same_stdout(a, b)
245 elseif type(a) == "table" and type(b) == "function" and type(c) == "function" then
246 return do_check_same_stdout(b(unpack(a)), c(unpack(a)))
247 elseif type(a) == "table" and type(b) == "nil" and type(c) == "nil" then
248 return do_check_same_stdout(mtn(unpack(a)), mtn2(unpack(a)))
249 else
250 err("bad arguments ("..type(a)..", "..type(b)..", "..type(c)..") to check_same_stdout")
251 end
252end
253function check_different_stdout(a, b, c)
254 if type(a) == "table" and type(b) == "table" then
255 return do_check_different_stdout(a, b)
256 elseif type(a) == "table" and type(b) == "function" and type(c) == "function" then
257 return do_check_different_stdout(b(unpack(a)), c(unpack(a)))
258 elseif type(a) == "table" and type(b) == "nil" and type(c) == "nil" then
259 return do_check_different_stdout(mtn(unpack(a)), mtn2(unpack(a)))
260 else
261 err("bad arguments ("..type(a)..", "..type(b)..", "..type(c)..") to check_different_stdout")
262 end
263end
264
265function write_large_file(name, size)
266 local file = io.open(name, "wb")
267 for i = 1,size do
268 for j = 1,128 do -- write 1MB
269 local str8k = ""
270 for k = 1,256 do
271 -- 32
272 str8k = str8k .. string.char(math.random(255), math.random(255),
273 math.random(255), math.random(255),
274 math.random(255), math.random(255),
275 math.random(255), math.random(255),
276 math.random(255), math.random(255),
277 math.random(255), math.random(255),
278 math.random(255), math.random(255),
279 math.random(255), math.random(255),
280 math.random(255), math.random(255),
281 math.random(255), math.random(255),
282 math.random(255), math.random(255),
283 math.random(255), math.random(255),
284 math.random(255), math.random(255),
285 math.random(255), math.random(255),
286 math.random(255), math.random(255),
287 math.random(255), math.random(255))
288 end
289 file:write(str8k)
290 end
291 end
292 file:close()
293end
294
295------------------------------------------------------------------------
296--====================================================================--
297------------------------------------------------------------------------
298testdir = srcdir.."/tests"
299
300table.insert(tests, "basic_invocation_and_options")
301table.insert(tests, "scanning_trees")
302table.insert(tests, "importing_a_file")
303table.insert(tests, "generating_and_extracting_keys_and_certs")
304table.insert(tests, "calculation_of_unidiffs")
305table.insert(tests, "persistence_of_passphrase")
306table.insert(tests, "multiple_version_committing")
307table.insert(tests, "creating_a_fork")
308table.insert(tests, "creating_a_fork_and_updating")
309table.insert(tests, "creating_a_fork_and_merging")
310table.insert(tests, "merging_adds")
311table.insert(tests, "merging_data_in_unrelated_files")
312table.insert(tests, "merging_adds_in_unrelated_revisions")
313table.insert(tests, "merging_data_in_unrelated_revisions")
314table.insert(tests, "calculation_of_other_unidiffs")
315table.insert(tests, "delete_work_file_on_checkout")
316table.insert(tests, "revert_file_to_base_revision")
317table.insert(tests, "addition_of_files_and_directories")
318table.insert(tests, "add_and_then_drop_file_does_nothing")
319table.insert(tests, "drop_missing_and_unknown_files")
320table.insert(tests, "creating_a_bad_criss-cross_merge")
321table.insert(tests, "renaming_a_file")
322table.insert(tests, "renaming_a_directory")
323table.insert(tests, "renaming_and_editing_a_file")
324table.insert(tests, "importing_cvs_files")
325table.insert(tests, "importing_files_with_non-english_names")
326table.insert(tests, "external_unit_test_of_the_line_merger")
327table.insert(tests, "exchanging_work_via_netsync")
328table.insert(tests, "single_manifest_netsync")
329table.insert(tests, "netsync_transfers_public_keys")
330table.insert(tests, "repeatedly_exchanging_work_via_netsync")
331table.insert(tests, "(normal)_netsync_on_partially_unrelated_revisions")
332table.insert(tests, "disapproving_of_a_revision")
333table.insert(tests, "creating_a_good_and_bad_test_result")
334table.insert(tests, "importing_a_cvs_file_with_one_version")
335table.insert(tests, "list_missing_files")
336table.insert(tests, "attr_set_get_commands")
337table.insert(tests, "single_character_filename_support")
338table.insert(tests, "manifest_restrictions")
339table.insert(tests, "subdirectory_restrictions")
340table.insert(tests, "renaming_a_patched_file")
341table.insert(tests, "renaming_a_deleted_file")
342table.insert(tests, "merging_a_rename_twice")
343table.insert(tests, "updating_from_a_merge_which_adds_a_file")
344table.insert(tests, "changing_passphrase_of_a_private_key")
345table.insert(tests, "diffing_a_revision_with_an_added_file")
346table.insert(tests, "updating_to_a_given_revision")
347table.insert(tests, "heads")
348table.insert(tests, "heads_with_discontinuous_branches")
349table.insert(tests, "test_a_merge")
350table.insert(tests, "test_a_merge_2")
351table.insert(tests, "tags_and_tagging_of_revisions")
352table.insert(tests, "mtn_add_dot")
353table.insert(tests, "(minor)_update_cleans_emptied_directories")
354table.insert(tests, "merging_(add_a)_with_(add_a,_drop_a)")
355table.insert(tests, "merging_an_add_edge")
356table.insert(tests, "merge((),_(patch_a,_drop_a,_add_a))")
357table.insert(tests, "merge((),_(add_a,_drop_a,_add_a))")
358table.insert(tests, "merge((add_a),_(add_a,_drop_a,_add_a))")
359table.insert(tests, "merge((),_(add_a,_patch_a,_drop_a,_add_a))")
360table.insert(tests, "merge((patch_a),_(drop_a,_add_a))")
361table.insert(tests, "merge_multiple_heads_1")
362table.insert(tests, "explicit_merge")
363table.insert(tests, "update_with_multiple_candidates")
364table.insert(tests, "checkout_validates_target_directory")
365table.insert(tests, "checkout_creates_right__MTN_options")
366table.insert(tests, "trust_hooks_and_trusted_command")
367table.insert(tests, "attr_set_attr_get")
368table.insert(tests, "--rcfile_requires_extant_file")
369table.insert(tests, "persistent_netsync_server_-_revs_&_certs")
370table.insert(tests, "persistent_netsync_server_-_keys")
371table.insert(tests, "first_extent_normalization_pass")
372table.insert(tests, "(imp)_deleting_directories")
373table.insert(tests, "schema_migration")
374table.insert(tests, "database_dump_load")
375table.insert(tests, "no-change_deltas_disappear")
376table.insert(tests, "merge((),_(drop_a,_rename_b_a,_patch_a))")
377table.insert(tests, "verification_of_command_line_options")
378table.insert(tests, "log_hides_deleted_renamed_files")
379table.insert(tests, "CRLF_line_normalization")
380table.insert(tests, "pull_a_netsync_branch_which_has_a_parent_from_another_branch")
381table.insert(tests, "(normal)_netsync_revision_with_no_certs")
382table.insert(tests, "check_same_db_contents_macro")
383table.insert(tests, "merge_rev_with_ancestor")
384table.insert(tests, "propagate_a_descendent")
385table.insert(tests, "propagate_an_ancestor")
386table.insert(tests, "status_with_missing_files")
387table.insert(tests, "(imp)_persistent_netsync_server_-_keys_2")
388table.insert(tests, "update_1")
389table.insert(tests, "(todo)_vcheck")
390table.insert(tests, "--db_with_parent_dir")
391table.insert(tests, "add_in_subdir")
392table.insert(tests, "(minor)_drop_in_subdir")
393table.insert(tests, "revert_in_subdirs")
394table.insert(tests, "rename_in_subdir")
395table.insert(tests, "attr_command_in_subdirs")
396table.insert(tests, "(normal)_update_across_discontinuity")
397table.insert(tests, "rename_dir_to_non-sibling")
398table.insert(tests, "merge_with_add,_rename_file,_and_rename_dir")
399table.insert(tests, "merge((rename_a_b),_(rename_a_c))")
400table.insert(tests, "merge((patch_foo_a),_(rename_foo__bar_))")
401table.insert(tests, "(imp)_merge((patch_foo_a),_(delete_foo_))")
402table.insert(tests, "revert_directories")
403table.insert(tests, "revert_renames")
404table.insert(tests, "revert_unchanged_file_preserves_mtime")
405table.insert(tests, "rename_cannot_overwrite_files")
406table.insert(tests, "failed_checkout_is_a_no-op")
407table.insert(tests, "(todo)_write_monotone-agent")
408table.insert(tests, "(todo)_design_approval_semantics")
409table.insert(tests, "committing_with_a_non-english_message")
410table.insert(tests, "warn_on_bad_restriction")
411table.insert(tests, "_MTN_revision_is_required")
412table.insert(tests, "update_no-ops_when_no_parent_revision")
413table.insert(tests, "branch-based_checkout")
414table.insert(tests, "db_load_must_create_a_new_db")
415table.insert(tests, "automate_automate_version")
416table.insert(tests, "automate_heads")
417table.insert(tests, "merge_normalization_edge_case")
418table.insert(tests, "(todo)_undo_update_command")
419table.insert(tests, "modification_of_an_empty_file")
420table.insert(tests, "largish_file")
421table.insert(tests, "files_with_intermediate__MTN_path_elements")
422table.insert(tests, "(minor)_test_a_merge_3")
423table.insert(tests, "(minor)_test_a_merge_4")
424table.insert(tests, "db_missing")
425table.insert(tests, "database_check")
426table.insert(tests, "(minor)_add_own_db")
427table.insert(tests, "can_execute_things")
428table.insert(tests, "diff_a_binary_file")
429table.insert(tests, "command_completion")
430table.insert(tests, "merge_rename_file_and_rename_dir")
431table.insert(tests, "diff_respects_restrictions")
432table.insert(tests, "cat_-r_REV_PATH")
433table.insert(tests, "netsync_client_absorbs_and_checks_epochs")
434table.insert(tests, "netsync_server_absorbs_and_checks_epochs")
435table.insert(tests, "netsync_epochs_are_not_sent_upstream_by_pull")
436table.insert(tests, "vars")
437table.insert(tests, "netsync_default_server_pattern")
438table.insert(tests, "netsync_default_server_pattern_setting")
439table.insert(tests, "netsync_client_absorbs_server_key")
440table.insert(tests, "netsync_verifies_server_keys")
441table.insert(tests, "test_a_merge_5")
442table.insert(tests, "empty_id_completion")
443table.insert(tests, "empty_string_as_a_path_name")
444table.insert(tests, "empty_environment")
445table.insert(tests, "short_options_work_correctly")
446table.insert(tests, "netsync_is_not_interrupted_by_SIGPIPE")
447table.insert(tests, "setup_creates__MTN_log")
448table.insert(tests, "checkout_creates__MTN_log")
449table.insert(tests, "commit_using__MTN_log")
450table.insert(tests, "commit_w_o__MTN_log_being_present")
451table.insert(tests, "commit_validation_lua_hook")
452table.insert(tests, "drop_a_public_key")
453table.insert(tests, "drop_a_public_and_private_key")
454table.insert(tests, "rename_moves_attributes")
455table.insert(tests, "automate_ancestors")
456table.insert(tests, "automate_descendents")
457table.insert(tests, "automate_erase_ancestors")
458table.insert(tests, "automate_toposort")
459table.insert(tests, "diff_in_a_never-committed_project")
460table.insert(tests, "automate_ancestry_difference")
461table.insert(tests, "automate_leaves")
462table.insert(tests, "log_--last=N_--next=N")
463table.insert(tests, "commit_using__MTN_log_and_--message")
464table.insert(tests, "check_that_--xargs_and_-(at)_behave_correctly")
465table.insert(tests, "db_execute")
466table.insert(tests, "sql_function_gunzip_(which_replaced_unpack)")
467table.insert(tests, "files_with_spaces_at_the_end")
468table.insert(tests, "inodeprints")
469table.insert(tests, "update_updates_inodeprints")
470table.insert(tests, "listing_workspace_manifests")
471table.insert(tests, "importing_cvs_files_with_identical_logs")
472table.insert(tests, "sticky_branches")
473table.insert(tests, "checkout_without_--branch_sets_branch")
474table.insert(tests, "netsync_largish_file")
475table.insert(tests, "update_to_off-branch_rev")
476table.insert(tests, "setup_checkout_touch_new__MTN_options_only")
477table.insert(tests, "renaming_a_directory_and_then_adding_a_new_with_the_old_name")
478table.insert(tests, "test_problematic_cvs_import")
479table.insert(tests, "cvs_import_with_file_added_on_a_branch")
480table.insert(tests, "use_get_linesep_conv_hook")
481table.insert(tests, "add_workspace_commit_in_another")
482table.insert(tests, "update_to_non-existent_rev")
483table.insert(tests, "--author,_--date")
484table.insert(tests, "update_does_not_stomp_non-monotone_files")
485table.insert(tests, "db_check_and_non-serious_errors")
486table.insert(tests, "db_kill_rev_locally_command")
487table.insert(tests, "drop_removes_attributes")
488table.insert(tests, "attr_drop")
489table.insert(tests, "log_--last=N_FILENAME")
490table.insert(tests, "attr_init_functions")
491table.insert(tests, "add_executable")
492table.insert(tests, "use_inodeprints_hook")
493table.insert(tests, "bad_packet_args")
494table.insert(tests, "commit_update_multiple_heads_message")
495table.insert(tests, "diffing_with_explicit_rev_same_as_wc_rev")
496table.insert(tests, "normalized_filenames")
497table.insert(tests, "workspace_inventory")
498table.insert(tests, "rename_file_to_dir")
499table.insert(tests, "replace_file_with_dir")
500table.insert(tests, "replace_dir_with_file")
501table.insert(tests, "automate_parents,_automate_children")
502table.insert(tests, "automate_graph")
503table.insert(tests, "files_with_non-utf8_data")
504table.insert(tests, "cvs_import,_file_dead_on_head_and_branch")
505table.insert(tests, "selecting_arbitrary_certs")
506table.insert(tests, "check_automate_select")
507table.insert(tests, "refresh_inodeprints")
508table.insert(tests, "test_a_merge_6")
509table.insert(tests, "test_annotate_command")
510table.insert(tests, "annotate_file_added_on_different_forks")
511table.insert(tests, "annotate_file_on_multirooted_branch")
512table.insert(tests, "netsync_badhost_gives_nice_error")
513table.insert(tests, "checking_a_few_command_specific_options")
514table.insert(tests, "annotate_where_one_parent_is_full_copy")
515table.insert(tests, "cvs_import,_deleted_file_invariant")
516table.insert(tests, "--rcfile=-")
517table.insert(tests, "mtn_up")
518table.insert(tests, "merge((drop_a),_(rename_a_b,_patch_b))")
519table.insert(tests, "fail_cleanly_on_unreadable__MTN_options")
520table.insert(tests, "importing_cvs_with_vendor_imports_and_branches")
521table.insert(tests, "commit_with_--message-file")
522table.insert(tests, "automate_attributes")
523table.insert(tests, "diff_against_empty_file")
524table.insert(tests, "netsync_permissions")
525table.insert(tests, "update_with_blocked_rename")
526table.insert(tests, "merge((drop_a),_(drop_a,_add_a))")
527table.insert(tests, "annotate_where_lineage_depends_on_traversal")
528table.insert(tests, "annotate_where_line_splits")
529table.insert(tests, "automate_certs")
530table.insert(tests, "check_later_and_earlier_selectors")
531table.insert(tests, "automate_stdio")
532table.insert(tests, "importing_a_small,_real_cvs_repository")
533table.insert(tests, "update_with_pending_drop")
534table.insert(tests, "update_with_pending_add")
535table.insert(tests, "update_with_pending_rename")
536table.insert(tests, "restricted_commit_with_inodeprints")
537table.insert(tests, "merge_manual_file")
538table.insert(tests, "revert_works_with_restrictions")
539table.insert(tests, "status")
540table.insert(tests, "a_tricky_cvs_repository_with_tags")
541table.insert(tests, "--rcfile=directory")
542table.insert(tests, "include()_and_includedir()_lua_functions")
543table.insert(tests, "lua_function_existsonpath")
544table.insert(tests, "db_kill_branch_certs_locally_command")
545table.insert(tests, "netsync_with_globs")
546table.insert(tests, "netsync,--set-default")
547table.insert(tests, "get_netsync_read_permitted")
548table.insert(tests, "serve_pull_with_--exclude")
549table.insert(tests, "netsync,--exclude,defaults")
550table.insert(tests, "ls_tags_with_ambiguous_tags")
551table.insert(tests, "db_kill_tag_locally")
552table.insert(tests, "diff_-rREV1_-rREV2_UNCHANGED-FILE")
553table.insert(tests, "b_and_t_selector_globbing")
554table.insert(tests, "diff_--external")
555table.insert(tests, "db_migrate_on_bad_schema")
556table.insert(tests, "list_branches")
557table.insert(tests, "database_check_for_normalization")
558table.insert(tests, "annotate_with_no_revs")
559table.insert(tests, "merging_(add_a,_rename_a_b)_with_(add_b)")
560table.insert(tests, "update_-b_foo_updates__MTN_options_correctly")
561table.insert(tests, "_MTN_files_handled_correctly_in_aborted_commit")
562table.insert(tests, "test_a_merge_7")
563table.insert(tests, "commit_writes_message_back_to__MTN_log")
564table.insert(tests, "log_--brief")
565table.insert(tests, "explicit_merge_LEFT_RIGHT_ANC_BRANCH")
566table.insert(tests, "drop_with_actual_removal")
567table.insert(tests, "rename_with_actual_file_rename")
568table.insert(tests, "mtn_read_FILE")
569table.insert(tests, "setup_on_existing_path")
570table.insert(tests, "things_in_.mtn-ignore_get_ignored")
571table.insert(tests, "automate_get_file")
572table.insert(tests, "automate_get_manifest_of")
573table.insert(tests, "automate_get_revision")
574table.insert(tests, "fail_cleanly_on_unreadable_db")
575table.insert(tests, "use_restrictions_with_--exclude")
576table.insert(tests, "use_restrictions_with_--exclude_and_inodeprints")
577table.insert(tests, "filenames_in_diff_after_rename")
578table.insert(tests, "key_management_without_a_database")
579table.insert(tests, "automate_keys")
580table.insert(tests, "diffing_a_file_within_revision_outside_a_workspace")
581table.insert(tests, "logging_a_file_within_revision_outside_a_workspace")
582table.insert(tests, "add_inside__MTN_")
583table.insert(tests, "annotate_file_whose_name_changed")
584table.insert(tests, "--confdir_option_and_get_confdir_lua_function_work")
585table.insert(tests, "database_is_closed_on_signal_exit")
586table.insert(tests, "update_-b_switches_branches_even_when_noop")
587table.insert(tests, "migrate_with_rosterify")
588table.insert(tests, "rosterify_migrates_file_dir_attrs")
589table.insert(tests, "db_rosterify_preserves_renames")
590table.insert(tests, "restrictions_when_pwd_is_mixed_case")
591table.insert(tests, "read_and_convert_old_privkey_packet")
592table.insert(tests, "restricted_commands_are_consistent")
593table.insert(tests, "rosterify_--drop-attr")
594table.insert(tests, "rosterify_on_a_db_with_1_rev")
595table.insert(tests, "b_and_h_selectors")
596table.insert(tests, "revert_ignored_files")
597table.insert(tests, "disallowing_persistence_of_passphrase")
598table.insert(tests, "db_data_format_checking")
599table.insert(tests, "rename_files_into_a_directory")
600table.insert(tests, "listing_changed_files")
601table.insert(tests, "revert_file_in_new_project")
602table.insert(tests, "db_kill_rev_locally_command_2")
603table.insert(tests, "log_--no-files_and_--merges")
604table.insert(tests, "importing_cvs_branches_with_correct_ancestory")
605table.insert(tests, "check_--log")
606table.insert(tests, "log_and_selectors_returning_multiple_rids")
607table.insert(tests, "pivot_root")
608table.insert(tests, "reverting_a_pivot_root")
609table.insert(tests, "updating_through_a_pivot_root")
610table.insert(tests, "db_rosterify_on_a_db_with_a_root_suture")
611table.insert(tests, "log_dir")
612table.insert(tests, "show_conflicts")
613table.insert(tests, "merge_a_project_into_a_subdirectory_of_an_unrelated_project")
614table.insert(tests, "restriction_excludes_parent_dir")
615table.insert(tests, "revert_moving_a_file_to_a_renamed_directory")
616table.insert(tests, "one-way_netsync_where_the_sink_has_more_epochs")
617table.insert(tests, "branch_handling_in_disapprove")
618table.insert(tests, "checking_that_certain_commands_ignores_the_contents_of__MTN_options")
619table.insert(tests, "exchanging_work_via_netsync,_with_notes")
620table.insert(tests, "db_rosterify_twice_gives_an_error_second_time")
621table.insert(tests, "_MTN_case-folding_security_patch")
622table.insert(tests, "rosterify_handles_.mt-ignore_files")
623table.insert(tests, "revert_file_blocked_by_unversioned_directory")
624table.insert(tests, "pid_file_cleanup")
625table.insert(tests, "rosterify_on_a_db_with_an_empty_manifest")
626table.insert(tests, "sync_server_--exclude_foo")
627table.insert(tests, "pid_file_and_log_handles_open_failures")
628table.insert(tests, "mtn_execute_attr_respects_umask")
629table.insert(tests, "setup_in_subdirectory")
630table.insert(tests, "test_the_help_command")
631table.insert(tests, "test_the_approve_command")
632table.insert(tests, "checkout_fails_with_multiple_heads")
633table.insert(tests, "ls_epochs")
634table.insert(tests, "test_some_hook_helper_functions")
635table.insert(tests, "do_not_log_the_result_of_hook_get_passphrase")
636table.insert(tests, "quiet_turns_off_tickers_but_not_warnings")
637table.insert(tests, "reallyquiet_turns_off_tickers_and_warnings")
638table.insert(tests, "escaped_selectors")
639table.insert(tests, "automate_get_base_revision_id")
640table.insert(tests, "automate_get_current_revision_id")
641table.insert(tests, "log_--diffs")
642table.insert(tests, "db_info_of_new_database")
643table.insert(tests, "automate_common_ancestors")
644table.insert(tests, "invalid_--root_settings")
645table.insert(tests, "netsync_over_pipes")
646table.insert(tests, "ls_unknown_of_unknown_subdir")
647table.insert(tests, "automate_branches")
648table.insert(tests, "merge_conflict_with_no_lca")
649table.insert(tests, "pluck_basics")
650table.insert(tests, "diff_output_formats")
651table.insert(tests, "pluck_lifecycle")
652table.insert(tests, "pluck_restricted")
653table.insert(tests, "revert_--missing_in_subdir")
654table.insert(tests, "restrictions_with_renames_and_adds")
655table.insert(tests, "diff_shows_renames")
656table.insert(tests, "dump_on_crash")
657table.insert(tests, "automate_tags")
658table.insert(tests, "restrictions_with_deletes")

Archive Download this file

Branches

Tags

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