forked from firefox-devtools/debugger
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtests-setup.js
More file actions
130 lines (106 loc) · 3.34 KB
/
tests-setup.js
File metadata and controls
130 lines (106 loc) · 3.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
// @flow
// $FlowIgnore
global.Worker = require("workerjs");
import path from "path";
// import getConfig from "../../bin/getConfig";
import { readFileSync } from "fs";
import Enzyme from "enzyme";
// $FlowIgnore
import Adapter from "enzyme-adapter-react-16";
import { setupHelper } from "../utils/dbg";
import { prefs } from "../utils/prefs";
import { startSourceMapWorker, stopSourceMapWorker } from "devtools-source-map";
import {
start as startPrettyPrintWorker,
stop as stopPrettyPrintWorker
} from "../workers/pretty-print";
import { ParserDispatcher } from "../workers/parser";
import {
start as startSearchWorker,
stop as stopSearchWorker
} from "../workers/search";
import { clearDocuments } from "../utils/editor";
import { clearHistory } from "./utils/history";
import env from "devtools-environment/test-flag";
env.testing = true;
const rootPath = path.join(__dirname, "../../");
function getL10nBundle() {
const read = file => readFileSync(path.join(rootPath, file));
try {
return read("./assets/panel/debugger.properties");
} catch (e) {
return read("../locales/en-US/debugger.properties");
}
}
global.DebuggerConfig = {};
global.L10N = require("devtools-launchpad").L10N;
global.L10N.setBundle(getL10nBundle());
global.jasmine.DEFAULT_TIMEOUT_INTERVAL = 20000;
global.performance = { now: () => 0 };
const { URL } = require("url");
global.URL = URL;
global.indexedDB = mockIndexeddDB();
Enzyme.configure({ adapter: new Adapter() });
function formatException(reason, p) {
console && console.log("Unhandled Rejection at:", p, "reason:", reason);
}
export const parserWorker = new ParserDispatcher();
beforeAll(() => {
startSourceMapWorker(
path.join(rootPath, "node_modules/devtools-source-map/src/worker.js"),
""
);
startPrettyPrintWorker(
path.join(rootPath, "src/workers/pretty-print/worker.js")
);
parserWorker.start(path.join(rootPath, "src/workers/parser/worker.js"));
startSearchWorker(path.join(rootPath, "src/workers/search/worker.js"));
process.on("unhandledRejection", formatException);
});
afterAll(() => {
stopSourceMapWorker();
stopPrettyPrintWorker();
parserWorker.stop();
stopSearchWorker();
process.removeListener("unhandledRejection", formatException);
});
afterEach(() => {});
beforeEach(async () => {
parserWorker.clear();
clearHistory();
clearDocuments();
prefs.projectDirectoryRoot = "";
// Ensures window.dbg is there to track telemetry
setupHelper({ selectors: {} });
});
function mockIndexeddDB() {
const store = {};
return {
open: () => ({}),
getItem: async key => store[key],
setItem: async (key, value) => {
store[key] = value;
}
};
}
// NOTE: We polyfill finally because TRY uses node 8
if (!global.Promise.prototype.finally) {
global.Promise.prototype.finally = function finallyPolyfill(callback) {
const constructor = this.constructor;
return this.then(
function(value) {
return constructor.resolve(callback()).then(function() {
return value;
});
},
function(reason) {
return constructor.resolve(callback()).then(function() {
throw reason;
});
}
);
};
}