@@ -11,6 +11,7 @@ const plugin = require('../src')
1111const { HANDLER_FUNCTION_NAME , ODB_FUNCTION_NAME } = require ( '../src/constants' )
1212const { join } = require ( 'pathe' )
1313const { matchMiddleware, stripLocale, matchesRedirect, matchesRewrite } = require ( '../src/helpers/files' )
14+ const { dirname } = require ( 'path' )
1415
1516const FIXTURES_DIR = `${ __dirname } /fixtures`
1617const SAMPLE_PROJECT_DIR = `${ __dirname } /../demos/default`
@@ -83,19 +84,20 @@ const changeCwd = function (cwd) {
8384const onBuildHasRun = ( netlifyConfig ) =>
8485 Boolean ( netlifyConfig . functions [ HANDLER_FUNCTION_NAME ] ?. included_files ?. some ( ( file ) => file . includes ( 'BUILD_ID' ) ) )
8586
86- const rewriteAppDir = async function ( ) {
87- const manifest = path . join ( '.next' , 'required-server-files.json' )
87+ const rewriteAppDir = async function ( dir = '.next' ) {
88+ const manifest = path . join ( dir , 'required-server-files.json' )
8889 const manifestContent = await readJson ( manifest )
8990 manifestContent . appDir = process . cwd ( )
9091
9192 await writeJSON ( manifest , manifestContent )
9293}
9394
9495// Move .next from sample project to current directory
95- const moveNextDist = async function ( ) {
96+ const moveNextDist = async function ( dir = '.next' ) {
9697 await stubModules ( [ 'next' , 'sharp' ] )
97- await copy ( path . join ( SAMPLE_PROJECT_DIR , '.next' ) , path . join ( process . cwd ( ) , '.next' ) )
98- await rewriteAppDir ( )
98+ await ensureDir ( dirname ( dir ) )
99+ await copy ( path . join ( SAMPLE_PROJECT_DIR , '.next' ) , path . join ( process . cwd ( ) , dir ) )
100+ await rewriteAppDir ( dir )
99101}
100102
101103const stubModules = async function ( modules ) {
@@ -129,7 +131,7 @@ beforeEach(async () => {
129131 restoreCwd = changeCwd ( tmpDir . path )
130132 cleanup = tmpDir . cleanup
131133
132- netlifyConfig . build . publish = path . posix . resolve ( '.next' )
134+ netlifyConfig . build . publish = path . resolve ( '.next' )
133135 netlifyConfig . build . environment = { }
134136
135137 netlifyConfig . redirects = [ ]
@@ -183,7 +185,7 @@ describe('preBuild()', () => {
183185 utils : { ...utils , cache : { restore } } ,
184186 } )
185187
186- expect ( restore ) . toHaveBeenCalledWith ( path . posix . resolve ( '.next/cache' ) )
188+ expect ( restore ) . toHaveBeenCalledWith ( path . resolve ( '.next/cache' ) )
187189 } )
188190
189191 it ( 'forces the target to "server"' , async ( ) => {
@@ -337,6 +339,23 @@ describe('onBuild()', () => {
337339 expect ( readFileSync ( odbHandlerPagesFile , 'utf8' ) ) . toMatchSnapshot ( )
338340 } )
339341
342+ test ( 'generates a file referencing all when publish dir is a subdirectory' , async ( ) => {
343+ const dir = 'web/.next'
344+ await moveNextDist ( dir )
345+ netlifyConfig . build . publish = path . resolve ( dir )
346+ const config = {
347+ ...defaultArgs ,
348+ netlifyConfig,
349+ constants : { ...constants , PUBLISH_DIR : dir } ,
350+ }
351+ await plugin . onBuild ( config )
352+ const handlerPagesFile = path . join ( constants . INTERNAL_FUNCTIONS_SRC , HANDLER_FUNCTION_NAME , 'pages.js' )
353+ const odbHandlerPagesFile = path . join ( constants . INTERNAL_FUNCTIONS_SRC , ODB_FUNCTION_NAME , 'pages.js' )
354+
355+ expect ( readFileSync ( handlerPagesFile , 'utf8' ) ) . toMatchSnapshot ( )
356+ expect ( readFileSync ( odbHandlerPagesFile , 'utf8' ) ) . toMatchSnapshot ( )
357+ } )
358+
340359 test ( 'generates entrypoints with correct references' , async ( ) => {
341360 await moveNextDist ( )
342361 await plugin . onBuild ( defaultArgs )
@@ -368,8 +387,8 @@ describe('onPostBuild', () => {
368387 utils : { ...utils , cache : { save } , functions : { list : jest . fn ( ) . mockResolvedValue ( [ ] ) } } ,
369388 } )
370389
371- expect ( save ) . toHaveBeenCalledWith ( path . posix . resolve ( '.next/cache' ) , {
372- digests : [ path . posix . resolve ( '.next/build-manifest.json' ) ] ,
390+ expect ( save ) . toHaveBeenCalledWith ( path . resolve ( '.next/cache' ) , {
391+ digests : [ path . resolve ( '.next/build-manifest.json' ) ] ,
373392 } )
374393 } )
375394
0 commit comments