chrome-devtools-frontend
Version:
Chrome DevTools UI
75 lines (60 loc) • 2.35 kB
text/typescript
// Copyright 2020 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.
import * as Host from '../host/host.js';
import * as ProtocolClient from './protocol_client.js';
describe('NodeURL', () => {
describe('platform detection for paths', () => {
it('works correctly on windows', () => {
const isWindows = true;
assert.isTrue(ProtocolClient.NodeURL.NodeURL.isPlatformPath('c:\\prog\\foobar.js', isWindows));
assert.isFalse(ProtocolClient.NodeURL.NodeURL.isPlatformPath('/usr/local/foobar.js', isWindows));
});
it('works correctly on linux', () => {
const isWindows = false;
assert.isFalse(ProtocolClient.NodeURL.NodeURL.isPlatformPath('c:\\prog\\foobar.js', isWindows));
assert.isTrue(ProtocolClient.NodeURL.NodeURL.isPlatformPath('/usr/local/foobar.js', isWindows));
});
});
describe('patch', () => {
const url = Host.Platform.isWin() ? 'C:\\prog\\foobar.js' : '/usr/local/home/prog/foobar.js';
const validPatchedUrl =
Host.Platform.isWin() ? 'file:///C:/prog/foobar.js' : 'file:///usr/local/home/prog/foobar.js';
it('does patch url fields', () => {
const object = {url, result: null};
ProtocolClient.NodeURL.NodeURL.patch(object);
assert.strictEqual(object.url, validPatchedUrl);
});
it('does not patch the url of the result', () => {
const object = {
url: '',
result: {
result: {
value: {url},
},
},
};
ProtocolClient.NodeURL.NodeURL.patch(object);
assert.strictEqual(object.result.result.value.url, url);
});
it('does patch all urls in an example protocol message', () => {
const object = {
exceptionDetails: {
url,
stackTrace: {
callFrames: [{
columnNumber: 0,
functionName: '',
lineNumber: 0,
scriptId: '0',
url,
}],
},
},
};
ProtocolClient.NodeURL.NodeURL.patch(object as unknown as {url: string});
assert.strictEqual(object.exceptionDetails.url, validPatchedUrl);
assert.strictEqual(object.exceptionDetails.stackTrace.callFrames[0].url, validPatchedUrl);
});
});
});