|  | // Copyright 2020 the V8 project authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | /** | 
|  | * @fileoverview Test normalization. | 
|  | */ | 
|  |  | 
|  | 'use strict'; | 
|  |  | 
|  | const sinon = require('sinon'); | 
|  |  | 
|  | const helpers = require('./helpers.js'); | 
|  | const sourceHelpers = require('../source_helpers.js'); | 
|  |  | 
|  | const { ScriptMutator } = require('../script_mutator.js'); | 
|  |  | 
|  | const sandbox = sinon.createSandbox(); | 
|  |  | 
|  | function testLoad(testPath, expectedPath) { | 
|  | const mutator = new ScriptMutator({}, helpers.DB_DIR); | 
|  | const source = helpers.loadTestData(testPath); | 
|  | const dependencies = mutator.resolveInputDependencies([source]); | 
|  | const code = sourceHelpers.generateCode(source, dependencies); | 
|  | helpers.assertExpectedResult(expectedPath, code); | 
|  | } | 
|  |  | 
|  | describe('V8 dependencies', () => { | 
|  | it('test', () => { | 
|  | testLoad( | 
|  | 'mjsunit/test_load.js', | 
|  | 'mjsunit/test_load_expected.js'); | 
|  |  | 
|  | }); | 
|  | it('does not loop indefinitely', () => { | 
|  | testLoad( | 
|  | 'mjsunit/test_load_self.js', | 
|  | 'mjsunit/test_load_self_expected.js'); | 
|  | }); | 
|  | }); | 
|  |  | 
|  | describe('Chakra dependencies', () => { | 
|  | it('test', () => { | 
|  | testLoad( | 
|  | 'chakra/load.js', | 
|  | 'chakra/load_expected.js'); | 
|  | }); | 
|  | }); | 
|  |  | 
|  | describe('JSTest dependencies', () => { | 
|  | afterEach(() => { | 
|  | sandbox.restore(); | 
|  | }); | 
|  |  | 
|  | it('test', () => { | 
|  | const fakeStubs = sourceHelpers.loadSource( | 
|  | helpers.BASE_DIR, 'JSTests/fake_stub.js'); | 
|  | sandbox.stub(sourceHelpers, 'loadResource').callsFake(() => fakeStubs); | 
|  | testLoad('JSTests/load.js', 'JSTests/load_expected.js'); | 
|  | }); | 
|  | }); | 
|  |  | 
|  | describe('SpiderMonkey dependencies', () => { | 
|  | it('test', () => { | 
|  | testLoad( | 
|  | 'spidermonkey/test/load.js', | 
|  | 'spidermonkey/test/load_expected.js'); | 
|  | }); | 
|  | }); |