mirror of
https://github.com/scratchfoundation/scratch-parser.git
synced 2025-08-28 22:18:45 -04:00
fix(sb3_definitions): prevent sprites from being named _stage_
add test fixture and unit test for this change
This commit is contained in:
parent
72437ce6c0
commit
bea66d6c2d
4 changed files with 117 additions and 2 deletions
|
@ -347,7 +347,8 @@
|
|||
"description": "Description of property (and/or property/value pairs) for sprites.",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
"type": "string",
|
||||
"not": {"enum": ["_stage_"]}
|
||||
},
|
||||
"isStage": {
|
||||
"type": "boolean",
|
||||
|
|
4
test/fixtures/data.js
vendored
4
test/fixtures/data.js
vendored
|
@ -54,5 +54,7 @@ module.exports = {
|
|||
sprite2: sprite2,
|
||||
layerOrderSB3Json: fs.readFileSync(path.resolve(__dirname, './data/_layer_ordering.json')),
|
||||
invalidStageLayerSB3Json: fs.readFileSync(path.resolve(__dirname, './data/invalid/_invalid_stage_layer.json')),
|
||||
invalidSpriteLayerSB3Json: fs.readFileSync(path.resolve(__dirname, './data/invalid/_invalid_sprite_layer.json'))
|
||||
invalidSpriteLayerSB3Json: fs.readFileSync(path.resolve(__dirname, './data/invalid/_invalid_sprite_layer.json')),
|
||||
invalidSpriteNameSB3Json: fs.readFileSync(
|
||||
path.resolve(__dirname, './data/invalid/_invalid_spriteNamed_stage_.json'))
|
||||
};
|
||||
|
|
103
test/fixtures/data/invalid/_invalid_spriteNamed_stage_.json
vendored
Normal file
103
test/fixtures/data/invalid/_invalid_spriteNamed_stage_.json
vendored
Normal file
|
@ -0,0 +1,103 @@
|
|||
{
|
||||
"targets": [
|
||||
{
|
||||
"isStage": true,
|
||||
"name": "Stage",
|
||||
"variables": {
|
||||
"`jEk@4|i[#Fk?(8x)AV.-my variable": [
|
||||
"my variable",
|
||||
0
|
||||
]
|
||||
},
|
||||
"lists": {},
|
||||
"broadcasts": {},
|
||||
"blocks": {},
|
||||
"comments": {},
|
||||
"currentCostume": 0,
|
||||
"costumes": [
|
||||
{
|
||||
"assetId": "cd21514d0531fdffb22204e0ec5ed84a",
|
||||
"name": "backdrop1",
|
||||
"md5ext": "cd21514d0531fdffb22204e0ec5ed84a.svg",
|
||||
"dataFormat": "svg",
|
||||
"rotationCenterX": 240,
|
||||
"rotationCenterY": 180
|
||||
}
|
||||
],
|
||||
"sounds": [
|
||||
{
|
||||
"assetId": "83a9787d4cb6f3b7632b4ddfebf74367",
|
||||
"name": "pop",
|
||||
"dataFormat": "wav",
|
||||
"format": "",
|
||||
"rate": 44100,
|
||||
"sampleCount": 1032,
|
||||
"md5ext": "83a9787d4cb6f3b7632b4ddfebf74367.wav"
|
||||
}
|
||||
],
|
||||
"volume": 100,
|
||||
"layerOrder": 0,
|
||||
"tempo": 60,
|
||||
"videoTransparency": 50,
|
||||
"videoState": "on",
|
||||
"textToSpeechLanguage": null
|
||||
},
|
||||
{
|
||||
"isStage": false,
|
||||
"name": "_stage_",
|
||||
"variables": {},
|
||||
"lists": {},
|
||||
"broadcasts": {},
|
||||
"blocks": {},
|
||||
"comments": {},
|
||||
"currentCostume": 0,
|
||||
"costumes": [
|
||||
{
|
||||
"assetId": "b7853f557e4426412e64bb3da6531a99",
|
||||
"name": "costume1",
|
||||
"bitmapResolution": 1,
|
||||
"md5ext": "b7853f557e4426412e64bb3da6531a99.svg",
|
||||
"dataFormat": "svg",
|
||||
"rotationCenterX": 48,
|
||||
"rotationCenterY": 50
|
||||
},
|
||||
{
|
||||
"assetId": "e6ddc55a6ddd9cc9d84fe0b4c21e016f",
|
||||
"name": "costume2",
|
||||
"bitmapResolution": 1,
|
||||
"md5ext": "e6ddc55a6ddd9cc9d84fe0b4c21e016f.svg",
|
||||
"dataFormat": "svg",
|
||||
"rotationCenterX": 46,
|
||||
"rotationCenterY": 53
|
||||
}
|
||||
],
|
||||
"sounds": [
|
||||
{
|
||||
"assetId": "83c36d806dc92327b9e7049a565c6bff",
|
||||
"name": "Meow",
|
||||
"dataFormat": "wav",
|
||||
"format": "",
|
||||
"rate": 44100,
|
||||
"sampleCount": 37376,
|
||||
"md5ext": "83c36d806dc92327b9e7049a565c6bff.wav"
|
||||
}
|
||||
],
|
||||
"volume": 100,
|
||||
"layerOrder": 1,
|
||||
"visible": true,
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"size": 100,
|
||||
"direction": 90,
|
||||
"draggable": false,
|
||||
"rotationStyle": "all around"
|
||||
}
|
||||
],
|
||||
"monitors": [],
|
||||
"extensions": [],
|
||||
"meta": {
|
||||
"semver": "3.0.0",
|
||||
"vm": "0.2.0-prerelease.20181218172555",
|
||||
"agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"
|
||||
}
|
||||
}
|
|
@ -97,3 +97,12 @@ test('sb3 json with invalid layerOrder prop for sprite', function (t) {
|
|||
t.end();
|
||||
});
|
||||
});
|
||||
|
||||
// Sprites should not be named _stage_
|
||||
test('sb3 json with invalid sprite name', function (t) {
|
||||
validate(false, JSON.parse(data.invalidSpriteNameSB3Json), function (err, res) {
|
||||
t.type(err, 'object');
|
||||
t.type(res, 'undefined');
|
||||
t.end();
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue