Skip to content

Commit aee63ef

Browse files
authored
Merge pull request #1339 from sasjs/issue-1206
fix(compile): terminate compilation if testSetUp or testTearDown failed
2 parents 475113d + e331d4d commit aee63ef

File tree

3 files changed

+55
-11
lines changed

3 files changed

+55
-11
lines changed

src/commands/compile/compile.ts

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
listSubFoldersInFolder
1313
} from '@sasjs/utils'
1414
import { SASJsFileType, StreamConfig, Target } from '@sasjs/utils/types'
15+
import { prefixMessage } from '@sasjs/utils/error'
1516
import path from 'path'
1617
import {
1718
getMacroFolders,
@@ -157,10 +158,11 @@ export async function compileJobsServicesTests(
157158
true,
158159
false,
159160
compileTree
160-
).catch((err) =>
161-
process.logger?.error('Test set up compilation has failed.')
162-
)
161+
).catch((err) => {
162+
throw prefixMessage(err, 'Test set up compilation has failed. ')
163+
})
163164
}
165+
164166
if (testTearDown) {
165167
await compileTestFile(
166168
target,
@@ -169,9 +171,9 @@ export async function compileJobsServicesTests(
169171
true,
170172
false,
171173
compileTree
172-
).catch((err) =>
173-
process.logger?.error('Test tear down compilation has failed.')
174-
)
174+
).catch((err) => {
175+
throw prefixMessage(err, 'Test tear down compilation has failed. ')
176+
})
175177
}
176178

177179
await asyncForEach(serviceFolders, async (serviceFolder) => {
@@ -194,10 +196,6 @@ export async function compileJobsServicesTests(
194196
)
195197
})
196198
} catch (error) {
197-
process.logger?.error(
198-
'An error has occurred when compiling your jobs and services.'
199-
)
200-
201199
throw error
202200
}
203201
}

src/commands/compile/compileCommand.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,8 @@ export class CompileCommand extends TargetCommand {
9999
return ReturnCode.Success
100100
})
101101
.catch((err) => {
102-
displayError(err, 'An error has occurred when compiling services.')
102+
displayError(err, 'An error has occurred during compilation.')
103+
103104
return ReturnCode.InternalError
104105
})
105106
}

src/commands/compile/spec/compile.spec.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ import { compileSingleFile } from '../compileSingleFile'
2929
import * as compileFile from '../internal/compileFile'
3030
import { setConstants } from '../../../utils'
3131
import { CompileCommand } from '../compileCommand'
32+
import { prefixMessage } from '@sasjs/utils/error'
33+
import * as compileTestFileModule from '../internal/compileTestFile'
3234

3335
describe('sasjs compile', () => {
3436
let sharedAppName: string
@@ -40,6 +42,7 @@ describe('sasjs compile', () => {
4042
sharedAppName = `cli-tests-compile-${generateTimestamp()}`
4143
await createTestApp(homedir, sharedAppName)
4244
})
45+
4346
beforeEach(async () => {
4447
appName = `cli-tests-compile-${generateTimestamp()}`
4548
await createTestApp(__dirname, appName)
@@ -163,6 +166,48 @@ describe('sasjs compile', () => {
163166
expect(compileModule.copyFilesToBuildFolder).not.toHaveBeenCalled()
164167
expect(compileModule.compileJobsServicesTests).not.toHaveBeenCalled()
165168
})
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+
})
166211
})
167212

168213
describe('sasjs compile single file', () => {

0 commit comments

Comments
 (0)