1
1
const path = require ( 'path' )
2
2
const process = require ( 'process' )
3
+ const { promisify } = require ( 'util' )
3
4
5
+ const { copy } = require ( 'cpx' )
4
6
const nextOnNetlify = require ( 'next-on-netlify' )
5
7
const pathExists = require ( 'path-exists' )
6
8
const { dir : getTmpDir } = require ( 'tmp-promise' )
7
9
8
10
const plugin = require ( '..' )
9
11
12
+ const pCopy = promisify ( copy )
13
+
10
14
const FIXTURES_DIR = `${ __dirname } /fixtures`
11
15
12
16
const utils = {
@@ -27,11 +31,10 @@ const changeCwd = function (cwd) {
27
31
return process . chdir . bind ( process , originalCwd )
28
32
}
29
33
30
- // Switch cwd to a fixture directory
31
- const useFixture = function ( fixtureName ) {
34
+ // Copy fixture files to the current directory
35
+ const useFixture = async function ( fixtureName ) {
32
36
const fixtureDir = `${ FIXTURES_DIR } /${ fixtureName } `
33
- const restoreCwd = changeCwd ( fixtureDir )
34
- return { restoreCwd, fixtureDir }
37
+ await pCopy ( `${ fixtureDir } /**` , process . cwd ( ) )
35
38
}
36
39
37
40
// In each test, we change cwd to a temporary directory.
@@ -115,7 +118,7 @@ describe('preBuild()', () => {
115
118
} )
116
119
117
120
test ( `fail build if the app's next config has an invalid target` , async ( ) => {
118
- const { restoreCwd } = useFixture ( 'invalid_next_config' )
121
+ await useFixture ( 'invalid_next_config' )
119
122
await expect (
120
123
plugin . onPreBuild ( {
121
124
netlifyConfig : { } ,
@@ -124,7 +127,6 @@ describe('preBuild()', () => {
124
127
constants : { FUNCTIONS_SRC : 'out_functions' } ,
125
128
} ) ,
126
129
) . rejects . toThrow ( `next.config.js must be one of: serverless, experimental-serverless-trace` )
127
- restoreCwd ( )
128
130
} )
129
131
} )
130
132
@@ -151,14 +153,13 @@ describe('onBuild()', () => {
151
153
} )
152
154
153
155
test ( 'calls copySync with correct args' , async ( ) => {
154
- const { restoreCwd , fixtureDir } = useFixture ( 'publish_copy_files' )
155
- const PUBLISH_DIR = ` ${ fixtureDir } / publish`
156
+ await useFixture ( 'publish_copy_files' )
157
+ const PUBLISH_DIR = ' publish'
156
158
await plugin . onBuild ( {
157
159
constants : {
158
160
PUBLISH_DIR ,
159
161
} ,
160
162
} )
161
- restoreCwd ( )
162
163
163
164
expect ( await pathExists ( `${ PUBLISH_DIR } /subdir/dummy.txt` ) ) . toBeTruthy ( )
164
165
} )
0 commit comments