예제 #1
0
 def test_npm_install_install(
     self,
     caplog: LogCaptureFixture,
     colorize: bool,
     fake_process: FakeProcess,
     is_noninteractive: bool,
     mocker: MockerFixture,
     runway_context: MockRunwayContext,
     tmp_path: Path,
     use_ci: bool,
 ) -> None:
     """Test npm_install install."""
     caplog.set_level(logging.INFO, logger=MODULE)
     mocker.patch(f"{MODULE}.use_npm_ci", return_value=use_ci)
     mocker.patch.object(RunwayModuleNpm, "check_for_npm")
     mocker.patch.object(RunwayModuleNpm, "warn_on_boto_env_vars")
     runway_context.env.ci = is_noninteractive
     runway_context.env.vars["RUNWAY_COLORIZE"] = str(colorize)
     cmd: List[Any] = [NPM_BIN, "install"]
     if not colorize:
         cmd.append("--no-color")
     fake_process.register_subprocess(cmd, returncode=0)
     RunwayModuleNpm(runway_context, module_root=tmp_path).npm_install()
     assert "running npm install..." in caplog.messages
     assert fake_process.call_count(cmd) == 1
예제 #2
0
 def test_init_npm_not_found(self, mocker: MockerFixture,
                             runway_context: MockRunwayContext,
                             tmp_path: Path) -> None:
     """Test __init__ raise NpmNotFound."""
     mock_check_for_npm = mocker.patch.object(RunwayModuleNpm,
                                              "check_for_npm",
                                              side_effect=NpmNotFound)
     mock_warn_on_boto_env_vars = mocker.patch.object(
         RunwayModuleNpm, "warn_on_boto_env_vars")
     with pytest.raises(NpmNotFound):
         RunwayModuleNpm(runway_context, module_root=tmp_path)
     mock_check_for_npm.assert_called_once()
     mock_warn_on_boto_env_vars.assert_not_called()
예제 #3
0
 def test_npm_install_skip(
     self,
     caplog: LogCaptureFixture,
     mocker: MockerFixture,
     runway_context: MockRunwayContext,
     tmp_path: Path,
 ) -> None:
     """Test npm_install skip."""
     caplog.set_level(logging.INFO, logger=MODULE)
     mocker.patch.object(RunwayModuleNpm, "check_for_npm")
     mocker.patch.object(RunwayModuleNpm, "warn_on_boto_env_vars")
     RunwayModuleNpm(runway_context,
                     module_root=tmp_path,
                     options={
                         "skip_npm_ci": True
                     }).npm_install()
     assert "skipped npm ci/npm install" in caplog.messages
예제 #4
0
 def test_log_npm_command(
     self,
     caplog: LogCaptureFixture,
     mocker: MockerFixture,
     runway_context: MockRunwayContext,
     tmp_path: Path,
 ) -> None:
     """Test log_npm_command."""
     caplog.set_level(logging.DEBUG, logger=MODULE)
     mock_format_npm_command_for_logging = mocker.patch(
         f"{MODULE}.format_npm_command_for_logging", return_value="success")
     mocker.patch.object(RunwayModuleNpm, "check_for_npm")
     mocker.patch.object(RunwayModuleNpm, "warn_on_boto_env_vars")
     obj = RunwayModuleNpm(runway_context, module_root=tmp_path)
     obj.log_npm_command(["test"])
     assert "node command: success" in caplog.messages
     mock_format_npm_command_for_logging.assert_called_once_with(["test"])
예제 #5
0
    def test_package_json_missing(
        self,
        caplog: LogCaptureFixture,
        mocker: MockerFixture,
        runway_context: MockRunwayContext,
        tmp_path: Path,
    ) -> None:
        """Test package_json_missing."""
        caplog.set_level(logging.DEBUG, logger=MODULE)
        mocker.patch.object(RunwayModuleNpm, "check_for_npm")
        mocker.patch.object(RunwayModuleNpm, "warn_on_boto_env_vars")
        obj = RunwayModuleNpm(context=runway_context, module_root=tmp_path)

        assert obj.package_json_missing()
        assert ["module is missing package.json"] == caplog.messages

        (tmp_path / "package.json").touch()
        assert not obj.package_json_missing()
예제 #6
0
 def test_init(self, mocker: MockerFixture,
               runway_context: MockRunwayContext, tmp_path: Path) -> None:
     """Test __init__."""
     mock_check_for_npm = mocker.patch.object(RunwayModuleNpm,
                                              "check_for_npm")
     mock_warn_on_boto_env_vars = mocker.patch.object(
         RunwayModuleNpm, "warn_on_boto_env_vars")
     obj = RunwayModuleNpm(
         runway_context,
         module_root=tmp_path,
         options={"options": "test"},
         parameters={"parameters": "test"},
     )
     assert obj.ctx == runway_context
     assert not obj.explicitly_enabled
     assert obj.logger
     assert obj.name == tmp_path.name
     assert obj.options == {"options": "test"}
     assert obj.parameters == {"parameters": "test"}
     assert obj.path == tmp_path
     mock_check_for_npm.assert_called_once_with(logger=obj.logger)
     mock_warn_on_boto_env_vars.assert_called_once_with(
         runway_context.env.vars, logger=obj.logger)