decaffeinate initialize-test-window

This commit is contained in:
Tony Brix 2020-11-18 10:34:25 -06:00
parent 1f2f590c73
commit bd544cfd8d
2 changed files with 161 additions and 113 deletions

View File

@ -1,113 +0,0 @@
ipcHelpers = require './ipc-helpers'
{requireModule} = require './module-utils'
cloneObject = (object) ->
clone = {}
clone[key] = value for key, value of object
clone
module.exports = ({blobStore}) ->
{remote} = require 'electron'
exitWithStatusCode = (status) ->
remote.app.emit('will-quit')
remote.process.exit(status)
try
path = require 'path'
{ipcRenderer} = require 'electron'
getWindowLoadSettings = require './get-window-load-settings'
CompileCache = require './compile-cache'
AtomEnvironment = require '../src/atom-environment'
ApplicationDelegate = require '../src/application-delegate'
Clipboard = require '../src/clipboard'
TextEditor = require '../src/text-editor'
{updateProcessEnv} = require('./update-process-env')
require './electron-shims'
ipcRenderer.on 'environment', (event, env) ->
updateProcessEnv(env)
{testRunnerPath, legacyTestRunnerPath, headless, logFile, testPaths, env} = getWindowLoadSettings()
if headless
# Install console functions that output to stdout and stderr.
util = require 'util'
Object.defineProperties process,
stdout: {value: remote.process.stdout}
stderr: {value: remote.process.stderr}
console.log = (args...) -> process.stdout.write "#{util.format(args...)}\n"
console.error = (args...) -> process.stderr.write "#{util.format(args...)}\n"
else
# Show window synchronously so a focusout doesn't fire on input elements
# that are focused in the very first spec run.
remote.getCurrentWindow().show()
handleKeydown = (event) ->
# Reload: cmd-r / ctrl-r
if (event.metaKey or event.ctrlKey) and event.keyCode is 82
ipcHelpers.call('window-method', 'reload')
# Toggle Dev Tools: cmd-alt-i (Mac) / ctrl-shift-i (Linux/Windows)
if event.keyCode is 73 and (
(process.platform is 'darwin' and event.metaKey and event.altKey) or
(process.platform isnt 'darwin' and event.ctrlKey and event.shiftKey))
ipcHelpers.call('window-method', 'toggleDevTools')
# Close: cmd-w / ctrl-w
if (event.metaKey or event.ctrlKey) and event.keyCode is 87
ipcHelpers.call('window-method', 'close')
# Copy: cmd-c / ctrl-c
if (event.metaKey or event.ctrlKey) and event.keyCode is 67
atom.clipboard.write(window.getSelection().toString())
window.addEventListener('keydown', handleKeydown, {capture: true})
# Add 'exports' to module search path.
exportsPath = path.join(getWindowLoadSettings().resourcePath, 'exports')
require('module').globalPaths.push(exportsPath)
process.env.NODE_PATH = exportsPath # Set NODE_PATH env variable since tasks may need it.
updateProcessEnv(env)
# Set up optional transpilation for packages under test if any
FindParentDir = require 'find-parent-dir'
if packageRoot = FindParentDir.sync(testPaths[0], 'package.json')
packageMetadata = require(path.join(packageRoot, 'package.json'))
if packageMetadata.atomTranspilers
CompileCache.addTranspilerConfigForPath(packageRoot, packageMetadata.name, packageMetadata, packageMetadata.atomTranspilers)
document.title = "Spec Suite"
clipboard = new Clipboard
TextEditor.setClipboard(clipboard)
TextEditor.viewForItem = (item) -> atom.views.getView(item)
testRunner = requireModule(testRunnerPath)
legacyTestRunner = require(legacyTestRunnerPath)
buildDefaultApplicationDelegate = -> new ApplicationDelegate()
buildAtomEnvironment = (params) ->
params = cloneObject(params)
params.clipboard = clipboard unless params.hasOwnProperty("clipboard")
params.blobStore = blobStore unless params.hasOwnProperty("blobStore")
params.onlyLoadBaseStyleSheets = true unless params.hasOwnProperty("onlyLoadBaseStyleSheets")
atomEnvironment = new AtomEnvironment(params)
atomEnvironment.initialize(params)
TextEditor.setScheduler(atomEnvironment.views)
atomEnvironment
promise = testRunner({
logFile, headless, testPaths, buildAtomEnvironment, buildDefaultApplicationDelegate, legacyTestRunner
})
promise.then (statusCode) ->
exitWithStatusCode(statusCode) if getWindowLoadSettings().headless
catch error
if getWindowLoadSettings().headless
console.error(error.stack ? error)
exitWithStatusCode(1)
else
throw error

View File

@ -0,0 +1,161 @@
const ipcHelpers = require('./ipc-helpers');
const { requireModule } = require('./module-utils');
function cloneObject(object) {
const clone = {};
for (const key in object) {
clone[key] = object[key];
}
return clone;
}
module.exports = async function({ blobStore }) {
const { remote } = require('electron');
const getWindowLoadSettings = require('./get-window-load-settings');
const exitWithStatusCode = function(status) {
remote.app.emit('will-quit');
remote.process.exit(status);
};
try {
const path = require('path');
const { ipcRenderer } = require('electron');
const CompileCache = require('./compile-cache');
const AtomEnvironment = require('../src/atom-environment');
const ApplicationDelegate = require('../src/application-delegate');
const Clipboard = require('../src/clipboard');
const TextEditor = require('../src/text-editor');
const { updateProcessEnv } = require('./update-process-env');
require('./electron-shims');
ipcRenderer.on('environment', (event, env) => updateProcessEnv(env));
const {
testRunnerPath,
legacyTestRunnerPath,
headless,
logFile,
testPaths,
env
} = getWindowLoadSettings();
if (headless) {
// Install console functions that output to stdout and stderr.
const util = require('util');
Object.defineProperties(process, {
stdout: { value: remote.process.stdout },
stderr: { value: remote.process.stderr }
});
console.log = (...args) =>
process.stdout.write(`${util.format(...args)}\n`);
console.error = (...args) =>
process.stderr.write(`${util.format(...args)}\n`);
} else {
// Show window synchronously so a focusout doesn't fire on input elements
// that are focused in the very first spec run.
remote.getCurrentWindow().show();
}
const handleKeydown = function(event) {
// Reload: cmd-r / ctrl-r
if ((event.metaKey || event.ctrlKey) && event.keyCode === 82) {
ipcHelpers.call('window-method', 'reload');
}
// Toggle Dev Tools: cmd-alt-i (Mac) / ctrl-shift-i (Linux/Windows)
if (
event.keyCode === 73 &&
((process.platform === 'darwin' && event.metaKey && event.altKey) ||
(process.platform !== 'darwin' && event.ctrlKey && event.shiftKey))
) {
ipcHelpers.call('window-method', 'toggleDevTools');
}
// Close: cmd-w / ctrl-w
if ((event.metaKey || event.ctrlKey) && event.keyCode === 87) {
ipcHelpers.call('window-method', 'close');
}
// Copy: cmd-c / ctrl-c
if ((event.metaKey || event.ctrlKey) && event.keyCode === 67) {
atom.clipboard.write(window.getSelection().toString());
}
};
window.addEventListener('keydown', handleKeydown, { capture: true });
// Add 'exports' to module search path.
const exportsPath = path.join(
getWindowLoadSettings().resourcePath,
'exports'
);
require('module').globalPaths.push(exportsPath);
process.env.NODE_PATH = exportsPath; // Set NODE_PATH env variable since tasks may need it.
updateProcessEnv(env);
// Set up optional transpilation for packages under test if any
const FindParentDir = require('find-parent-dir');
const packageRoot = FindParentDir.sync(testPaths[0], 'package.json');
if (packageRoot) {
const packageMetadata = require(path.join(packageRoot, 'package.json'));
if (packageMetadata.atomTranspilers) {
CompileCache.addTranspilerConfigForPath(
packageRoot,
packageMetadata.name,
packageMetadata,
packageMetadata.atomTranspilers
);
}
}
document.title = 'Spec Suite';
const clipboard = new Clipboard();
TextEditor.setClipboard(clipboard);
TextEditor.viewForItem = item => atom.views.getView(item);
const testRunner = requireModule(testRunnerPath);
const legacyTestRunner = require(legacyTestRunnerPath);
const buildDefaultApplicationDelegate = () => new ApplicationDelegate();
const buildAtomEnvironment = function(params) {
params = cloneObject(params);
if (!params.hasOwnProperty('clipboard')) {
params.clipboard = clipboard;
}
if (!params.hasOwnProperty('blobStore')) {
params.blobStore = blobStore;
}
if (!params.hasOwnProperty('onlyLoadBaseStyleSheets')) {
params.onlyLoadBaseStyleSheets = true;
}
const atomEnvironment = new AtomEnvironment(params);
atomEnvironment.initialize(params);
TextEditor.setScheduler(atomEnvironment.views);
return atomEnvironment;
};
const statusCode = await testRunner({
logFile,
headless,
testPaths,
buildAtomEnvironment,
buildDefaultApplicationDelegate,
legacyTestRunner
});
if (getWindowLoadSettings().headless) {
exitWithStatusCode(statusCode);
}
} catch (error) {
if (getWindowLoadSettings().headless) {
console.error(error.stack || error);
exitWithStatusCode(1);
} else {
throw error;
}
}
};