@@ -29,6 +29,8 @@ import { compileSingleFile } from '../compileSingleFile'
29
29
import * as compileFile from '../internal/compileFile'
30
30
import { setConstants } from '../../../utils'
31
31
import { CompileCommand } from '../compileCommand'
32
+ import { prefixMessage } from '@sasjs/utils/error'
33
+ import * as compileTestFileModule from '../internal/compileTestFile'
32
34
33
35
describe ( 'sasjs compile' , ( ) => {
34
36
let sharedAppName : string
@@ -40,6 +42,7 @@ describe('sasjs compile', () => {
40
42
sharedAppName = `cli-tests-compile-${ generateTimestamp ( ) } `
41
43
await createTestApp ( homedir , sharedAppName )
42
44
} )
45
+
43
46
beforeEach ( async ( ) => {
44
47
appName = `cli-tests-compile-${ generateTimestamp ( ) } `
45
48
await createTestApp ( __dirname , appName )
@@ -163,6 +166,48 @@ describe('sasjs compile', () => {
163
166
expect ( compileModule . copyFilesToBuildFolder ) . not . toHaveBeenCalled ( )
164
167
expect ( compileModule . compileJobsServicesTests ) . not . toHaveBeenCalled ( )
165
168
} )
169
+
170
+ it ( 'should fail to compile if testSetUp is present and test file compilation failed' , async ( ) => {
171
+ const testSetUpFile = 'WRONG.sas'
172
+ const compileTestFileError = `ENOENT: no such file or directory, open '${ testSetUpFile } '`
173
+
174
+ const testTarget : any = { ...target }
175
+ testTarget . testConfig = { testSetUp : testSetUpFile }
176
+
177
+ jest
178
+ . spyOn ( compileTestFileModule , 'compileTestFile' )
179
+ . mockImplementation ( ( ) => Promise . reject ( compileTestFileError ) )
180
+
181
+ const expectedError = prefixMessage (
182
+ compileTestFileError ,
183
+ 'Test set up compilation has failed. '
184
+ )
185
+
186
+ await expect ( compileModule . compile ( testTarget ) ) . rejects . toEqual (
187
+ expectedError
188
+ )
189
+ } )
190
+
191
+ it ( 'should fail to compile if testTearDown is present and test file compilation failed' , async ( ) => {
192
+ const testTearDownFile = 'WRONG.sas'
193
+ const compileTestFileError = `ENOENT: no such file or directory, open '${ testTearDownFile } '`
194
+
195
+ const testTarget : any = { ...target }
196
+ testTarget . testConfig = { testTearDown : testTearDownFile }
197
+
198
+ jest
199
+ . spyOn ( compileTestFileModule , 'compileTestFile' )
200
+ . mockImplementation ( ( ) => Promise . reject ( compileTestFileError ) )
201
+
202
+ const expectedError = prefixMessage (
203
+ compileTestFileError ,
204
+ 'Test tear down compilation has failed. '
205
+ )
206
+
207
+ await expect ( compileModule . compile ( testTarget ) ) . rejects . toEqual (
208
+ expectedError
209
+ )
210
+ } )
166
211
} )
167
212
168
213
describe ( 'sasjs compile single file' , ( ) => {
0 commit comments