Skip to content

Commit 8ccbae9

Browse files
authored
Fix #502: Capture Maven stderr in error messages (#822)
Maven error messages were being discarded because stderr was not captured. Now stderr is properly captured and displayed when Maven builds fail. Changes: - Modified build() and copy_dependency() to use stderr in error messages - Updated tests to verify stderr is captured correctly
1 parent 051c6ef commit 8ccbae9

2 files changed

Lines changed: 8 additions & 8 deletions

File tree

aws_lambda_builders/workflows/java_maven/maven.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,21 +28,21 @@ def __init__(self, maven_binary, os_utils=None):
2828

2929
def build(self, scratch_dir):
3030
args = ["clean", "install"]
31-
ret_code, stdout, _ = self._run(args, scratch_dir)
31+
ret_code, stdout, stderr = self._run(args, scratch_dir)
3232

3333
LOG.debug("Maven logs: %s", decode(stdout))
3434

3535
if ret_code != 0:
36-
raise MavenExecutionError(message=decode(stdout))
36+
raise MavenExecutionError(message=decode(stderr))
3737

3838
def copy_dependency(self, scratch_dir):
3939
include_scope = "runtime"
4040
LOG.debug("Running copy_dependency with scope: %s", include_scope)
4141
args = ["dependency:copy-dependencies", f"-DincludeScope={include_scope}", "-Dmdep.prependGroupId=true"]
42-
ret_code, stdout, _ = self._run(args, scratch_dir)
42+
ret_code, stdout, stderr = self._run(args, scratch_dir)
4343

4444
if ret_code != 0:
45-
raise MavenExecutionError(message=decode(stdout))
45+
raise MavenExecutionError(message=decode(stderr))
4646

4747
def _run(self, args, cwd=None):
4848
p = self.os_utils.popen(

tests/unit/workflows/java_maven/test_maven.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,12 @@ def test_build_project(self):
5050
)
5151

5252
def test_build_raises_exception_if_retcode_not_0(self):
53-
self.popen = FakePopen(retcode=1, out=b"Some Error Message")
53+
self.popen = FakePopen(retcode=1, err=b"Maven Error from stderr")
5454
self.os_utils.popen.side_effect = [self.popen]
5555
maven = SubprocessMaven(maven_binary=self.maven_binary, os_utils=self.os_utils)
5656
with self.assertRaises(MavenExecutionError) as err:
5757
maven.build(self.source_dir)
58-
self.assertEqual(err.exception.args[0], "Maven Failed: Some Error Message")
58+
self.assertEqual(err.exception.args[0], "Maven Failed: Maven Error from stderr")
5959

6060
def test_copy_dependency(self):
6161
maven = SubprocessMaven(maven_binary=self.maven_binary, os_utils=self.os_utils)
@@ -68,9 +68,9 @@ def test_copy_dependency(self):
6868
)
6969

7070
def test_copy_dependency_raises_exception_if_retcode_not_0(self):
71-
self.popen = FakePopen(retcode=1, out=b"Some Error Message")
71+
self.popen = FakePopen(retcode=1, err=b"Maven Error from stderr")
7272
self.os_utils.popen.side_effect = [self.popen]
7373
maven = SubprocessMaven(maven_binary=self.maven_binary, os_utils=self.os_utils)
7474
with self.assertRaises(MavenExecutionError) as err:
7575
maven.copy_dependency(self.source_dir)
76-
self.assertEqual(err.exception.args[0], "Maven Failed: Some Error Message")
76+
self.assertEqual(err.exception.args[0], "Maven Failed: Maven Error from stderr")

0 commit comments

Comments
 (0)