diff --git a/platformio/package/manifest/schema.py b/platformio/package/manifest/schema.py index 11d3f902..3502550a 100644 --- a/platformio/package/manifest/schema.py +++ b/platformio/package/manifest/schema.py @@ -149,7 +149,13 @@ class ExampleSchema(StrictSchema): class ManifestSchema(BaseSchema): # Required fields - name = fields.Str(required=True, validate=validate.Length(min=1, max=100)) + name = fields.Str( + required=True, + validate=[ + validate.Length(min=1, max=100), + validate.Regexp(r"^[^:/]+$", error="The next chars [:/] are not allowed"), + ], + ) version = fields.Str(required=True, validate=validate.Length(min=1, max=50)) # Optional fields diff --git a/tests/package/test_manifest.py b/tests/package/test_manifest.py index e497c0b4..73acfdaf 100644 --- a/tests/package/test_manifest.py +++ b/tests/package/test_manifest.py @@ -841,3 +841,7 @@ def test_broken_schemas(): version="1.2.3", ) ) + + # invalid package name + with pytest.raises(ManifestValidationError, match=("are not allowed")): + ManifestSchema().load_manifest(dict(name="C/C++ :library", version="1.2.3"))