diff --git a/packages/next/package.json b/packages/next/package.json index 53ba03a3eb0c..aa8ad0ae30cc 100644 --- a/packages/next/package.json +++ b/packages/next/package.json @@ -142,7 +142,7 @@ "url": "0.11.0", "url-polyfill": "1.1.7", "use-subscription": "1.1.1", - "watchpack": "2.0.0-beta.5", + "watchpack": "2.0.0-beta.13", "webpack": "4.41.2", "webpack-dev-middleware": "3.7.0", "webpack-hot-middleware": "2.25.0", diff --git a/test/integration/dynamic-route-rename/pages/[pid].js b/test/integration/dynamic-route-rename/pages/[pid].js new file mode 100644 index 000000000000..0957a987fc2f --- /dev/null +++ b/test/integration/dynamic-route-rename/pages/[pid].js @@ -0,0 +1 @@ +export default () => 'hi' diff --git a/test/integration/dynamic-route-rename/test/index.test.js b/test/integration/dynamic-route-rename/test/index.test.js new file mode 100644 index 000000000000..c4bfc599c6b5 --- /dev/null +++ b/test/integration/dynamic-route-rename/test/index.test.js @@ -0,0 +1,53 @@ +/* eslint-env jest */ +/* global jasmine */ +import fs from 'fs-extra' +import { join } from 'path' +import { + renderViaHTTP, + launchApp, + findPort, + killApp, + waitFor, +} from 'next-test-utils' + +jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000 * 30 * 2 + +let app +let appPort +let stderr = '' + +const appDir = join(__dirname, '../') +const pageFile = join(appDir, 'pages/[pid].js') +const pageFileAlt = join(appDir, 'pages/[PiD].js') + +describe('Dynamic route rename casing', () => { + beforeAll(async () => { + appPort = await findPort() + app = await launchApp(appDir, appPort, { + onStderr(msg) { + stderr += msg || '' + }, + }) + }) + afterAll(() => killApp(app)) + + it('should not throw error when changing casing of dynamic route file', async () => { + // make sure route is loaded in webpack + const html = await renderViaHTTP(appPort, '/abc') + expect(html).toContain('hi') + + await fs.rename(pageFile, pageFileAlt) + await waitFor(2000) + + expect(stderr).not.toContain( + `You cannot use different slug names for the same dynamic path` + ) + + await fs.rename(pageFileAlt, pageFile) + await waitFor(2000) + + expect(stderr).not.toContain( + `You cannot use different slug names for the same dynamic path` + ) + }) +}) diff --git a/yarn.lock b/yarn.lock index 56b5c8032f16..6800dbeaf094 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16736,14 +16736,13 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -watchpack@2.0.0-beta.5: - version "2.0.0-beta.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.0.0-beta.5.tgz#c005db39570d81d9d34334870abc0f548901b880" - integrity sha512-HGqh9e9QZFhow8JYX+1+E+kIYK0uTTsk6rCOkI0ff0f9kMO0wX783yW8saQC9WDx7qHpVGPXsRnld9nY7iwzQA== +watchpack@2.0.0-beta.13: + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.0.0-beta.13.tgz#9d9b0c094b8402139333e04eb6194643c8384f55" + integrity sha512-ZEFq2mx/k5qgQwgi6NOm+2ImICb8ngAkA/rZ6oyXZ7SgPn3pncf+nfhYTCrs3lmHwOxnPtGLTOuFLfpSMh1VMA== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" - neo-async "^2.5.0" watchpack@^1.6.0: version "1.6.0"