Example #1
0
 def test_convert_runway_version(self) -> None:
     """Test _convert_runway_version."""
     assert RunwayConfigDefinitionModel(  # handle string
         runway_version=">1.11.0").runway_version == SpecifierSet(
             ">1.11.0", prereleases=True)
     assert RunwayConfigDefinitionModel(  # handle exact version
         runway_version="1.11.0").runway_version == SpecifierSet(
             "==1.11.0", prereleases=True)
     assert RunwayConfigDefinitionModel(  # handle SpecifierSet
         runway_version=SpecifierSet(
             ">1.11.0")).runway_version == SpecifierSet(">1.11.0",
                                                        prereleases=True)
     assert RunwayConfigDefinitionModel(  # handle SpecifierSet
         runway_version=SpecifierSet(
             ">1.11.0", prereleases=True)).runway_version == SpecifierSet(
                 ">1.11.0", prereleases=True)
Example #2
0
 def test_extra(self) -> None:
     """Test extra fields."""
     with pytest.raises(ValidationError) as excinfo:
         RunwayConfigDefinitionModel(invalid="something")
     errors = excinfo.value.errors()
     assert len(errors) == 1
     assert errors[0]["loc"] == ("invalid", )
     assert errors[0]["msg"] == "extra fields not permitted"
Example #3
0
 def test_field_defaults(self) -> None:
     """Test filed default values."""
     obj = RunwayConfigDefinitionModel()
     assert obj.deployments == []
     assert isinstance(obj.future, RunwayFutureDefinitionModel)
     assert not obj.ignore_git_branch
     assert obj.runway_version == SpecifierSet(">1.10", prereleases=True)
     assert obj.tests == []
     assert isinstance(obj.variables, RunwayVariablesDefinitionModel)
Example #4
0
def test_schema_runway_output(cd_tmp_path: Path) -> None:
    """Test ``runway schema runway --output runway-schema.json``."""
    file_path = cd_tmp_path / "runway-schema.json"
    result = CliRunner().invoke(cli, ["schema", "runway", "--output", file_path.name])
    assert result.exit_code == 0
    assert str(file_path) in result.output
    assert file_path.is_file()
    assert (
        file_path.read_text()
        == RunwayConfigDefinitionModel.schema_json(indent=4) + "\n"
    )
Example #5
0
    def test_parse_file(self, tmp_path: Path) -> None:
        """Test parse_file."""
        data = {
            "deployments": [
                {
                    "name": "test-name",
                    "modules": ["sampleapp.cfn"],
                    "regions": ["us-east-1"],
                },
            ]
        }
        runway_yml = tmp_path / "runway.yml"
        runway_yml.write_text(yaml.dump(data))

        obj = RunwayConfigDefinitionModel.parse_file(runway_yml)
        assert obj.deployments[0].modules[0].name == "sampleapp.cfn"
Example #6
0
def build_schema(cfngin: bool, runway: bool) -> None:
    """Build vscode-runway schemas.

    By default, both schemas are built.

    """
    if not runway:
        click.secho("building CFNgin schema...", fg="yellow")
        CFNGIN_SCHEMA.write_text(
            CfnginConfigDefinitionModel.schema_json(indent=4))
        click.secho(f"successfully output CFNgin schema to {CFNGIN_SCHEMA}",
                    fg="green")
    if not cfngin:
        click.secho("building Runway schema...", fg="yellow")
        RUNWAY_SCHEMA.write_text(
            RunwayConfigDefinitionModel.schema_json(indent=4))
        click.secho(f"successfully output Runway schema to {CFNGIN_SCHEMA}",
                    fg="green")
Example #7
0
 def test_add_deployment_names(self) -> None:
     """Test _add_deployment_names."""
     data = {
         "deployments": [
             {
                 "modules": ["sampleapp.cfn"],
                 "regions": ["us-east-1"]
             },
             {
                 "name": "test-name",
                 "modules": ["sampleapp.cfn"],
                 "regions": ["us-west-2"],
             },
         ]
     }
     obj = RunwayConfigDefinitionModel.parse_obj(data)
     # this also adds coverage for __getitem__
     assert obj["deployments"][0]["name"] == "deployment_1"
     assert obj["deployments"][1]["name"] == "test-name"
Example #8
0
def test_schema_runway_indent() -> None:
    """Test ``runway schema runway --indent 2``."""
    result = CliRunner().invoke(cli, ["schema", "runway", "--indent", "2"])
    assert result.exit_code == 0
    assert result.output == RunwayConfigDefinitionModel.schema_json(indent=2) + "\n"
Example #9
0
 def test_convert_runway_version_invalid(self) -> None:
     """Test _convert_runway_version invalid specifier set."""
     with pytest.raises(ValidationError) as excinfo:
         RunwayConfigDefinitionModel(runway_version="=latest")
     assert (excinfo.value.errors()[0]["msg"] ==
             "=latest is not a valid version specifier set")