mirror of
https://github.com/scratchfoundation/scratch-vm.git
synced 2025-06-06 02:24:47 -04:00
Add a test and fix for not serializing top-level variable reporters
This commit is contained in:
parent
122443a75f
commit
be65b615a2
3 changed files with 15 additions and 1 deletions
|
@ -325,7 +325,7 @@ const serializeBlocks = function (blocks) {
|
||||||
// a shadow block, and there are no blocks that reference it, otherwise
|
// a shadow block, and there are no blocks that reference it, otherwise
|
||||||
// they would have been compressed in the last pass)
|
// they would have been compressed in the last pass)
|
||||||
if (Array.isArray(serializedBlock) &&
|
if (Array.isArray(serializedBlock) &&
|
||||||
[VAR_PRIMITIVE, LIST_PRIMITIVE].indexOf(serializedBlock) < 0) {
|
[VAR_PRIMITIVE, LIST_PRIMITIVE].indexOf(serializedBlock[0]) < 0) {
|
||||||
log.warn(`Found an unexpected top level primitive with block ID: ${
|
log.warn(`Found an unexpected top level primitive with block ID: ${
|
||||||
blockID}; deleting it from serialized blocks.`);
|
blockID}; deleting it from serialized blocks.`);
|
||||||
delete obj[blockID];
|
delete obj[blockID];
|
||||||
|
|
BIN
test/fixtures/top-level-variable-reporter.sb2
vendored
Normal file
BIN
test/fixtures/top-level-variable-reporter.sb2
vendored
Normal file
Binary file not shown.
|
@ -7,6 +7,7 @@ const exampleProjectPath = path.resolve(__dirname, '../fixtures/clone-cleanup.sb
|
||||||
const commentsSB2ProjectPath = path.resolve(__dirname, '../fixtures/comments.sb2');
|
const commentsSB2ProjectPath = path.resolve(__dirname, '../fixtures/comments.sb2');
|
||||||
const commentsSB3ProjectPath = path.resolve(__dirname, '../fixtures/comments.sb3');
|
const commentsSB3ProjectPath = path.resolve(__dirname, '../fixtures/comments.sb3');
|
||||||
const commentsSB3NoDupeIds = path.resolve(__dirname, '../fixtures/comments_no_duplicate_id_serialization.sb3');
|
const commentsSB3NoDupeIds = path.resolve(__dirname, '../fixtures/comments_no_duplicate_id_serialization.sb3');
|
||||||
|
const variableReporterSB2ProjectPath = path.resolve(__dirname, '../fixtures/top-level-variable-reporter.sb2');
|
||||||
const FakeRenderer = require('../fixtures/fake-renderer');
|
const FakeRenderer = require('../fixtures/fake-renderer');
|
||||||
|
|
||||||
test('serialize', t => {
|
test('serialize', t => {
|
||||||
|
@ -236,3 +237,16 @@ test('getExtensionIdForOpcode', t => {
|
||||||
|
|
||||||
t.end();
|
t.end();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('(#1608) serializeBlocks maintains top level variable reporters', t => {
|
||||||
|
const vm = new VirtualMachine();
|
||||||
|
vm.loadProject(readFileToBuffer(variableReporterSB2ProjectPath))
|
||||||
|
.then(() => {
|
||||||
|
const blocks = vm.runtime.targets[0].blocks._blocks;
|
||||||
|
const result = sb3.serialize(vm.runtime).targets[0].blocks;
|
||||||
|
// Project should have 1 block, a top-level variable reporter
|
||||||
|
t.equal(Object.keys(blocks).length, 1);
|
||||||
|
t.equal(Object.keys(result).length, 1);
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue