diff --git a/aws_lambda_builders/workflows/nodejs_npm/utils.py b/aws_lambda_builders/workflows/nodejs_npm/utils.py index 768b5e4bb..fe6ca1d4b 100644 --- a/aws_lambda_builders/workflows/nodejs_npm/utils.py +++ b/aws_lambda_builders/workflows/nodejs_npm/utils.py @@ -33,6 +33,9 @@ def extract_tarfile(self, tarfile_path, unpack_dir): def file_exists(self, filename): return os.path.isfile(filename) + def filename(self, filename): + return os.path.basename(filename) + def joinpath(self, *args): return os.path.join(*args) @@ -142,13 +145,15 @@ def package_local_dependency( dependency_tarfile_path = DependencyUtils.package_local_dependency( package_path, dep_path, dep_artifacts_dir, dep_scratch_dir, output_dir, osutils, subprocess_npm ) - dependency_tarfile_path = osutils.copy_file(dependency_tarfile_path, output_dir) - LOG.debug("NODEJS packed localized child dependency to %s", dependency_tarfile_path) + packaged_dependency_tarfile_path = osutils.joinpath(output_dir, osutils.filename(dependency_tarfile_path)) + osutils.copy_file(dependency_tarfile_path, output_dir) + + LOG.debug("NODEJS packed localized child dependency to %s", packaged_dependency_tarfile_path) LOG.debug("NODEJS updating package.json %s", local_manifest_path) - DependencyUtils.update_manifest(local_manifest_path, dep_name, dependency_tarfile_path, osutils) + DependencyUtils.update_manifest(local_manifest_path, dep_name, packaged_dependency_tarfile_path, osutils) if not top_level: localized_package_dir = osutils.joinpath(artifacts_dir, "package") @@ -167,7 +172,8 @@ def update_manifest(manifest_path, dep_name, dependency_tarfile_path, osutils): Helper function to update dependency path to localized tar """ - manifest_backup = osutils.copy_file(manifest_path, "{}.bak".format(manifest_path)) + manifest_backup = "{}.bak".format(manifest_path) + osutils.copy_file(manifest_path, manifest_backup) with osutils.open_file(manifest_backup, "r") as manifest_backup_file: manifest = json.loads(manifest_backup_file.read()) diff --git a/tests/functional/workflows/nodejs_npm/test_utils.py b/tests/functional/workflows/nodejs_npm/test_utils.py index 7eaeae811..988964e28 100644 --- a/tests/functional/workflows/nodejs_npm/test_utils.py +++ b/tests/functional/workflows/nodejs_npm/test_utils.py @@ -127,42 +127,52 @@ def test_popen_can_accept_cwd(self): def test_dir_exists(self): self.assertFalse(self.osutils.dir_exists("20201210_some_directory_that_should_not_exist")) - with tempfile.TemporaryDirectory() as temp_dir: - self.assertTrue(self.osutils.dir_exists(temp_dir)) + temp_dir = tempfile.mkdtemp() + + self.assertTrue(self.osutils.dir_exists(temp_dir)) + + shutil.rmtree(temp_dir) def test_mkdir_makes_directory(self): - dir_to_create = os.path.join( - tempfile._get_default_tempdir(), next(tempfile._get_candidate_names()) - ) # pylint: disable=protected-access + dir_to_create = os.path.join(tempfile.gettempdir(), "20201210_some_directory_that_should_not_exist") self.assertFalse(os.path.isdir(dir_to_create)) self.osutils.mkdir(dir_to_create) self.assertTrue(os.path.isdir(dir_to_create)) + + shutil.rmtree(dir_to_create) def test_open_file_opens_file_for_reading(self): - with tempfile.TemporaryDirectory() as temp_dir: - file_to_open = os.path.join(temp_dir, "test_open.txt") + temp_dir = tempfile.mkdtemp() + + file_to_open = os.path.join(temp_dir, "test_open.txt") + + with open(file_to_open, "w") as fid: + fid.write("this is text") - with open(file_to_open, "w") as fid: - fid.write("this is text") + with self.osutils.open_file(file_to_open) as fid: + content = fid.read() - with self.osutils.open_file(file_to_open) as fid: - content = fid.read() + self.assertEqual("this is text", content) + + shutil.rmtree(temp_dir) - self.assertEqual("this is text", content) def test_open_file_opens_file_for_writing(self): - with tempfile.TemporaryDirectory() as temp_dir: - file_to_open = os.path.join(temp_dir, "test_open.txt") + temp_dir = tempfile.mkdtemp() + + file_to_open = os.path.join(temp_dir, "test_open.txt") + + with self.osutils.open_file(file_to_open, "w") as fid: + fid.write("this is some other text") - with self.osutils.open_file(file_to_open, "w") as fid: - fid.write("this is some other text") + with self.osutils.open_file(file_to_open) as fid: + content = fid.read() - with self.osutils.open_file(file_to_open) as fid: - content = fid.read() + self.assertEqual("this is some other text", content) - self.assertEqual("this is some other text", content) + shutil.rmtree(temp_dir) class TestDependencyUtils(TestCase): diff --git a/tests/unit/workflows/nodejs_npm/test_actions.py b/tests/unit/workflows/nodejs_npm/test_actions.py index 879b6f66d..58c487ec9 100644 --- a/tests/unit/workflows/nodejs_npm/test_actions.py +++ b/tests/unit/workflows/nodejs_npm/test_actions.py @@ -1,4 +1,5 @@ from json import dumps +from os.path import basename from unittest import TestCase from mock import patch @@ -72,6 +73,7 @@ def test_tars_and_unpacks_npm_project(self, OSUtilMock, SubprocessNpmMock): osutils.dirname.side_effect = lambda value: "/dir:{}".format(value) osutils.abspath.side_effect = lambda value: "/abs:{}".format(value) osutils.joinpath.side_effect = lambda *args: "/".join(args) + osutils.filename.side_effect = lambda path: basename(path) osutils.open_file.side_effect = MockOpener().open subprocess_npm.run.return_value = "package.tar" @@ -118,6 +120,7 @@ def test_tars_and_unpacks_local_dependencies(self, OSUtilMock, SubprocessNpmMock osutils.dirname.side_effect = lambda value: "/dir:{}".format(value) osutils.abspath.side_effect = lambda value: "/abs:{}".format(value) osutils.joinpath.side_effect = lambda *args: "/".join(args) + osutils.filename.side_effect = lambda path: basename(path) osutils.open_file.side_effect = MockOpener(file_open_responses).open subprocess_npm.run.return_value = "package.tar"