From c0c491cffd9f4fd039aed5d5892367533eb819f7 Mon Sep 17 00:00:00 2001 From: David Straub Date: Sun, 6 Sep 2020 19:20:21 +0200 Subject: [PATCH 1/2] Add __main__.py --- gramps/__main__.py | 31 +++++++++++++++++++++++++++++++ gramps/cli/argparser.py | 2 +- po/POTFILES.skip | 1 + 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 gramps/__main__.py diff --git a/gramps/__main__.py b/gramps/__main__.py new file mode 100644 index 000000000..8d284818d --- /dev/null +++ b/gramps/__main__.py @@ -0,0 +1,31 @@ +#! /usr/bin/env python3 +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2012 Benny Malengier +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# + +"""This is a stub to start Gramps. + +It is provided to be able to start gramps as `python3 -m gramps`, +e.g. in a virtual environment. +""" + +import gramps.grampsapp as app + +if __name__ == "__main__": + app.main() diff --git a/gramps/cli/argparser.py b/gramps/cli/argparser.py index a2f934d64..514eb8b1d 100644 --- a/gramps/cli/argparser.py +++ b/gramps/cli/argparser.py @@ -54,7 +54,7 @@ from gramps.gen.const import GRAMPS_LOCALE as glocale _ = glocale.translation.gettext _HELP = _(""" -Usage: gramps.py [OPTION...] +Usage: gramps [OPTION...] --load-modules=MODULE1,MODULE2,... Dynamic modules to load Help options diff --git a/po/POTFILES.skip b/po/POTFILES.skip index 4f267660f..281ab9e8c 100644 --- a/po/POTFILES.skip +++ b/po/POTFILES.skip @@ -8,6 +8,7 @@ setup.py # gramps # gramps/__init__.py +gramps/__main__.py gramps/version.py # # cli From 1849f11e5da1b260207d479f70733c30a768e77c Mon Sep 17 00:00:00 2001 From: David Straub Date: Sun, 6 Sep 2020 19:44:31 +0200 Subject: [PATCH 2/2] Add unit test for python3 -m gramps --- gramps/cli/test/cli_test.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gramps/cli/test/cli_test.py b/gramps/cli/test/cli_test.py index e4955c3c6..3cb9ada10 100644 --- a/gramps/cli/test/cli_test.py +++ b/gramps/cli/test/cli_test.py @@ -94,6 +94,25 @@ class Test(unittest.TestCase): g = re.search("INDI", content) self.assertTrue(g, "found 'INDI' in output file") + def test2_exec_cli_m(self): + """Test the `python -m gramps` way to run the CLI.""" + ifile = min1r + ofile = out_ged + gcmd = [sys.executable, "-m", "gramps", "-i", ifile, "-e", ofile] + process = subprocess.Popen(gcmd, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + result_str, err_str = process.communicate() + self.assertEqual(process.returncode, 0, + "executed CLI command %r" % gcmd) + # simple validation o output + self.assertTrue(os.path.isfile(ofile), "output file created") + with open(ofile) as f: + content = f.read() + g = re.search("INDI", content) + self.assertTrue(g, "found 'INDI' in output file") + # this verifies that files in the temporary "import dir" # get cleaned before (and after) running a CLI # (eg cleanout stale files from prior crash-runs)