Skip to content

Commit 7151aaa

Browse files
authored
Merge pull request #103 from awslabs/develop
chore: Release v0.2.1
2 parents b1e6624 + 8729f21 commit 7151aaa

File tree

9 files changed

+33
-71
lines changed

9 files changed

+33
-71
lines changed

.appveyor.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ install:
3030

3131
# setup go
3232
- rmdir c:\go /s /q
33-
- "choco install golang --version 1.11.5"
33+
- "choco install golang"
3434
- "choco install bzr"
3535
- "choco install dep"
3636
- setx PATH "C:\go\bin;C:\gopath\bin;C:\Program Files (x86)\Bazaar\;C:\Program Files\Mercurial;%PATH%;"

aws_lambda_builders/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
"""
22
AWS Lambda Builder Library
33
"""
4-
__version__ = '0.2.0'
4+
__version__ = '0.2.1'
55
RPC_PROTOCOL_VERSION = "0.2"

aws_lambda_builders/workflows/go_modules/validator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def validate(self, runtime_path):
5353
out_parts = out.decode().split()
5454
if len(out_parts) >= 3:
5555
version_parts = [int(x) for x in out_parts[2].replace(self.LANGUAGE, "").split('.')]
56-
if len(version_parts) == 3:
56+
if len(version_parts) >= 2:
5757
if version_parts[0] == expected_major_version and version_parts[1] >= min_expected_minor_version:
5858
self._valid_runtime_path = runtime_path
5959
return self._valid_runtime_path

aws_lambda_builders/workflows/java_maven/DESIGN.md

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,21 +71,17 @@ configured to use a different one than can be found on the PATH.
7171

7272
#### Step 3: Build and package
7373

74-
We leverage Maven to do all the heavy lifting for executing the`mvn package` which
74+
We leverage Maven to do all the heavy lifting for executing the`mvn clean install` which
7575
will resolve and download the dependencies and build the project. Built java classes
7676
will be located in `target/classes`. Then we use `mvn dependency:copy-dependenceis` to copy
7777
the dependencies and the dependencies will be located in `target/dependency` under the
7878
source directory.
7979

8080
```bash
81-
MODULE_NAME=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.artifactId}' exec:exec --non-recursive)
82-
mvn clean package -pl :MODULE_NAME -am
83-
mvn dependency:copy-dependencies -DincludeScope=compile -pl :MODULE_NAME
81+
mvn clean install
82+
mvn dependency:copy-dependencies -DincludeScope=compile
8483
```
8584

86-
Here `MODULE_NAME` is the `artifactId` defined in the pom.xml of the project. Maven
87-
will build the dependencies of that project in the reactor and then build the project itself.
88-
8985
#### Step 4: Copy to artifact directory
9086

9187
Built Java classes and dependencies are copied from `scratch_dir/target/classes` and `scratch_dir/target/dependency`

aws_lambda_builders/workflows/java_maven/actions.py

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,6 @@ def __init__(self,
2020
subprocess_maven):
2121
self.scratch_dir = scratch_dir
2222
self.subprocess_maven = subprocess_maven
23-
self.artifact_id = None
24-
25-
@property
26-
def module_name(self):
27-
if self.artifact_id is None:
28-
try:
29-
self.artifact_id = self.subprocess_maven.retrieve_module_name(self.scratch_dir)
30-
except MavenExecutionError as ex:
31-
raise ActionFailedError(str(ex))
32-
33-
return self.artifact_id
3423

3524

3625
class JavaMavenBuildAction(JavaMavenBaseAction, BaseAction):
@@ -48,8 +37,7 @@ def __init__(self,
4837

4938
def execute(self):
5039
try:
51-
self.subprocess_maven.build(self.scratch_dir,
52-
self.module_name)
40+
self.subprocess_maven.build(self.scratch_dir)
5341
except MavenExecutionError as ex:
5442
raise ActionFailedError(str(ex))
5543

@@ -69,8 +57,7 @@ def __init__(self,
6957

7058
def execute(self):
7159
try:
72-
self.subprocess_maven.copy_dependency(self.scratch_dir,
73-
self.module_name)
60+
self.subprocess_maven.copy_dependency(self.scratch_dir)
7461
except MavenExecutionError as ex:
7562
raise ActionFailedError(str(ex))
7663

aws_lambda_builders/workflows/java_maven/maven.py

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,28 +25,21 @@ def __init__(self, maven_binary, os_utils=None):
2525
raise ValueError("Must provide OSUtils")
2626
self.os_utils = os_utils
2727

28-
def retrieve_module_name(self, scratch_dir):
29-
args = ['-q', '-Dexec.executable=echo', '-Dexec.args=${project.artifactId}',
30-
'exec:exec', '--non-recursive']
31-
ret_code, stdout, stderr = self._run(args, scratch_dir)
32-
if ret_code != 0:
33-
raise MavenExecutionError(message=stderr.decode('utf8').strip())
34-
return stdout.decode('utf8').strip()
35-
36-
def build(self, scratch_dir, module_name):
37-
args = ['clean', 'install', '-pl', ':' + module_name, '-am']
38-
ret_code, stdout, stderr = self._run(args, scratch_dir)
28+
def build(self, scratch_dir):
29+
args = ['clean', 'install']
30+
ret_code, stdout, _ = self._run(args, scratch_dir)
3931

4032
LOG.debug("Maven logs: %s", stdout.decode('utf8').strip())
4133

4234
if ret_code != 0:
43-
raise MavenExecutionError(message=stderr.decode('utf8').strip())
35+
raise MavenExecutionError(message=stdout.decode('utf8').strip())
36+
37+
def copy_dependency(self, scratch_dir):
38+
args = ['dependency:copy-dependencies', '-DincludeScope=compile']
39+
ret_code, stdout, _ = self._run(args, scratch_dir)
4440

45-
def copy_dependency(self, scratch_dir, module_name):
46-
args = ['dependency:copy-dependencies', '-DincludeScope=compile', '-pl', ':' + module_name]
47-
ret_code, _, stderr = self._run(args, scratch_dir)
4841
if ret_code != 0:
49-
raise MavenExecutionError(message=stderr.decode('utf8').strip())
42+
raise MavenExecutionError(message=stdout.decode('utf8').strip())
5043

5144
def _run(self, args, cwd=None):
5245
p = self.os_utils.popen([self.maven_binary.binary_path] + args, cwd=cwd, stdout=subprocess.PIPE,

tests/unit/workflows/go_modules/test_validator.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ def test_runtime_validate_supported_version_runtime(self):
4040
self.validator.validate(runtime_path="/usr/bin/go")
4141
self.assertTrue(mock_subprocess.call_count, 1)
4242

43+
def test_runtime_validate_supported_higher_than_min_version_runtime(self):
44+
with mock.patch("subprocess.Popen") as mock_subprocess:
45+
mock_subprocess.return_value = MockSubProcess(0, out=b"go version go1.12 test")
46+
self.validator.validate(runtime_path="/usr/bin/go")
47+
self.assertTrue(mock_subprocess.call_count, 1)
48+
4349
def test_runtime_validate_mismatch_nonzero_exit(self):
4450
with mock.patch("subprocess.Popen") as mock_subprocess:
4551
mock_subprocess.return_value = MockSubProcess(1)

tests/unit/workflows/java_maven/test_actions.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,12 @@ def setUp(self, MockSubprocessMaven):
1414
self.subprocess_maven = MockSubprocessMaven.return_value
1515
self.scratch_dir = os.path.join('scratch_dir')
1616
self.artifacts_dir = os.path.join('artifacts_dir')
17-
self.module_name = "module"
1817

1918
def test_calls_maven_build(self):
20-
self.subprocess_maven.retrieve_module_name.side_effect = lambda scratch: self.module_name
2119
action = JavaMavenBuildAction(self.scratch_dir,
2220
self.subprocess_maven)
2321
action.execute()
24-
self.subprocess_maven.build.assert_called_with(self.scratch_dir, self.module_name)
22+
self.subprocess_maven.build.assert_called_with(self.scratch_dir)
2523

2624
def test_error_building_project_raises_action_error(self):
2725
self.subprocess_maven.build.side_effect = MavenExecutionError(message='Build failed!')
@@ -39,14 +37,12 @@ def setUp(self, MockSubprocessMaven):
3937
self.subprocess_maven = MockSubprocessMaven.return_value
4038
self.scratch_dir = os.path.join('scratch_dir')
4139
self.artifacts_dir = os.path.join('artifacts_dir')
42-
self.module_name = 'module_name'
4340

4441
def test_calls_maven_copy_dependency(self):
45-
self.subprocess_maven.retrieve_module_name.side_effect = lambda scratch: self.module_name
4642
action = JavaMavenCopyDependencyAction(self.scratch_dir,
4743
self.subprocess_maven)
4844
action.execute()
49-
self.subprocess_maven.copy_dependency.assert_called_with(self.scratch_dir, self.module_name)
45+
self.subprocess_maven.copy_dependency.assert_called_with(self.scratch_dir)
5046

5147
def test_error_building_project_raises_action_error(self):
5248
self.subprocess_maven.copy_dependency.side_effect = MavenExecutionError(message='Build failed!')

tests/unit/workflows/java_maven/test_maven.py

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -43,48 +43,32 @@ def test_no_maven_exec_init_throws(self):
4343
SubprocessMaven(None)
4444
self.assertEquals(err_assert.exception.args[0], 'Must provide Maven BinaryPath')
4545

46-
def test_retrieve_module_name(self):
47-
maven = SubprocessMaven(maven_binary=self.maven_binary, os_utils=self.os_utils)
48-
maven.retrieve_module_name(self.source_dir)
49-
self.os_utils.popen.assert_called_with(
50-
[self.maven_path, '-q', '-Dexec.executable=echo', '-Dexec.args=${project.artifactId}',
51-
'exec:exec', '--non-recursive'],
52-
cwd=self.source_dir, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
53-
54-
def test_retrieve_module_name_raises_exception_if_retcode_not_0(self):
55-
self.popen = FakePopen(retcode=1, err=b'Some Error Message')
56-
self.os_utils.popen.side_effect = [self.popen]
57-
maven = SubprocessMaven(maven_binary=self.maven_binary, os_utils=self.os_utils)
58-
with self.assertRaises(MavenExecutionError) as err:
59-
maven.retrieve_module_name(self.source_dir)
60-
self.assertEquals(err.exception.args[0], 'Maven Failed: Some Error Message')
61-
6246
def test_build_project(self):
6347
maven = SubprocessMaven(maven_binary=self.maven_binary, os_utils=self.os_utils)
64-
maven.build(self.source_dir, self.module_name)
48+
maven.build(self.source_dir)
6549
self.os_utils.popen.assert_called_with(
66-
[self.maven_path, 'clean', 'install', '-pl', ':' + self.module_name, '-am'],
50+
[self.maven_path, 'clean', 'install'],
6751
cwd=self.source_dir, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
6852

6953
def test_build_raises_exception_if_retcode_not_0(self):
70-
self.popen = FakePopen(retcode=1, err=b'Some Error Message')
54+
self.popen = FakePopen(retcode=1, out=b'Some Error Message')
7155
self.os_utils.popen.side_effect = [self.popen]
7256
maven = SubprocessMaven(maven_binary=self.maven_binary, os_utils=self.os_utils)
7357
with self.assertRaises(MavenExecutionError) as err:
74-
maven.build(self.source_dir, self.module_name)
58+
maven.build(self.source_dir)
7559
self.assertEquals(err.exception.args[0], 'Maven Failed: Some Error Message')
7660

7761
def test_copy_dependency(self):
7862
maven = SubprocessMaven(maven_binary=self.maven_binary, os_utils=self.os_utils)
79-
maven.copy_dependency(self.source_dir, self.module_name)
63+
maven.copy_dependency(self.source_dir)
8064
self.os_utils.popen.assert_called_with(
81-
[self.maven_path, 'dependency:copy-dependencies', '-DincludeScope=compile', '-pl', ':' + self.module_name],
65+
[self.maven_path, 'dependency:copy-dependencies', '-DincludeScope=compile'],
8266
cwd=self.source_dir, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
8367

8468
def test_copy_dependency_raises_exception_if_retcode_not_0(self):
85-
self.popen = FakePopen(retcode=1, err=b'Some Error Message')
69+
self.popen = FakePopen(retcode=1, out=b'Some Error Message')
8670
self.os_utils.popen.side_effect = [self.popen]
8771
maven = SubprocessMaven(maven_binary=self.maven_binary, os_utils=self.os_utils)
8872
with self.assertRaises(MavenExecutionError) as err:
89-
maven.copy_dependency(self.source_dir, self.module_name)
73+
maven.copy_dependency(self.source_dir)
9074
self.assertEquals(err.exception.args[0], 'Maven Failed: Some Error Message')

0 commit comments

Comments
 (0)