Add tests to handle command-line arguments
This commit is contained in:
@ -381,7 +381,7 @@ class ArgHandler(object):
|
|||||||
self.__import_action()
|
self.__import_action()
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def handle_args_cli(self, cleanup=True):
|
def handle_args_cli(self, cleanup=True, should_exit=True):
|
||||||
"""
|
"""
|
||||||
Depending on the given arguments, import or open data, launch
|
Depending on the given arguments, import or open data, launch
|
||||||
session, write files, and/or perform actions.
|
session, write files, and/or perform actions.
|
||||||
@ -398,19 +398,28 @@ class ArgHandler(object):
|
|||||||
|
|
||||||
print(_("%(full_DB_path)s with name \"%(f_t_name)s\"")
|
print(_("%(full_DB_path)s with name \"%(f_t_name)s\"")
|
||||||
% {'full_DB_path' : dirname, 'f_t_name' : name})
|
% {'full_DB_path' : dirname, 'f_t_name' : name})
|
||||||
sys.exit(0)
|
if should_exit:
|
||||||
|
sys.exit(0)
|
||||||
|
else:
|
||||||
|
return
|
||||||
|
|
||||||
# Handle the "-L" List Family Trees in detail option.
|
# Handle the "-L" List Family Trees in detail option.
|
||||||
if self.list_more:
|
if self.list_more:
|
||||||
self.dbman.print_family_tree_summaries()
|
self.dbman.print_family_tree_summaries()
|
||||||
sys.exit(0)
|
if should_exit:
|
||||||
|
sys.exit(0)
|
||||||
|
else:
|
||||||
|
return
|
||||||
|
|
||||||
# Handle the "-t" List Family Trees, tab delimited option.
|
# Handle the "-t" List Family Trees, tab delimited option.
|
||||||
if self.list_table:
|
if self.list_table:
|
||||||
print(_('Gramps Family Trees:'))
|
print(_('Gramps Family Trees:'))
|
||||||
summary_list = self.dbman.family_tree_summary()
|
summary_list = self.dbman.family_tree_summary()
|
||||||
if not summary_list:
|
if not summary_list:
|
||||||
sys.exit(0)
|
if should_exit:
|
||||||
|
sys.exit(0)
|
||||||
|
else:
|
||||||
|
return
|
||||||
# We have to construct the line elements together, to avoid
|
# We have to construct the line elements together, to avoid
|
||||||
# insertion of blank spaces when print on the same line is used
|
# insertion of blank spaces when print on the same line is used
|
||||||
line_list = [_("Family Tree")]
|
line_list = [_("Family Tree")]
|
||||||
@ -426,7 +435,10 @@ class ArgHandler(object):
|
|||||||
# translators: used in French+Russian, ignore otherwise
|
# translators: used in French+Russian, ignore otherwise
|
||||||
line_list += [(_('"%s"') % summary[item])]
|
line_list += [(_('"%s"') % summary[item])]
|
||||||
print("\t".join(line_list))
|
print("\t".join(line_list))
|
||||||
sys.exit(0)
|
if should_exit:
|
||||||
|
sys.exit(0)
|
||||||
|
else:
|
||||||
|
return
|
||||||
|
|
||||||
self.__open_action()
|
self.__open_action()
|
||||||
self.__import_action()
|
self.__import_action()
|
||||||
@ -447,7 +459,8 @@ class ArgHandler(object):
|
|||||||
if cleanup:
|
if cleanup:
|
||||||
self.cleanup()
|
self.cleanup()
|
||||||
print(_("Exiting."), file=sys.stderr)
|
print(_("Exiting."), file=sys.stderr)
|
||||||
sys.exit(0)
|
if should_exit:
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
def cleanup(self):
|
def cleanup(self):
|
||||||
print(_("Cleaning up."), file=sys.stderr)
|
print(_("Cleaning up."), file=sys.stderr)
|
||||||
|
@ -27,6 +27,11 @@ import re
|
|||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
from gramps.gen.const import TEMP_DIR
|
from gramps.gen.const import TEMP_DIR
|
||||||
|
from gramps.gen.dbstate import DbState
|
||||||
|
from ..grampscli import CLIManager
|
||||||
|
from ..user import User
|
||||||
|
from ..arghandler import ArgHandler
|
||||||
|
from ..argparser import ArgParser
|
||||||
|
|
||||||
test_ged = """0 HEAD
|
test_ged = """0 HEAD
|
||||||
1 SOUR min1r.ged min 1-rec
|
1 SOUR min1r.ged min 1-rec
|
||||||
@ -42,6 +47,9 @@ test_ged = """0 HEAD
|
|||||||
ddir = os.path.dirname(__file__)
|
ddir = os.path.dirname(__file__)
|
||||||
min1r = os.path.join(ddir, "min1r.ged")
|
min1r = os.path.join(ddir, "min1r.ged")
|
||||||
out_ged = os.path.join(ddir, "test_out.ged")
|
out_ged = os.path.join(ddir, "test_out.ged")
|
||||||
|
example_copy = os.path.join(ddir, "copy.gramps")
|
||||||
|
example = os.path.join(ddir, "..", "..", "..",
|
||||||
|
"example", "gramps", "data.gramps")
|
||||||
|
|
||||||
class Test(unittest.TestCase):
|
class Test(unittest.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
@ -155,6 +163,35 @@ class UnicodeTest(unittest.TestCase):
|
|||||||
self.assertEqual(self.newtitle, title, "Compare titles %s and %s" %
|
self.assertEqual(self.newtitle, title, "Compare titles %s and %s" %
|
||||||
(repr(self.newtitle), repr(title)))
|
(repr(self.newtitle), repr(title)))
|
||||||
|
|
||||||
|
class CLITest(unittest.TestCase):
|
||||||
|
def tearDown(self):
|
||||||
|
if os.path.exists(example_copy):
|
||||||
|
os.remove(example_copy)
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.tearDown()
|
||||||
|
self.dbstate = DbState()
|
||||||
|
#we need a manager for the CLI session
|
||||||
|
self.user = User(auto_accept=True, quiet=False)
|
||||||
|
self.climanager = CLIManager(self.dbstate, setloader=True, user=self.user)
|
||||||
|
#load the plugins
|
||||||
|
self.climanager.do_reg_plugins(self.dbstate, uistate=None)
|
||||||
|
|
||||||
|
def test1_cli(self):
|
||||||
|
# handle the arguments
|
||||||
|
argparser = ArgParser([None, "-C", "Test", "--import", example])
|
||||||
|
argparser.need_gui() # initializes some variables
|
||||||
|
handler = ArgHandler(self.dbstate, argparser, self.climanager)
|
||||||
|
# create a manager to manage the database
|
||||||
|
handler.handle_args_cli(should_exit=False)
|
||||||
|
|
||||||
|
def test2_cli(self):
|
||||||
|
# handle the arguments
|
||||||
|
argparser = ArgParser([None, "-O", "Test", "--export", example_copy])
|
||||||
|
argparser.need_gui() # initializes some variables
|
||||||
|
handler = ArgHandler(self.dbstate, argparser, self.climanager)
|
||||||
|
# create a manager to manage the database
|
||||||
|
handler.handle_args_cli(should_exit=False)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
Reference in New Issue
Block a user