From 8b9ce99762286116f21cd916f58d76821b24e156 Mon Sep 17 00:00:00 2001 From: Karishma Chadha <kchadha@scratch.mit.edu> Date: Mon, 16 May 2022 17:33:21 -0400 Subject: [PATCH] Add tests that serializing a costume does not save any data for assets that were missing when the project was first loaded --- test/integration/sb3_missing_svg.js | 10 ++++++++++ test/integration/sprite3_missing_svg.js | 8 ++++++++ 2 files changed, 18 insertions(+) diff --git a/test/integration/sb3_missing_svg.js b/test/integration/sb3_missing_svg.js index 9e1445f5a..150f97469 100644 --- a/test/integration/sb3_missing_svg.js +++ b/test/integration/sb3_missing_svg.js @@ -12,6 +12,7 @@ const makeTestStorage = require('../fixtures/make-test-storage'); const FakeRenderer = require('../fixtures/fake-renderer'); const readFileToBuffer = require('../fixtures/readProjectFile').readFileToBuffer; const VirtualMachine = require('../../src/index'); +const {serializeCostumes} = require('../../src/serialization/serialize-assets'); const projectUri = path.resolve(__dirname, '../fixtures/missing_svg.sb3'); const project = readFileToBuffer(projectUri); @@ -82,6 +83,15 @@ test('load and then save sb3 project with missing costume file', t => { // Test that we didn't save any data about the costume being broken t.notOk(missingCostume.broken); + t.end(); +}); + +test('serializeCostume does not save data for missing costume', t => { + const costumeDescs = serializeCostumes(vm.runtime); + t.equal(costumeDescs.length, 1); // Should only have one costume, the backdrop + + t.not(costumeDescs[0].fileName, `${missingCostumeAssetId}.svg`); + t.end(); process.nextTick(process.exit); }); diff --git a/test/integration/sprite3_missing_svg.js b/test/integration/sprite3_missing_svg.js index 70e3ab046..1df90dacc 100644 --- a/test/integration/sprite3_missing_svg.js +++ b/test/integration/sprite3_missing_svg.js @@ -12,6 +12,7 @@ const makeTestStorage = require('../fixtures/make-test-storage'); const FakeRenderer = require('../fixtures/fake-renderer'); const readFileToBuffer = require('../fixtures/readProjectFile').readFileToBuffer; const VirtualMachine = require('../../src/index'); +const {serializeCostumes} = require('../../src/serialization/serialize-assets'); // The particular project that we're loading doesn't matter for this test const projectUri = path.resolve(__dirname, '../fixtures/default.sb3'); @@ -80,6 +81,13 @@ test('load and then save sprite3 with missing vector costume file', t => { // Test that we didn't save any data about the costume being broken t.notOk(missingCostume.broken); + t.end(); +}); + +test('serializeCostume does not save data for missing costume', t => { + const costumeDescs = serializeCostumes(vm.runtime, vm.runtime.targets[2].id); + t.equal(costumeDescs.length, 0); + t.end(); process.nextTick(process.exit); });