blob: 1d64dbd9fddf3c573bf67726ea8004e65afd8edb [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(async function() {
TestRunner.addResult(
`Checks that script evaluated twice with different source and the same sourceURL won't be diverged from VM.\n`);
await TestRunner.loadModule('sources_test_runner');
await TestRunner.showPanel('sources');
const scriptSource = '239\n//# sourceURL=test.js';
const changedScriptSource = '42\n//# sourceURL=test.js';
SourcesTestRunner.startDebuggerTest(step1);
function step1() {
SourcesTestRunner.waitForScriptSource('test.js', step2);
TestRunner.evaluateInPage(scriptSource);
}
function step2(uiSourceCode) {
TestRunner.addSnifferPromise(Bindings.ResourceScriptFile.prototype, '_mappingCheckedForTest')
.then(() => step3(uiSourceCode));
SourcesTestRunner.showScriptSource('test.js');
}
function step3(uiSourceCode) {
var debuggerModel = TestRunner.debuggerModel;
var scriptFile = Bindings.debuggerWorkspaceBinding.scriptFile(uiSourceCode, debuggerModel);
if (!scriptFile) {
TestRunner.addResult('[FAIL]: no script file for test.js');
SourcesTestRunner.completeDebuggerTest();
return;
}
if (scriptFile.hasDivergedFromVM() || scriptFile.isDivergingFromVM()) {
TestRunner.addResult('[FAIL]: script file is diverged from VM');
SourcesTestRunner.completeDebuggerTest();
return;
}
TestRunner
.addSnifferPromise(
Sources.DebuggerPlugin.prototype, '_didDivergeFromVM')
.then(dumpDivergeFromVM);
TestRunner.addSnifferPromise(Bindings.ResourceScriptFile.prototype, '_mappingCheckedForTest')
.then(() => SourcesTestRunner.completeDebuggerTest());
TestRunner.evaluateInPage(changedScriptSource);
}
function dumpDivergeFromVM() {
TestRunner.addResult('[FAIL]: script file was diverged from VM');
}
})();