fix: appveyor test failure (#3754)

* fix: appveyor test failure

* ci: bring back yarn cache

* ci: turn off matrix

* refactor: use babel instead of esm in jest

* refactor: use es modules in fixtures
This commit is contained in:
Clark Du 2018-08-17 21:25:23 +01:00 committed by Sébastien Chopin
parent 565ab7086a
commit 432720b8c8
43 changed files with 67 additions and 62 deletions

View File

@ -7,7 +7,8 @@
"node": "current" "node": "current"
} }
}] }]
] ],
"plugins": ["dynamic-import-node"]
} }
} }
} }

View File

@ -1,11 +1,13 @@
# Test against the latest version of this Node.js version # Test against the latest version of this Node.js version
environment: environment:
matrix: nodejs_version: "Current"
- nodejs_version: "Current" # environment:
# matrix:
# - nodejs_version: "Current"
cache: cache:
- 'node_modules -> yarn.lock' - 'node_modules -> yarn.lock'
# - '%LOCALAPPDATA%\\Yarn -> yarn.lock' - '%LOCALAPPDATA%\\Yarn -> yarn.lock'
image: Visual Studio 2017 image: Visual Studio 2017

View File

@ -7,6 +7,7 @@ module.exports = {
], ],
setupTestFrameworkScriptFile: './test/utils/setup', setupTestFrameworkScriptFile: './test/utils/setup',
testPathIgnorePatterns: ['test/fixtures/.*/.*?/'], testPathIgnorePatterns: ['test/fixtures/.*/.*?/'],
transformIgnorePatterns: ['<rootDir>/node_modules/'],
moduleFileExtensions: ['js', 'mjs', 'json'], moduleFileExtensions: ['js', 'mjs', 'json'],
expand: true, expand: true,
forceExit: true forceExit: true

View File

@ -141,6 +141,7 @@
"babel-core": "^7.0.0-0", "babel-core": "^7.0.0-0",
"babel-eslint": "^9.0.0-beta", "babel-eslint": "^9.0.0-beta",
"babel-jest": "^23.4.2", "babel-jest": "^23.4.2",
"babel-plugin-dynamic-import-node": "^2.0.0",
"codecov": "^3.0.4", "codecov": "^3.0.4",
"cross-env": "^5.2.0", "cross-env": "^5.2.0",
"eslint": "^4.19.1", "eslint": "^4.19.1",

View File

@ -10,7 +10,7 @@ let page = null
describe('basic browser', () => { describe('basic browser', () => {
beforeAll(async () => { beforeAll(async () => {
const config = loadFixture('basic') const config = await loadFixture('basic')
nuxt = new Nuxt(config) nuxt = new Nuxt(config)
port = await getPort() port = await getPort()
await nuxt.listen(port, 'localhost') await nuxt.listen(port, 'localhost')

View File

@ -9,7 +9,7 @@ let nuxt = null
let page = null let page = null
const startServer = async (type = 'basic') => { const startServer = async (type = 'basic') => {
const config = loadFixture(type) const config = await loadFixture(type)
nuxt = new Nuxt(config) nuxt = new Nuxt(config)
port = await getPort() port = await getPort()
await nuxt.listen(port, 'localhost') await nuxt.listen(port, 'localhost')

View File

@ -11,7 +11,7 @@ const dates = {}
describe('children patch (browser)', () => { describe('children patch (browser)', () => {
beforeAll(async () => { beforeAll(async () => {
const options = loadFixture('children') const options = await loadFixture('children')
nuxt = new Nuxt(options) nuxt = new Nuxt(options)
port = await getPort() port = await getPort()
await nuxt.listen(port, 'localhost') await nuxt.listen(port, 'localhost')

View File

@ -1,3 +1,3 @@
const { buildFixture } = require('../../utils/build') import { buildFixture } from '../../utils/build'
buildFixture('basic') buildFixture('basic')

View File

@ -1,3 +1,3 @@
const { buildFixture } = require('../../utils/build') import { buildFixture } from '../../utils/build'
buildFixture('children') buildFixture('children')

View File

@ -1,3 +1,3 @@
const { buildFixture } = require('../../utils/build') import { buildFixture } from '../../utils/build'
buildFixture('config-explicit') buildFixture('config-explicit')

View File

@ -1,3 +1,3 @@
const { buildFixture } = require('../../utils/build') import { buildFixture } from '../../utils/build'
buildFixture('custom-app-template') buildFixture('custom-app-template')

View File

@ -1,3 +1,3 @@
const { buildFixture } = require('../../utils/build') import { buildFixture } from '../../utils/build'
buildFixture('custom-dirs') buildFixture('custom-dirs')

View File

@ -1,5 +0,0 @@
{
"name": "custom-dirs",
"version": "1.0.0",
"dependencies": {}
}

View File

@ -1,3 +1,3 @@
const { buildFixture } = require('../../utils/build') import { buildFixture } from '../../utils/build'
buildFixture('dynamic-routes') buildFixture('dynamic-routes')

View File

@ -1,3 +1,3 @@
const { buildFixture } = require('../../utils/build') import { buildFixture } from '../../utils/build'
buildFixture('empty') buildFixture('empty')

View File

@ -1,3 +1,3 @@
const { buildFixture } = require('../../utils/build') import { buildFixture } from '../../utils/build'
buildFixture('error') buildFixture('error')

View File

@ -1,3 +1,3 @@
const { buildFixture } = require('../../utils/build') import { buildFixture } from '../../utils/build'
buildFixture('extract-css') buildFixture('extract-css')

View File

@ -1,3 +1,3 @@
const { buildFixture } = require('../../utils/build') import { buildFixture } from '../../utils/build'
buildFixture('module') buildFixture('module')

View File

@ -1,5 +0,0 @@
{
"name": "module",
"version": "1.0.0",
"dependencies": {}
}

View File

@ -1,3 +1,3 @@
const { buildFixture } = require('../../utils/build') import { buildFixture } from '../../utils/build'
buildFixture('spa') buildFixture('spa')

View File

@ -1,3 +1,3 @@
const { buildFixture } = require('../../utils/build') import { buildFixture } from '../../utils/build'
buildFixture('ssr') buildFixture('ssr')

View File

@ -1,5 +0,0 @@
{
"name": "with-config",
"version": "1.0.0",
"dependencies": {}
}

View File

@ -1,5 +1,5 @@
const consola = require('consola') import consola from 'consola'
const { buildFixture } = require('../../utils/build') import { buildFixture } from '../../utils/build'
describe('with-config', () => { describe('with-config', () => {
buildFixture('with-config', () => { buildFixture('with-config', () => {

View File

@ -8,7 +8,7 @@ let transpile = null
describe('basic dev', () => { describe('basic dev', () => {
beforeAll(async () => { beforeAll(async () => {
const config = loadFixture('basic', { const config = await loadFixture('basic', {
dev: true, dev: true,
debug: true, debug: true,
buildDir: '.nuxt-dev', buildDir: '.nuxt-dev',

View File

@ -2,7 +2,7 @@ import { loadFixture, Nuxt, Generator } from '../utils'
describe('basic fail generate', () => { describe('basic fail generate', () => {
test('Fail with routes() which throw an error', async () => { test('Fail with routes() which throw an error', async () => {
const options = loadFixture('basic', { const options = await loadFixture('basic', {
generate: { generate: {
routes() { routes() {
throw new Error('Not today!') throw new Error('Not today!')

View File

@ -16,7 +16,7 @@ let generator = null
describe('basic generate', () => { describe('basic generate', () => {
beforeAll(async () => { beforeAll(async () => {
const config = loadFixture('basic', { generate: { dir: '.nuxt-generate' } }) const config = await loadFixture('basic', { generate: { dir: '.nuxt-generate' } })
const nuxt = new Nuxt(config) const nuxt = new Nuxt(config)
const builder = new Builder(nuxt) const builder = new Builder(nuxt)
builder.build = jest.fn() builder.build = jest.fn()

View File

@ -4,7 +4,7 @@ let port
const url = route => 'http://localhost:' + port + route const url = route => 'http://localhost:' + port + route
const startCspServer = async (csp, isProduction = true) => { const startCspServer = async (csp, isProduction = true) => {
const options = loadFixture('basic', { const options = await loadFixture('basic', {
debug: !isProduction, debug: !isProduction,
render: { csp } render: { csp }
}) })

View File

@ -8,7 +8,7 @@ let nuxt = null
describe('basic ssr', () => { describe('basic ssr', () => {
beforeAll(async () => { beforeAll(async () => {
const options = loadFixture('basic') const options = await loadFixture('basic')
nuxt = new Nuxt(options) nuxt = new Nuxt(options)
port = await getPort() port = await getPort()
await nuxt.listen(port, '0.0.0.0') await nuxt.listen(port, '0.0.0.0')

View File

@ -7,7 +7,7 @@ let nuxt = null
describe('children', () => { describe('children', () => {
beforeAll(async () => { beforeAll(async () => {
const options = loadFixture('children') const options = await loadFixture('children')
nuxt = new Nuxt(options) nuxt = new Nuxt(options)
port = await getPort() port = await getPort()
await nuxt.listen(port, 'localhost') await nuxt.listen(port, 'localhost')

View File

@ -5,7 +5,7 @@ let nuxt = null
describe('custom-app-template', () => { describe('custom-app-template', () => {
beforeAll(async () => { beforeAll(async () => {
const options = loadFixture('custom-app-template') const options = await loadFixture('custom-app-template')
nuxt = new Nuxt(options) nuxt = new Nuxt(options)
port = await getPort() port = await getPort()
await nuxt.listen(port, '0.0.0.0') await nuxt.listen(port, '0.0.0.0')

View File

@ -7,7 +7,7 @@ let nuxt = null
describe('custom-dirs', () => { describe('custom-dirs', () => {
beforeAll(async () => { beforeAll(async () => {
const config = loadFixture('custom-dirs') const config = await loadFixture('custom-dirs')
nuxt = new Nuxt(config) nuxt = new Nuxt(config)
port = await getPort() port = await getPort()
await nuxt.listen(port, 'localhost') await nuxt.listen(port, 'localhost')

View File

@ -7,7 +7,7 @@ let nuxt = null
describe('dist options', () => { describe('dist options', () => {
beforeAll(async () => { beforeAll(async () => {
const options = loadFixture('basic') const options = await loadFixture('basic')
nuxt = new Nuxt(Object.assign(options, {dev: false})) nuxt = new Nuxt(Object.assign(options, {dev: false}))
port = await getPort() port = await getPort()
await nuxt.listen(port, '0.0.0.0') await nuxt.listen(port, '0.0.0.0')

View File

@ -10,7 +10,7 @@ let nuxt = null
describe('error', () => { describe('error', () => {
beforeAll(async () => { beforeAll(async () => {
const config = loadFixture('error') const config = await loadFixture('error')
nuxt = new Nuxt(config) nuxt = new Nuxt(config)
port = await getPort() port = await getPort()
await nuxt.listen(port, 'localhost') await nuxt.listen(port, 'localhost')

View File

@ -11,7 +11,7 @@ let server
describe('express', () => { describe('express', () => {
// Init nuxt.js and create express server // Init nuxt.js and create express server
beforeAll(async () => { beforeAll(async () => {
const config = loadFixture('basic') const config = await loadFixture('basic')
nuxt = new Nuxt(config) nuxt = new Nuxt(config)
port = await getPort() port = await getPort()

View File

@ -15,7 +15,7 @@ let generator = null
describe('fallback generate', () => { describe('fallback generate', () => {
beforeAll(async () => { beforeAll(async () => {
const config = loadFixture('basic', {generate: {dir: '.nuxt-generate-fallback'}}) const config = await loadFixture('basic', {generate: {dir: '.nuxt-generate-fallback'}})
nuxt = new Nuxt(config) nuxt = new Nuxt(config)
generator = new Generator(nuxt) generator = new Generator(nuxt)

View File

@ -10,7 +10,7 @@ let nuxt = null
describe('module', () => { describe('module', () => {
beforeAll(async () => { beforeAll(async () => {
const config = loadFixture('module') const config = await loadFixture('module')
nuxt = new Nuxt(config) nuxt = new Nuxt(config)
port = await getPort() port = await getPort()
await nuxt.listen(port, 'localhost') await nuxt.listen(port, 'localhost')

View File

@ -7,7 +7,7 @@ describe('nuxt', () => {
}) })
test('Nuxt.js Instance', async () => { test('Nuxt.js Instance', async () => {
const config = loadFixture('empty') const config = await loadFixture('empty')
const nuxt = new Nuxt(config) const nuxt = new Nuxt(config)
expect(typeof nuxt).toBe('object') expect(typeof nuxt).toBe('object')

View File

@ -13,7 +13,7 @@ const renderRoute = async (_url) => {
describe('spa', () => { describe('spa', () => {
beforeAll(async () => { beforeAll(async () => {
const config = loadFixture('spa') const config = await loadFixture('spa')
nuxt = new Nuxt(config) nuxt = new Nuxt(config)
port = await getPort() port = await getPort()
await nuxt.listen(port, 'localhost') await nuxt.listen(port, 'localhost')

View File

@ -63,7 +63,7 @@ const stressTest = async (_url, concurrency = 2, steps = 4) => {
describe('ssr', () => { describe('ssr', () => {
beforeAll(async () => { beforeAll(async () => {
const config = loadFixture('ssr') const config = await loadFixture('ssr')
nuxt = new Nuxt(config) nuxt = new Nuxt(config)
port = await getPort() port = await getPort()
await nuxt.listen(port, 'localhost') await nuxt.listen(port, 'localhost')

View File

@ -7,7 +7,7 @@ let nuxt = null
describe('with-config', () => { describe('with-config', () => {
beforeAll(async () => { beforeAll(async () => {
const config = loadFixture('with-config') const config = await loadFixture('with-config')
nuxt = new Nuxt(config) nuxt = new Nuxt(config)
port = await getPort() port = await getPort()
await nuxt.listen(port, 'localhost') await nuxt.listen(port, 'localhost')

View File

@ -2,7 +2,7 @@ import { loadFixture, Nuxt, Builder } from './index'
export const buildFixture = function (fixture, callback) { export const buildFixture = function (fixture, callback) {
test(`Build ${fixture}`, async () => { test(`Build ${fixture}`, async () => {
const config = loadFixture(fixture) const config = await loadFixture(fixture)
const nuxt = new Nuxt(config) const nuxt = new Nuxt(config)
const buildDone = jest.fn() const buildDone = jest.fn()
nuxt.hook('build:done', buildDone) nuxt.hook('build:done', buildDone)

View File

@ -4,7 +4,6 @@ import fs from 'fs'
import _getPort from 'get-port' import _getPort from 'get-port'
import { defaultsDeep } from 'lodash' import { defaultsDeep } from 'lodash'
import _rp from 'request-promise-native' import _rp from 'request-promise-native'
import esm from 'esm'
import pkg from '../../package.json' import pkg from '../../package.json'
import Dist from '../../lib/nuxt' import Dist from '../../lib/nuxt'
@ -18,13 +17,11 @@ export const Options = Dist.Options
export const Builder = Dist.Builder export const Builder = Dist.Builder
export const Generator = Dist.Generator export const Generator = Dist.Generator
const requireModule = esm(module, {}) export const loadFixture = async function (fixture, overrides) {
export const loadFixture = function loadFixture(fixture, overrides) {
const rootDir = path.resolve(__dirname, '..', 'fixtures', fixture) const rootDir = path.resolve(__dirname, '..', 'fixtures', fixture)
const configFile = path.resolve(rootDir, 'nuxt.config.js') const configFile = path.resolve(rootDir, 'nuxt.config.js')
const config = fs.existsSync(configFile) ? requireModule(configFile).default : {} const config = fs.existsSync(configFile) ? (await import(`../fixtures/${fixture}/nuxt.config`)).default : {}
config.rootDir = rootDir config.rootDir = rootDir
config.dev = false config.dev = false

View File

@ -1328,6 +1328,13 @@ babel-messages@^6.23.0:
dependencies: dependencies:
babel-runtime "^6.22.0" babel-runtime "^6.22.0"
babel-plugin-dynamic-import-node@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.0.0.tgz#d6fc3f6c5e3bdc34e49c15faca7ce069755c0a57"
dependencies:
babel-plugin-syntax-dynamic-import "^6.18.0"
object.assign "^4.1.0"
babel-plugin-istanbul@^4.1.6: babel-plugin-istanbul@^4.1.6:
version "4.1.6" version "4.1.6"
resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45"
@ -1341,6 +1348,10 @@ babel-plugin-jest-hoist@^23.2.0:
version "23.2.0" version "23.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167"
babel-plugin-syntax-dynamic-import@^6.18.0:
version "6.18.0"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da"
babel-plugin-syntax-object-rest-spread@^6.13.0: babel-plugin-syntax-object-rest-spread@^6.13.0:
version "6.13.0" version "6.13.0"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
@ -4084,6 +4095,10 @@ is-callable@^1.1.1, is-callable@^1.1.3:
version "1.1.3" version "1.1.3"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
is-callable@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
is-ci@^1.0.10, is-ci@^1.1.0: is-ci@^1.0.10, is-ci@^1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5"
@ -7935,11 +7950,14 @@ strip-json-comments@~2.0.1:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
style-resources-loader@^1.1.0: style-resources-loader@^1.2.1:
version "1.1.0" version "1.2.1"
resolved "https://registry.yarnpkg.com/style-resources-loader/-/style-resources-loader-1.1.0.tgz#492f4f6ab0052c207148fd808acbdd83e79a9231" resolved "https://registry.yarnpkg.com/style-resources-loader/-/style-resources-loader-1.2.1.tgz#7679d5dc2f27046b2fc2b83c1d5b6c1b8a9b820c"
dependencies: dependencies:
glob "^7.1.2" glob "^7.1.2"
is-callable "^1.1.4"
is-plain-object "^2.0.4"
is-promise "^2.1.0"
loader-utils "^1.1.0" loader-utils "^1.1.0"
stylehacks@^4.0.0: stylehacks@^4.0.0: