Esempio n. 1
0
    def test_must_validate_architecture(self):
        self.osutils.is_windows.side_effect = [False, False]
        self.osutils.popen.side_effect = [self.popen, self.popen]

        workflow = NodejsNpmEsbuildWorkflow(
            "source",
            "artifacts",
            "scratch",
            "manifest",
            options={"artifact_executable_name": "foo"},
            osutils=self.osutils,
            experimental_flags=[EXPERIMENTAL_FLAG_ESBUILD],
        )

        workflow_with_arm = NodejsNpmEsbuildWorkflow(
            "source",
            "artifacts",
            "scratch",
            "manifest",
            architecture=ARM64,
            osutils=self.osutils,
            experimental_flags=[EXPERIMENTAL_FLAG_ESBUILD],
        )

        self.assertEqual(workflow.architecture, "x86_64")
        self.assertEqual(workflow_with_arm.architecture, "arm64")
Esempio n. 2
0
    def test_workflow_sets_up_esbuild_actions_with_download_dependencies_without_dependencies_dir(
            self):
        self.osutils.file_exists.return_value = True

        workflow = NodejsNpmEsbuildWorkflow(
            "source",
            "artifacts",
            "scratch_dir",
            "manifest",
            osutils=self.osutils,
            experimental_flags=[EXPERIMENTAL_FLAG_ESBUILD],
        )

        self.assertEqual(len(workflow.actions), 3)
        self.assertIsInstance(workflow.actions[0], CopySourceAction)
        self.assertIsInstance(workflow.actions[1], NodejsNpmInstallAction)
        self.assertIsInstance(workflow.actions[2], EsbuildBundleAction)
Esempio n. 3
0
    def test_workflow_uses_npm_ci_if_lockfile_exists(self):

        self.osutils.file_exists.side_effect = [True, True]

        workflow = NodejsNpmEsbuildWorkflow(
            "source",
            "artifacts",
            "scratch_dir",
            "manifest",
            osutils=self.osutils,
            experimental_flags=[EXPERIMENTAL_FLAG_ESBUILD],
            options={"use_npm_ci": True},
        )

        self.assertEqual(len(workflow.actions), 3)
        self.assertIsInstance(workflow.actions[0], CopySourceAction)
        self.assertIsInstance(workflow.actions[1], NodejsNpmCIAction)
        self.assertIsInstance(workflow.actions[2], EsbuildBundleAction)
        self.osutils.file_exists.assert_has_calls(
            [call("source/package-lock.json")])
Esempio n. 4
0
    def test_sets_up_esbuild_search_path_from_npm_bin(self):

        self.popen.out = b"project/bin"

        workflow = NodejsNpmEsbuildWorkflow(
            "source",
            "artifacts",
            "scratch_dir",
            "manifest",
            osutils=self.osutils,
            experimental_flags=[EXPERIMENTAL_FLAG_ESBUILD],
        )

        self.osutils.popen.assert_called_with(["npm", "bin"],
                                              stdout="PIPE",
                                              stderr="PIPE",
                                              cwd="scratch_dir")
        esbuild = workflow.actions[2].subprocess_esbuild

        self.assertIsInstance(esbuild, SubprocessEsbuild)
        self.assertEqual(esbuild.executable_search_paths, ["project/bin"])
Esempio n. 5
0
    def test_workflow_doesnt_use_npm_ci_no_options_config(self):

        self.osutils.file_exists.side_effect = [True, False, True]

        workflow = NodejsNpmEsbuildWorkflow(
            "source",
            "artifacts",
            "scratch_dir",
            "manifest",
            osutils=self.osutils,
            experimental_flags=[EXPERIMENTAL_FLAG_ESBUILD],
        )

        self.assertEqual(len(workflow.actions), 3)
        self.assertIsInstance(workflow.actions[0], CopySourceAction)
        self.assertIsInstance(workflow.actions[1], NodejsNpmInstallAction)
        self.assertIsInstance(workflow.actions[2], EsbuildBundleAction)
        self.osutils.file_exists.assert_has_calls([
            call("source/package-lock.json"),
            call("source/npm-shrinkwrap.json")
        ])
Esempio n. 6
0
    def test_workflow_sets_up_esbuild_actions_with_download_dependencies_and_dependencies_dir_no_combine_deps(
            self):
        workflow = NodejsNpmEsbuildWorkflow(
            "source",
            "artifacts",
            "scratch_dir",
            "manifest",
            dependencies_dir="dep",
            download_dependencies=True,
            combine_dependencies=False,
            osutils=self.osutils,
            experimental_flags=[EXPERIMENTAL_FLAG_ESBUILD],
        )

        self.assertEqual(len(workflow.actions), 6)

        self.assertIsInstance(workflow.actions[0], CopySourceAction)
        self.assertIsInstance(workflow.actions[1], NodejsNpmInstallAction)
        self.assertIsInstance(workflow.actions[2], CleanUpAction)
        self.assertIsInstance(workflow.actions[3], EsbuildCheckVersionAction)
        self.assertIsInstance(workflow.actions[4], EsbuildBundleAction)
        self.assertIsInstance(workflow.actions[5], MoveDependenciesAction)