From 851c4cf720792abdd5f8a84a9810a996eca1c239 Mon Sep 17 00:00:00 2001 From: Konstantin Baierer Date: Wed, 2 Sep 2020 15:36:55 +0200 Subject: [PATCH 1/3] show help for no-arg processor calls, fix #562, fix #274 --- ocrd/ocrd/decorators/__init__.py | 5 +++++ tests/test_decorators.py | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ocrd/ocrd/decorators/__init__.py b/ocrd/ocrd/decorators/__init__.py index 833c6c1f4..b0882b295 100644 --- a/ocrd/ocrd/decorators/__init__.py +++ b/ocrd/ocrd/decorators/__init__.py @@ -30,6 +30,11 @@ def ocrd_cli_wrap_processor( overwrite=False, **kwargs ): + if not (dump_json or help or version or overwrite) and \ + mets == 'mets.xml' and \ + not (kwargs['input_file_grp'] or kwargs['output_file_grp']): + processorClass(workspace=None, show_help=True) + sys.exit(1) if dump_json or help or version: processorClass(workspace=None, dump_json=dump_json, show_help=help, show_version=version) sys.exit() diff --git a/tests/test_decorators.py b/tests/test_decorators.py index 92f4457fa..62928f9d2 100644 --- a/tests/test_decorators.py +++ b/tests/test_decorators.py @@ -68,7 +68,9 @@ def test_processor_no_mets(self): https://github.com/OCR-D/spec/pull/156 """ _, out_help, _ = self.invoke_cli(cli_dummy_processor, ['--help']) - exit_code, out_none, _ = self.invoke_cli(cli_dummy_processor, []) + exit_code, out_none, err = self.invoke_cli(cli_dummy_processor, []) + print("exit_code=%s\nout=%s\nerr=%s" % (exit_code, out_none, err)) + # assert 0 self.assertEqual(exit_code, 1) self.assertEqual(out_help, out_none) From 77fd2b4876cb30fbfb405dbafe06113d1d8e75a5 Mon Sep 17 00:00:00 2001 From: Konstantin Baierer Date: Mon, 21 Sep 2020 19:08:18 +0200 Subject: [PATCH 2/3] show help only if sys.argv[1:] is empty --- ocrd/ocrd/decorators/__init__.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/ocrd/ocrd/decorators/__init__.py b/ocrd/ocrd/decorators/__init__.py index b0882b295..1a5d6777b 100644 --- a/ocrd/ocrd/decorators/__init__.py +++ b/ocrd/ocrd/decorators/__init__.py @@ -30,9 +30,7 @@ def ocrd_cli_wrap_processor( overwrite=False, **kwargs ): - if not (dump_json or help or version or overwrite) and \ - mets == 'mets.xml' and \ - not (kwargs['input_file_grp'] or kwargs['output_file_grp']): + if not sys.argv[1:]: processorClass(workspace=None, show_help=True) sys.exit(1) if dump_json or help or version: @@ -40,9 +38,6 @@ def ocrd_cli_wrap_processor( sys.exit() else: LOG = getLogger('ocrd_cli_wrap_processor') - if not mets or (is_local_filename(mets) and not isfile(get_local_filename(mets))): - processorClass(workspace=None, show_help=True) - sys.exit(1) initLogging() # LOG.info('kwargs=%s' % kwargs) # Merge parameter overrides and parameters From ae20fdb78f22e15b74ecf4eb76e223eeb49fac22 Mon Sep 17 00:00:00 2001 From: Konstantin Baierer Date: Mon, 21 Sep 2020 19:38:52 +0200 Subject: [PATCH 3/3] tests/base: set sys.argv in self.invoke_cli --- tests/base.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/base.py b/tests/base.py index b788764f1..3d60e1d3c 100644 --- a/tests/base.py +++ b/tests/base.py @@ -45,6 +45,7 @@ def invoke_cli(self, cli, args): """ self.capture_out_err() # XXX snapshot just before executing the CLI code = 0 + sys.argv[1:] = args # XXX necessary because sys.argv reflects pytest args not cli args try: cli.main(args=args) except SystemExit as e: