build: speedy tests on circle by splitting the test files into multiple jobs (#21015)

* build: let circleci divide our test suites in two

* well our tests rely on side affects, thats cool I guess
This commit is contained in:
Samuel Attard 2019-11-06 16:15:55 -08:00 committed by GitHub
parent bbfb32b136
commit 24939e8fa4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 51 additions and 80 deletions

View file

@ -1,13 +1,9 @@
'use strict'
const chai = require('chai')
const dirtyChai = require('dirty-chai')
const { expect } = require('chai')
const { nativeImage } = require('electron')
const path = require('path')
const { expect } = chai
chai.use(dirtyChai)
describe('nativeImage module', () => {
const ImageFormat = {
PNG: 'png',

View file

@ -1,19 +1,15 @@
'use strict'
const chai = require('chai')
const dirtyChai = require('dirty-chai')
const { expect } = require('chai')
const path = require('path')
const { resolveGetters } = require('./expect-helpers')
const { ifdescribe } = require('./spec-helpers')
const { remote, ipcRenderer } = require('electron')
const { ipcMain, BrowserWindow } = remote
const { expect } = chai
const features = process.electronBinding('features')
chai.use(dirtyChai)
const comparePaths = (path1, path2) => {
if (process.platform === 'win32') {
path1 = path1.toLowerCase()

View file

@ -1,5 +1,4 @@
const chai = require('chai')
const dirtyChai = require('dirty-chai')
const { expect } = require('chai')
const fs = require('fs')
const path = require('path')
@ -7,9 +6,6 @@ const os = require('os')
const http = require('http')
const { shell } = require('electron')
const { expect } = chai
chai.use(dirtyChai)
describe('shell module', () => {
const fixtures = path.resolve(__dirname, 'fixtures')
const shortcutOptions = {

View file

@ -1,10 +1,6 @@
const chai = require('chai')
const dirtyChai = require('dirty-chai')
const { expect } = require('chai')
const { webFrame } = require('electron')
const { expect } = chai
chai.use(dirtyChai)
describe('webFrame module', function () {
it('supports setting the visual and layout zoom level limits', function () {
expect(() => {

View file

@ -1,5 +1,4 @@
const chai = require('chai')
const dirtyChai = require('dirty-chai')
const { expect } = require('chai')
const ChildProcess = require('child_process')
const fs = require('fs')
const path = require('path')
@ -9,9 +8,6 @@ const nativeImage = require('electron').nativeImage
const features = process.electronBinding('features')
const { expect } = chai
chai.use(dirtyChai)
async function expectToThrowErrorWithCode (func, code) {
let error
try {

View file

@ -1,5 +1,4 @@
const chai = require('chai')
const dirtyChai = require('dirty-chai')
const { expect } = require('chai')
const fs = require('fs')
const http = require('http')
const path = require('path')
@ -11,9 +10,6 @@ const { emittedOnce } = require('./events-helpers')
const { resolveGetters } = require('./expect-helpers')
const features = process.electronBinding('features')
const { expect } = chai
chai.use(dirtyChai)
/* Most of the APIs here don't use standard callbacks */
/* eslint-disable standard/no-callback-literal */

View file

@ -1,7 +1,5 @@
const ChildProcess = require('child_process')
const chai = require('chai')
const { expect } = chai
const dirtyChai = require('dirty-chai')
const { expect } = require('chai')
const fs = require('fs')
const path = require('path')
const os = require('os')
@ -11,8 +9,6 @@ const features = process.electronBinding('features')
const { emittedOnce } = require('./events-helpers')
const { ifit } = require('./spec-helpers')
chai.use(dirtyChai)
describe('node feature', () => {
const fixtures = path.join(__dirname, 'fixtures')

View file

@ -55,6 +55,8 @@
if (query.grep) mocha.grep(query.grep)
if (query.invert) mocha.invert()
const files = query.files ? query.files.split(',') : undefined
// Read all test files.
const walker = require('walkdir').walk(path.dirname(__dirname), {
no_recurse: true
@ -73,9 +75,20 @@
}
})
const baseElectronDir = path.resolve(__dirname, '..', '..')
walker.on('end', () => {
testFiles.sort()
testFiles.forEach((file) => mocha.addFile(file))
testFiles.forEach((file) => {
if (!files || files.includes(path.relative(baseElectronDir, file))) {
mocha.addFile(file)
}
})
// Set up chai in the correct order
const chai = require('chai')
chai.use(require('chai-as-promised'))
chai.use(require('dirty-chai'))
const runner = mocha.run(() => {
// Ensure the callback is called after runner is defined

View file

@ -11,6 +11,7 @@ const v8 = require('v8')
const argv = require('yargs')
.boolean('ci')
.array('files')
.string('g').alias('g', 'grep')
.boolean('i').alias('i', 'invert')
.argv
@ -133,7 +134,8 @@ app.on('ready', function () {
window.loadFile('static/index.html', {
query: {
grep: argv.grep,
invert: argv.invert ? 'true' : ''
invert: argv.invert ? 'true' : '',
files: argv.files ? argv.files.join(',') : undefined
}
})
window.on('unresponsive', function () {

View file

@ -1,14 +1,10 @@
const chai = require('chai')
const dirtyChai = require('dirty-chai')
const { expect } = require('chai')
const path = require('path')
const http = require('http')
const url = require('url')
const { ipcRenderer } = require('electron')
const { emittedOnce, waitForEvent } = require('./events-helpers')
const { expect } = chai
chai.use(dirtyChai)
const features = process.electronBinding('features')
const nativeModulesEnabled = process.env.ELECTRON_SKIP_NATIVE_MODULE_TESTS