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
+}