Merge pull request #3349 from nuxt/revert-3346-cli-test

Revert "test: bring cli test back"
This commit is contained in:
Clark Du 2018-05-16 08:10:48 +01:00 committed by GitHub
commit dcc92c661b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 53 additions and 98 deletions

View File

@ -13,29 +13,6 @@ export const waitFor = function waitFor(ms) {
return new Promise(resolve => setTimeout(resolve, ms || 0)) return new Promise(resolve => setTimeout(resolve, ms || 0))
} }
/**
* Prepare an object to pass to the createSportsSelectionView function
* @param {Function} condition return true to stop the waiting
* @param {Number} duration seconds totally wait
* @param {Number} interval milliseconds interval to check the condition
*
* @returns {Boolean} true: timeout, false: condition becomes true within total time
*/
export const waitUntil = async function waitUntil(condition, duration = 20, interval = 250) {
let iterator = 0
const steps = Math.floor(duration * 1000 / interval)
while (!condition() && iterator < steps) {
await waitFor(interval)
iterator++
}
if (iterator === steps) {
return true
}
return false
}
async function promiseFinally(fn, finalFn) { async function promiseFinally(fn, finalFn) {
let result let result
try { try {

View File

@ -1,27 +0,0 @@
import { exec } from 'child_process'
import { resolve } from 'path'
import { promisify } from 'util'
const execify = promisify(exec)
const rootDir = __dirname
const nuxtBin = resolve(__dirname, '..', '..', '..', 'bin', 'nuxt')
describe('cli', () => {
test('nuxt build', async () => {
const { stdout } = await execify(`node ${nuxtBin} build ${rootDir}`)
expect(stdout.includes('Compiled successfully')).toBe(true)
})
test('nuxt build -> error config', async () => {
await expect(execify(`node ${nuxtBin} build ${rootDir} -c config.js`)).rejects.toMatchObject({
stdout: expect.stringContaining('Could not load config file: config.js')
})
})
test('nuxt generate', async () => {
const { stdout } = await execify(`node ${nuxtBin} generate ${rootDir}`)
expect(stdout.includes('Generated successfully')).toBe(true)
})
})

View File

@ -1,22 +0,0 @@
import consola from 'consola'
export default {
hooks(hook) {
hook('build:done', builder => {
consola.success('Compiled successfully')
})
hook('generate:done', (generator, errors) => {
if (!errors || errors.length === 0) {
consola.success('Generated successfully')
} else {
consola.error('Generated failed')
}
})
hook('listen', (server, { port, host }) => {
consola.success(`Listening on http://${host}:${port}`)
})
},
generate: {
dir: '.nuxt-generate'
}
}

View File

@ -1,3 +0,0 @@
<template>
<div>CLI Test</div>
</template>

View File

@ -1,29 +1,48 @@
import { spawn } from 'child_process' import { exec, spawn } from 'child_process'
import { resolve } from 'path' import { resolve } from 'path'
import { getPort, Utils, rp } from '../utils' import { promisify } from 'util'
import { Utils, rp } from '../utils'
const execify = promisify(exec)
const rootDir = resolve(__dirname, '..', 'fixtures/basic')
let port let port
const rootDir = resolve(__dirname, '..', 'fixtures/cli')
const url = route => 'http://localhost:' + port + route const url = route => 'http://localhost:' + port + route
const nuxtBin = resolve(__dirname, '..', '..', 'bin', 'nuxt') const nuxtBin = resolve(__dirname, '..', '..', 'bin', 'nuxt')
describe('cli', () => { describe.skip('cli', () => {
test('nuxt build', async () => {
const { stdout } = await execify(`node ${nuxtBin} build ${rootDir}`)
expect(stdout.includes('Compiled successfully')).toBe(true)
})
test('nuxt build -> error config', async () => {
await expect(execify(`node ${nuxtBin} build ${rootDir} -c config.js`)).rejects.toMatchObject({
stderr: expect.stringContaining('Could not load config file')
})
})
test('nuxt start', async () => { test('nuxt start', async () => {
let stdout = '' let stdout = ''
// let stderr = ''
let error let error
let exitCode let exitCode
const env = process.env const env = process.env
env.PORT = port = await getPort() env.PORT = port
const nuxtStart = spawn('node', [nuxtBin, 'start', rootDir], { env }) const nuxtStart = spawn('node', [nuxtBin, 'start', rootDir], { env: env })
nuxtStart.stdout.on('data', data => { nuxtStart.stdout.on('data', data => {
stdout += data stdout += data
}) })
nuxtStart.stderr.on('data', data => {
// stderr += data
})
nuxtStart.on('error', err => { nuxtStart.on('error', err => {
error = err error = err
}) })
@ -32,27 +51,37 @@ describe('cli', () => {
exitCode = code exitCode = code
}) })
// Wait max 20s for the starting // Give the process max 20s to start
let timeout = await Utils.waitUntil(() => stdout.includes('Listening on')) let iterator = 0
while (!stdout.includes('OPEN') && iterator < 80) {
await Utils.waitFor(250)
iterator++
}
if (timeout === true) { if (iterator === 80) {
error = 'server failed to start successfully in 20 seconds' test.log('WARN: server failed to start successfully in 20 seconds')
} }
expect(error).toBe(undefined) expect(error).toBe(undefined)
expect(stdout.includes('Listening on')).toBe(true) expect(stdout.includes('OPEN')).toBe(true)
const html = await rp(url('/')) const html = await rp(url('/users/1'))
expect(html).toMatch(('<div>CLI Test</div>')) expect(html.includes('<h1>User: 1</h1>')).toBe(true)
nuxtStart.kill() nuxtStart.kill()
// Wait max 10s for the process to be killed // Wait max 10s for the process to be killed
timeout = await Utils.waitUntil(() => exitCode !== undefined, 10) iterator = 0
// eslint-disable-next-line no-unmodified-loop-condition
while (exitCode === undefined && iterator < 40) {
await Utils.waitFor(250)
iterator++
}
if (timeout === true) { if (iterator >= 40) {
console.warn( // eslint-disable-line no-console // eslint-disable-line no-console
`we were unable to automatically kill the child process with pid: ${ test.log(
`WARN: we were unable to automatically kill the child process with pid: ${
nuxtStart.pid nuxtStart.pid
}` }`
) )
@ -60,4 +89,10 @@ describe('cli', () => {
expect(exitCode).toBe(null) expect(exitCode).toBe(null)
}) })
test('nuxt generate', async () => {
const { stdout } = await execify(`node ${nuxtBin} generate ${rootDir}`)
expect(stdout.includes('vue-ssr-client-manifest.json')).toBe(true)
})
}) })

View File

@ -23,11 +23,6 @@ describe('utils', () => {
await Utils.waitFor() await Utils.waitFor()
}) })
test('waitUntil', async () => {
expect(await Utils.waitUntil(() => true, 0.1, 100)).toBe(false)
expect(await Utils.waitUntil(() => false, 0.1, 100)).toBe(true)
})
test('timeout (promise)', async () => { test('timeout (promise)', async () => {
const result = await Utils.timeout(Promise.resolve('time not run out'), 100) const result = await Utils.timeout(Promise.resolve('time not run out'), 100)
expect(result).toBe('time not run out') expect(result).toBe('time not run out')