From eb40e78e533914fae9eb6a87d4a466bb1e2da573 Mon Sep 17 00:00:00 2001 From: Jacob Fuss <32497805+jfuss@users.noreply.github.com> Date: Mon, 10 Dec 2018 12:59:21 -0800 Subject: [PATCH] fix: Create scratch_dir in builder.py and bump version to 0.0.4.dev1 (#50) --- aws_lambda_builders/__init__.py | 2 +- aws_lambda_builders/builder.py | 3 +++ requirements/base.txt | 2 +- tests/functional/test_builder.py | 4 +++- tests/functional/test_cli.py | 4 +++- tests/unit/test_builder.py | 15 ++++++++++++++- 6 files changed, 25 insertions(+), 5 deletions(-) diff --git a/aws_lambda_builders/__init__.py b/aws_lambda_builders/__init__.py index 5f38ffaaa..80aebbfcc 100644 --- a/aws_lambda_builders/__init__.py +++ b/aws_lambda_builders/__init__.py @@ -1,5 +1,5 @@ """ AWS Lambda Builder Library """ -__version__ = '0.0.3' +__version__ = '0.0.4.dev1' RPC_PROTOCOL_VERSION = "0.1" diff --git a/aws_lambda_builders/builder.py b/aws_lambda_builders/builder.py index 57eda2f9a..1872bfe29 100644 --- a/aws_lambda_builders/builder.py +++ b/aws_lambda_builders/builder.py @@ -3,6 +3,7 @@ """ import importlib +import os import logging from aws_lambda_builders.registry import get_workflow, DEFAULT_REGISTRY @@ -93,6 +94,8 @@ def build(self, source_dir, artifacts_dir, scratch_dir, manifest_path, if runtime: self._validate_runtime(runtime) + if not os.path.exists(scratch_dir): + os.makedirs(scratch_dir) workflow = self.selected_workflow_cls(source_dir, artifacts_dir, diff --git a/requirements/base.txt b/requirements/base.txt index 09a93af1b..0150babf3 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1 +1 @@ -six~=1.11.0 +six~=1.11 diff --git a/tests/functional/test_builder.py b/tests/functional/test_builder.py index 39e79ad01..553887c0e 100644 --- a/tests/functional/test_builder.py +++ b/tests/functional/test_builder.py @@ -19,6 +19,7 @@ def setUp(self): self.source_dir = tempfile.mkdtemp() self.artifacts_dir = tempfile.mkdtemp() + self.scratch_dir = os.path.join(tempfile.mkdtemp(), "scratch") self.hello_builder = LambdaBuilder(language="test", dependency_manager="test", application_framework="test", @@ -34,6 +35,7 @@ def tearDown(self): self.hello_builder._clear_workflows() shutil.rmtree(self.source_dir) shutil.rmtree(self.artifacts_dir) + shutil.rmtree(self.scratch_dir) # Remove the workflows folder from PYTHONPATH sys.path.remove(self.TEST_WORKFLOWS_FOLDER) @@ -42,7 +44,7 @@ def test_run_hello_workflow(self): self.hello_builder.build(self.source_dir, self.artifacts_dir, - "/ignored", + self.scratch_dir, "/ignored") self.assertTrue(os.path.exists(self.expected_filename)) diff --git a/tests/functional/test_cli.py b/tests/functional/test_cli.py index f72180e78..275ccd411 100644 --- a/tests/functional/test_cli.py +++ b/tests/functional/test_cli.py @@ -19,6 +19,7 @@ def setUp(self): self.source_dir = tempfile.mkdtemp() self.artifacts_dir = tempfile.mkdtemp() + self.scratch_dir = os.path.join(tempfile.mkdtemp(), "scratch") # Capabilities supported by the Hello workflow self.language = "test" @@ -38,6 +39,7 @@ def setUp(self): def tearDown(self): shutil.rmtree(self.source_dir) shutil.rmtree(self.artifacts_dir) + shutil.rmtree(self.scratch_dir) @parameterized.expand([ ("request_through_stdin"), @@ -58,7 +60,7 @@ def test_run_hello_workflow(self, flavor): "supported_workflows": [self.HELLO_WORKFLOW_MODULE], "source_dir": self.source_dir, "artifacts_dir": self.artifacts_dir, - "scratch_dir": "/ignored", + "scratch_dir": self.scratch_dir, "manifest_path": "/ignored", "runtime": "ignored", "optimizations": {}, diff --git a/tests/unit/test_builder.py b/tests/unit/test_builder.py index 965f7bcce..f611fe1d4 100644 --- a/tests/unit/test_builder.py +++ b/tests/unit/test_builder.py @@ -1,6 +1,7 @@ from unittest import TestCase from mock import patch, call, Mock +from parameterized import parameterized, param from aws_lambda_builders.builder import LambdaBuilder from aws_lambda_builders.workflow import Capability, BaseWorkflow @@ -99,12 +100,19 @@ def setUp(self): self.lang_framework = "pip" self.app_framework = "chalice" + @parameterized.expand([ + param(True), + param(False) + ]) + @patch('aws_lambda_builders.builder.os') @patch('aws_lambda_builders.builder.importlib') @patch('aws_lambda_builders.builder.get_workflow') - def test_with_mocks(self, get_workflow_mock, importlib_mock): + def test_with_mocks(self, scratch_dir_exists, get_workflow_mock, importlib_mock, os_mock): workflow_cls = Mock() workflow_instance = workflow_cls.return_value = Mock() + os_mock.path.exists.return_value = scratch_dir_exists + get_workflow_mock.return_value = workflow_cls with patch.object(LambdaBuilder, "_validate_runtime"): @@ -116,3 +124,8 @@ def test_with_mocks(self, get_workflow_mock, importlib_mock): workflow_cls.assert_called_with("source_dir", "artifacts_dir", "scratch_dir", "manifest_path", runtime="runtime", optimizations="optimizations", options="options") workflow_instance.run.assert_called_once() + os_mock.path.exists.assert_called_once_with("scratch_dir") + if scratch_dir_exists: + os_mock.makedirs.not_called() + else: + os_mock.makedirs.assert_called_once_with("scratch_dir")