Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add error for invalid distDir value (#10177)
* Add error for invalid distDir value * Add check for null/undefined distDir Co-authored-by: Joe Haddad <timer150@gmail.com>
- Loading branch information
Showing
2 changed files
with
56 additions
and
28 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,53 +1,65 @@ | ||
/* eslint-env jest */ | ||
/* global jasmine */ | ||
import fs from 'fs-extra' | ||
import { join } from 'path' | ||
import { existsSync } from 'fs' | ||
import { BUILD_ID_FILE } from 'next/constants' | ||
import { | ||
nextServer, | ||
nextStart, | ||
nextBuild, | ||
startApp, | ||
stopApp, | ||
findPort, | ||
killApp, | ||
renderViaHTTP, | ||
} from 'next-test-utils' | ||
|
||
jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000 * 60 * 2 | ||
const appDir = join(__dirname, '../') | ||
const nextConfig = join(appDir, 'next.config.js') | ||
let appPort | ||
let server | ||
let app | ||
jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000 * 60 * 5 | ||
|
||
describe('Production Usage', () => { | ||
beforeAll(async () => { | ||
await nextBuild(appDir) | ||
app = nextServer({ | ||
dir: join(__dirname, '../'), | ||
dev: false, | ||
quiet: true, | ||
describe('With basic usage', () => { | ||
beforeAll(async () => { | ||
await nextBuild(appDir) | ||
appPort = await findPort() | ||
app = await nextStart(appDir, appPort) | ||
}) | ||
afterAll(() => killApp(app)) | ||
|
||
server = await startApp(app) | ||
appPort = server.address().port | ||
}) | ||
afterAll(() => stopApp(server)) | ||
|
||
describe('With basic usage', () => { | ||
it('should render the page', async () => { | ||
const html = await renderViaHTTP(appPort, '/') | ||
expect(html).toMatch(/Hello World/) | ||
}) | ||
}) | ||
|
||
describe('File locations', () => { | ||
it('should build the app within the given `dist` directory', () => { | ||
it('should build the app within the given `dist` directory', async () => { | ||
expect( | ||
existsSync(join(__dirname, `/../dist/${BUILD_ID_FILE}`)) | ||
await fs.exists(join(__dirname, `/../dist/${BUILD_ID_FILE}`)) | ||
).toBeTruthy() | ||
}) | ||
it('should not build the app within the default `.next` directory', () => { | ||
it('should not build the app within the default `.next` directory', async () => { | ||
expect( | ||
existsSync(join(__dirname, `/../.next/${BUILD_ID_FILE}`)) | ||
await fs.exists(join(__dirname, `/../.next/${BUILD_ID_FILE}`)) | ||
).toBeFalsy() | ||
}) | ||
}) | ||
|
||
it('should throw error with invalid distDir', async () => { | ||
const origNextConfig = await fs.readFile(nextConfig, 'utf8') | ||
await fs.writeFile(nextConfig, `module.exports = { distDir: '' }`) | ||
const { stderr } = await nextBuild(appDir, [], { stderr: true }) | ||
await fs.writeFile(nextConfig, origNextConfig) | ||
|
||
expect(stderr).toContain( | ||
'Invalid distDir provided, distDir can not be an empty string. Please remove this config or set it to undefined' | ||
) | ||
}) | ||
|
||
it('should handle null/undefined distDir', async () => { | ||
const origNextConfig = await fs.readFile(nextConfig, 'utf8') | ||
await fs.writeFile(nextConfig, `module.exports = { distDir: null }`) | ||
const { stderr } = await nextBuild(appDir, [], { stderr: true }) | ||
await fs.writeFile(nextConfig, origNextConfig) | ||
|
||
expect(stderr.length).toBe(0) | ||
}) | ||
}) |