Skip to content

Commit 8d06cd2

Browse files
committed
Merge remote-tracking branch 'origin/master' into add-simple-test
Conflicts: - jgo/jgo.py
2 parents 4daa0a3 + c62b42d commit 8d06cd2

File tree

3 files changed

+21
-12
lines changed

3 files changed

+21
-12
lines changed

jgo.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ then
307307
check cat
308308
mainClass=$(cat "$workspace/mainClass")
309309
launchJava
310-
exit 0
310+
exit $?
311311
fi
312312

313313
# Synthesize a dummy Maven project.

jgo/jgo.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,8 @@ def launch_java(
189189
*app_args,
190190
additional_jars=[],
191191
stdout=None,
192-
stderr=None
192+
stderr=None,
193+
**subprocess_run_kwargs,
193194
):
194195
java = executable_path('java')
195196
if not java:
@@ -198,7 +199,7 @@ def launch_java(
198199
cp = classpath_separator().join([os.path.join(jar_dir, '*')] + additional_jars)
199200
_logger.debug("class path: %s", cp)
200201
jvm_args = tuple(arg for arg in jvm_args) if jvm_args else tuple()
201-
return subprocess.run((java, '-cp', cp) + jvm_args + (main_class,) + app_args, stdout=stdout, stderr=stderr)
202+
return subprocess.run((java, '-cp', cp) + jvm_args + (main_class,) + app_args, stdout=stdout, stderr=stderr, **subprocess_run_kwargs)
202203

203204
def run_and_combine_outputs(command, *args):
204205
return subprocess.check_output((command,) + args, stderr=subprocess.STDOUT)
@@ -213,7 +214,7 @@ def find_endpoint(argv, shortcuts={}):
213214
indices.append(index)
214215
return -1 if len(indices) == 0 else indices[-1]
215216

216-
def jgo_main(argv=sys.argv[1:], stdout=None, stderr=None):
217+
def jgo_parser():
217218

218219
epilog='''
219220
The endpoint should have one of the following formats:
@@ -246,18 +247,25 @@ def jgo_main(argv=sys.argv[1:], stdout=None, stderr=None):
246247
parser.add_argument('--ignore-jgorc', action='store_true', help='Ignore ~/.jgorc')
247248
parser.add_argument('--link-type', default=None, type=str, help='How to link from local maven repository into jgo cache. Defaults to the `links\' setting in ~/.jrunrc or \'auto\' if not specified.', choices=('hard', 'soft', 'copy', 'auto'))
248249

250+
return parser
251+
252+
def jgo_main(argv=sys.argv[1:], stdout=None, stderr=None):
253+
254+
parser = jgo_parser()
249255

250256
try:
251-
return run(parser, argv=argv, stdout=stdout, stderr=stderr)
257+
completed_process = run(parser, argv=argv, stdout=stdout, stderr=stderr)
258+
completed_process.check_returncode()
252259
except subprocess.CalledProcessError as e:
253-
_logger.error("Error in %s: %s", e.cmd, e)
260+
_logger.error("Error in `%s': %d", ' '.join(e.cmd), e.returncode)
261+
_logger.debug("Exception: %s", e)
254262
_logger.debug("Debug Trace:", exc_info=True)
255263
if e.stdout:
256-
_logger.debug("\tMaven std out:")
264+
_logger.debug("\tstd out:")
257265
for l in str(e.stdout).split('\\n'):
258266
_logger.debug('\t\t%s', l)
259267
if e.stderr:
260-
_logger.debug("Maven std err:")
268+
_logger.debug("\tstd err:")
261269
for l in str(e.stderr).split('\\n'):
262270
_logger.debug('\t\t%s', l)
263271
parser.print_help(file=sys.stderr)
@@ -547,7 +555,7 @@ def run(parser, argv=sys.argv[1:], stdout=None, stderr=None):
547555
try:
548556
with open(main_class_file, 'r') as f:
549557
main_class = f.readline()
550-
return launch_java(workspace, jvm_args, main_class, *program_args, additional_jars=args.additional_jars, stdout=stdout, stderr=stderr)
558+
return launch_java(workspace, jvm_args, main_class, *program_args, additional_jars=args.additional_jars, stdout=stdout, stderr=stderr, check=False)
551559
except FileNotFoundError:
552560
pass
553561

@@ -573,8 +581,7 @@ def run(parser, argv=sys.argv[1:], stdout=None, stderr=None):
573581
with open(main_class_file, 'w') as f:
574582
f.write(main_class)
575583

576-
577-
return launch_java(workspace, jvm_args, main_class, *program_args, additional_jars=args.additional_jars, stdout=stdout, stderr=stderr)
584+
return launch_java(workspace, jvm_args, main_class, *program_args, additional_jars=args.additional_jars, stdout=stdout, stderr=stderr, check=False)
578585

579586

580587

tests/test_parsington.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@
1818
PARSINGTON_ENDPOINT = 'org.scijava:parsington:{}'.format(PARSINGTON_VERSION)
1919

2020
def run_parsington(cache_dir, link_type, parsington_args):
21+
parser = jgo.jgo.jgo_parser()
2122
argv = (IGNORE_JGORC, LINK_TYPE, link_type, PARSINGTON_ENDPOINT) + parsington_args
2223
os.environ[jgo.jgo.jgo_cache_dir_environment_variable()] = cache_dir
23-
return jgo.jgo.jgo_main(argv=argv, stdout=subprocess.PIPE)
24+
return jgo.jgo.run(parser=parser, argv=argv, stdout=subprocess.PIPE)
2425

2526
def resolve_parsington(cache_dir, link_type, m2_repo):
2627
return jgo.resolve_dependencies(
@@ -92,6 +93,7 @@ def test_run_jgo(self):
9293

9394
try:
9495
completed_process = run_parsington(cache_dir=tmp_dir, link_type='auto', parsington_args=('1+3',))
96+
self.assertIsNotNone(completed_process)
9597
self.assertEqual(completed_process.returncode, 0, 'Expected return code zero.')
9698
self.assertEqual(completed_process.stdout.decode('ascii').strip(), str(1+3))
9799
finally:

0 commit comments

Comments
 (0)