# HG changeset patch # User Matt Mackall # Date 1165730747 21600 # Node ID 3ba82c3f4bc324c54eaf21ee003db266a5e4a11a # Parent abaa2cd00d2b7dcaffb4c36b8dd305f510130d28 Add debuginstall command to do basic install tests diff -r abaa2cd00d2b -r 3ba82c3f4bc3 mercurial/commands.py --- a/mercurial/commands.py Sat Dec 09 12:46:01 2006 -0600 +++ b/mercurial/commands.py Sun Dec 10 00:05:47 2006 -0600 @@ -827,6 +827,87 @@ ui.write("\t%d -> %d\n" % (r.rev(pp[1]), i)) ui.write("}\n") +def debuginstall(ui): + '''test Mercurial installation''' + + problems = 0 + + # encoding + ui.status(_("Checking encoding (%s)...\n") % util._encoding) + try: + util.fromlocal("test") + except util.Abort, inst: + ui.write(" %s\n" % inst) + problems += 1 + + # compiled modules + ui.status(_("Checking extensions...\n")) + try: + import bdiff, mpatch, base85 + except Exception, inst: + ui.write(" %s\n" % inst) + ui.write(_(" One or more extensions could not be found," + " check your build.\n")) + problems += 1 + + # templates + ui.status(_("Checking templates...\n")) + try: + import templater + t = templater.templater(templater.templatepath("map-cmdline.default")) + except Exception, inst: + ui.write(" %s\n" % inst) + problems += 1 + + # patch + ui.status(_("Checking patch...\n")) + path = os.environ.get('PATH', '') + patcher = util.find_in_path('gpatch', path, + util.find_in_path('patch', path, None)) + if not patcher: + ui.write(_(" Can't find patch or gpatch in PATH\n")) + problems += 1 + # should actually attempt a patch here + + # merge helper + ui.status(_("Checking merge helper...\n")) + cmd = (os.environ.get("HGMERGE") or ui.config("ui", "merge") + or "hgmerge") + cmdpath = util.find_in_path(cmd, path) + if not cmdpath: + cmdpath = util.find_in_path(cmd.split()[0], path) + if not cmdpath: + if cmd == 'hgmerge': + ui.write(_(" No merge helper set and can't find default" + " hgmerge script in PATH\n")) + else: + ui.write(_(" Can't find merge helper '%s' in PATH\n") % cmd) + problems += 1 + # should attempt a non-conflicting merge here + + # editor + ui.status(_("Checking commit editor...\n")) + editor = (os.environ.get("HGEDITOR") or + ui.config("ui", "editor") or + os.environ.get("EDITOR", "vi")) + cmdpath = util.find_in_path(editor, path) + if not cmdpath: + cmdpath = util.find_in_path(editor.split()[0], path) + if not cmdpath: + if cmd == 'vi': + ui.write(_(" No commit editor set and can't find vi in PATH\n")) + else: + ui.write(_(" Can't find editor '%s' in PATH\n") % editor) + problems += 1 + + if not problems: + ui.status(_("No problems detected\n")) + else: + ui.write(_("%s problems detected," + " please check your install!\n") % problems) + + return problems + def debugrename(ui, repo, file1, *pats, **opts): """dump rename information""" @@ -2524,6 +2605,7 @@ (debugcomplete, [('o', 'options', None, _('show the command options'))], _('debugcomplete [-o] CMD')), + "debuginstall": (debuginstall, [], _('debuginstall')), "debugrebuildstate": (debugrebuildstate, [('r', 'rev', '', _('revision to rebuild to'))], @@ -2787,7 +2869,7 @@ } norepo = ("clone init version help debugancestor debugcomplete debugdata" - " debugindex debugindexdot debugdate") + " debugindex debugindexdot debugdate debuginstall") optionalrepo = ("paths serve showconfig") def findpossible(ui, cmd): diff -r abaa2cd00d2b -r 3ba82c3f4bc3 tests/test-debugcomplete.out --- a/tests/test-debugcomplete.out Sat Dec 09 12:46:01 2006 -0600 +++ b/tests/test-debugcomplete.out Sun Dec 10 00:05:47 2006 -0600 @@ -64,6 +64,7 @@ debugdate debugindex debugindexdot +debuginstall debugrawcommit debugrebuildstate debugrename diff -r abaa2cd00d2b -r 3ba82c3f4bc3 tests/test-install --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-install Sun Dec 10 00:05:47 2006 -0600 @@ -0,0 +1,3 @@ +#!/bin/sh + +hg debuginstall diff -r abaa2cd00d2b -r 3ba82c3f4bc3 tests/test-install.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-install.out Sun Dec 10 00:05:47 2006 -0600 @@ -0,0 +1,7 @@ +Checking encoding (ascii)... +Checking extensions... +Checking templates... +Checking patch... +Checking merge helper... +Checking commit editor... +No problems detected