diff --git a/aws_lambda_builders/workflows/nodejs_npm_esbuild/esbuild.py b/aws_lambda_builders/workflows/nodejs_npm_esbuild/esbuild.py index 209727720..09525bf9b 100644 --- a/aws_lambda_builders/workflows/nodejs_npm_esbuild/esbuild.py +++ b/aws_lambda_builders/workflows/nodejs_npm_esbuild/esbuild.py @@ -120,6 +120,7 @@ def run(self, args, cwd=None): SUPPORTED_ESBUILD_APIS_MULTI_VALUE = [ "external", "loader", + "out_extension", ] diff --git a/tests/integration/workflows/nodejs_npm_esbuild/test_nodejs_npm_with_esbuild.py b/tests/integration/workflows/nodejs_npm_esbuild/test_nodejs_npm_with_esbuild.py index b6b7e5dca..a9739841b 100644 --- a/tests/integration/workflows/nodejs_npm_esbuild/test_nodejs_npm_with_esbuild.py +++ b/tests/integration/workflows/nodejs_npm_esbuild/test_nodejs_npm_with_esbuild.py @@ -3,7 +3,6 @@ import tempfile from pathlib import Path from unittest import TestCase -from unittest.mock import patch from aws_lambda_builders.builder import LambdaBuilder from aws_lambda_builders.exceptions import WorkflowFailedError @@ -388,3 +387,23 @@ def test_includes_sourcemap_if_requested(self, runtime): expected_files = {"included.js", "included.js.map"} output_files = set(os.listdir(self.artifacts_dir)) self.assertEqual(expected_files, output_files) + + @parameterized.expand([("nodejs12.x",), ("nodejs14.x",), ("nodejs16.x",), ("nodejs18.x",)]) + def test_esbuild_produces_mjs_output_files(self, runtime): + source_dir = os.path.join(self.TEST_DATA_FOLDER, "with-deps-esbuild") + options = {"entry_points": ["included.js"], "sourcemap": True, "out_extension": [".js=.mjs"]} + + self.builder.build( + source_dir, + self.artifacts_dir, + self.scratch_dir, + os.path.join(source_dir, "package.json"), + runtime=runtime, + options=options, + experimental_flags=[], + executable_search_paths=[self.binpath], + ) + + expected_files = {"included.mjs", "included.mjs.map"} + output_files = set(os.listdir(self.artifacts_dir)) + self.assertEqual(expected_files, output_files) diff --git a/tests/unit/workflows/nodejs_npm_esbuild/test_esbuild.py b/tests/unit/workflows/nodejs_npm_esbuild/test_esbuild.py index f38b81b8f..f62fc3e54 100644 --- a/tests/unit/workflows/nodejs_npm_esbuild/test_esbuild.py +++ b/tests/unit/workflows/nodejs_npm_esbuild/test_esbuild.py @@ -200,6 +200,7 @@ def test_builds_args_from_config(self, osutils_mock): "target": "node14", "loader": [".proto=text", ".json=js"], "external": ["aws-sdk", "axios"], + "out_extension": [".js=.mjs"], "main_fields": "module,main", } @@ -219,6 +220,7 @@ def test_builds_args_from_config(self, osutils_mock): "--external:axios", "--loader:.proto=text", "--loader:.json=js", + "--out-extension:.js=.mjs", ], )