From c4f9c6d492d5daf3b470a755eaf3d0f68dd0df08 Mon Sep 17 00:00:00 2001 From: Zack Tanner Date: Mon, 14 Aug 2023 10:14:07 -0700 Subject: [PATCH] add standalone testcase for ipv6 hostnames (#53999) This adds a test case for ipv6 hostnames in standalone mode - Follow up to https://github.com/vercel/next.js/pull/53131 --- .../standalone-mode/ipv6/app/app-page/page.js | 3 + .../standalone-mode/ipv6/app/layout.js | 8 ++ .../standalone-mode/ipv6/index.test.ts | 82 +++++++++++++++++++ .../standalone-mode/ipv6/next.config.js | 3 + .../standalone-mode/ipv6/pages/pages-page.js | 3 + 5 files changed, 99 insertions(+) create mode 100644 test/production/standalone-mode/ipv6/app/app-page/page.js create mode 100644 test/production/standalone-mode/ipv6/app/layout.js create mode 100644 test/production/standalone-mode/ipv6/index.test.ts create mode 100644 test/production/standalone-mode/ipv6/next.config.js create mode 100644 test/production/standalone-mode/ipv6/pages/pages-page.js diff --git a/test/production/standalone-mode/ipv6/app/app-page/page.js b/test/production/standalone-mode/ipv6/app/app-page/page.js new file mode 100644 index 0000000000000..5c93bee9b05e7 --- /dev/null +++ b/test/production/standalone-mode/ipv6/app/app-page/page.js @@ -0,0 +1,3 @@ +export default function AppPage() { + return
Hello from App
+} diff --git a/test/production/standalone-mode/ipv6/app/layout.js b/test/production/standalone-mode/ipv6/app/layout.js new file mode 100644 index 0000000000000..f3791f288f9d7 --- /dev/null +++ b/test/production/standalone-mode/ipv6/app/layout.js @@ -0,0 +1,8 @@ +export default function Layout({ children }) { + return ( + + + {children} + + ) +} diff --git a/test/production/standalone-mode/ipv6/index.test.ts b/test/production/standalone-mode/ipv6/index.test.ts new file mode 100644 index 0000000000000..273f992018324 --- /dev/null +++ b/test/production/standalone-mode/ipv6/index.test.ts @@ -0,0 +1,82 @@ +import { NextInstance, createNext } from 'e2e-utils' +import fs from 'fs-extra' +import glob from 'glob' +import { + findPort, + initNextServerScript, + killApp, + renderViaHTTP, +} from 'next-test-utils' +import { join } from 'path' + +describe('standalone mode: ipv6 hostname', () => { + let next: NextInstance + let server + let appPort + let output = '' + + beforeAll(async () => { + next = await createNext({ + files: __dirname, + }) + await next.stop() + + await fs.move( + join(next.testDir, '.next/standalone'), + join(next.testDir, 'standalone') + ) + + for (const file of await fs.readdir(next.testDir)) { + if (file !== 'standalone') { + await fs.remove(join(next.testDir, file)) + console.log('removed', file) + } + } + const files = glob.sync('**/*', { + cwd: join(next.testDir, 'standalone/.next/server/pages'), + dot: true, + }) + + for (const file of files) { + if (file.endsWith('.json') || file.endsWith('.html')) { + await fs.remove(join(next.testDir, '.next/server', file)) + } + } + + const testServer = join(next.testDir, 'standalone/server.js') + appPort = await findPort() + server = await initNextServerScript( + testServer, + /ready started server on/, + { + ...process.env, + HOSTNAME: '::', + PORT: appPort, + }, + undefined, + { + cwd: next.testDir, + onStdout(msg) { + output += msg + }, + onStderr(msg) { + output += msg + }, + } + ) + }) + afterAll(async () => { + await next.destroy() + if (server) await killApp(server) + }) + + it('should load the page without any errors', async () => { + expect(output).toContain(`started server on`) + + let html = await renderViaHTTP(appPort, '/app-page') + expect(html).toContain('Hello from App') + + html = await renderViaHTTP(appPort, '/pages-page') + expect(html).toContain('Hello from Pages') + }) +}) diff --git a/test/production/standalone-mode/ipv6/next.config.js b/test/production/standalone-mode/ipv6/next.config.js new file mode 100644 index 0000000000000..e97173b4b3799 --- /dev/null +++ b/test/production/standalone-mode/ipv6/next.config.js @@ -0,0 +1,3 @@ +module.exports = { + output: 'standalone', +} diff --git a/test/production/standalone-mode/ipv6/pages/pages-page.js b/test/production/standalone-mode/ipv6/pages/pages-page.js new file mode 100644 index 0000000000000..6d50c075faae6 --- /dev/null +++ b/test/production/standalone-mode/ipv6/pages/pages-page.js @@ -0,0 +1,3 @@ +export default function AppPage() { + return
Hello from Pages
+}