Browse Source

ci: make console.warn work in tests (#18771)

Jeremy Apthorp 5 years ago
parent
commit
29decbdd4d
3 changed files with 28 additions and 10 deletions
  1. 18 2
      spec/chromium-spec.js
  2. 7 4
      spec/static/index.html
  3. 3 4
      spec/static/main.js

+ 18 - 2
spec/chromium-spec.js

@@ -32,6 +32,11 @@ describe('chromium feature', () => {
     listener = null
   })
 
+  afterEach(async () => {
+    await closeWindow(w)
+    w = null
+  })
+
   describe('command line switches', () => {
     describe('--lang switch', () => {
       const currentLocale = app.getLocale()
@@ -78,8 +83,6 @@ describe('chromium feature', () => {
     })
   })
 
-  afterEach(() => closeWindow(w).then(() => { w = null }))
-
   describe('heap snapshot', () => {
     it('does not crash', function () {
       process.electronBinding('v8_util').takeHeapSnapshot()
@@ -1466,6 +1469,19 @@ describe('chromium feature', () => {
   })
 })
 
+describe('console functions', () => {
+  it('should exist', () => {
+    expect(console.log, 'log').to.be.a('function')
+    expect(console.error, 'error').to.be.a('function')
+    expect(console.warn, 'warn').to.be.a('function')
+    expect(console.info, 'info').to.be.a('function')
+    expect(console.debug, 'debug').to.be.a('function')
+    expect(console.trace, 'trace').to.be.a('function')
+    expect(console.time, 'time').to.be.a('function')
+    expect(console.timeEnd, 'timeEnd').to.be.a('function')
+  })
+})
+
 describe('font fallback', () => {
   async function getRenderedFonts (html) {
     const w = new BrowserWindow({ show: false })

+ 7 - 4
spec/static/index.html

@@ -39,11 +39,14 @@
 
   // Rediret all output to browser.
   if (isCi) {
-    global.__defineGetter__('console', function () {
-      return {
-        log: (...args) => ipcRenderer.send('console.log', args),
-        error: (...args) => ipcRenderer.send('console.error', args)
+    const fakeConsole = {}
+    for (const k in console) {
+      if (console.hasOwnProperty(k) && k !== 'assert') {
+        fakeConsole[k] = (...args) => ipcRenderer.send('console-call', k, args)
       }
+    }
+    global.__defineGetter__('console', function () {
+      return fakeConsole
     })
   }
 

+ 3 - 4
spec/static/main.js

@@ -52,16 +52,15 @@ if (process.platform !== 'darwin') {
 
 // Write output to file if OUTPUT_TO_FILE is defined.
 const outputToFile = process.env.OUTPUT_TO_FILE
-const print = function (_, args) {
+const print = function (_, method, args) {
   const output = util.format.apply(null, args)
   if (outputToFile) {
     fs.appendFileSync(outputToFile, output + '\n')
   } else {
-    console.error(output)
+    console[method](output)
   }
 }
-ipcMain.on('console.log', print)
-ipcMain.on('console.error', print)
+ipcMain.on('console-call', print)
 
 ipcMain.on('process.exit', function (event, code) {
   process.exit(code)