1
+ import * as fs from 'fs' ;
2
+ import * as os from 'os' ;
3
+ import * as path from 'path' ;
4
+ import * as rimraf from 'rimraf' ;
5
+
1
6
import { withSentryConfig } from '../src/config' ;
2
7
import {
3
8
BuildContext ,
@@ -7,7 +12,7 @@ import {
7
12
SentryWebpackPluginOptions ,
8
13
WebpackConfigObject ,
9
14
} from '../src/config/types' ;
10
- import { constructWebpackConfigFunction , SentryWebpackPlugin } from '../src/config/webpack' ;
15
+ import { constructWebpackConfigFunction , getUserConfigFile , SentryWebpackPlugin } from '../src/config/webpack' ;
11
16
12
17
const SERVER_SDK_CONFIG_FILE = 'sentry.server.config.js' ;
13
18
const CLIENT_SDK_CONFIG_FILE = 'sentry.client.config.js' ;
@@ -360,4 +365,50 @@ describe('Sentry webpack plugin config', () => {
360
365
361
366
expect ( finalWebpackConfig ?. devtool ) . not . toEqual ( 'source-map' ) ;
362
367
} ) ;
368
+
369
+ describe ( 'getUserConfigFile' , ( ) => {
370
+ let tempDir : string ;
371
+
372
+ beforeAll ( ( ) => {
373
+ exitsSync . mockImplementation ( realExistsSync ) ;
374
+ } ) ;
375
+
376
+ beforeEach ( ( ) => {
377
+ const tempDirPathPrefix = path . join ( os . tmpdir ( ) , 'sentry-nextjs-test-' ) ;
378
+ tempDir = fs . mkdtempSync ( tempDirPathPrefix ) ;
379
+ } ) ;
380
+
381
+ afterEach ( ( ) => {
382
+ rimraf . sync ( tempDir ) ;
383
+ } ) ;
384
+
385
+ afterAll ( ( ) => {
386
+ exitsSync . mockImplementation ( mockExistsSync ) ;
387
+ } ) ;
388
+
389
+ it ( 'successfully finds js files' , ( ) => {
390
+ fs . writeFileSync ( path . resolve ( tempDir , 'sentry.server.config.js' ) , 'Dogs are great!' ) ;
391
+ fs . writeFileSync ( path . resolve ( tempDir , 'sentry.client.config.js' ) , 'Squirrel!' ) ;
392
+
393
+ expect ( getUserConfigFile ( tempDir , 'server' ) ) . toEqual ( 'sentry.server.config.js' ) ;
394
+ expect ( getUserConfigFile ( tempDir , 'client' ) ) . toEqual ( 'sentry.client.config.js' ) ;
395
+ } ) ;
396
+
397
+ it ( 'successfully finds ts files' , ( ) => {
398
+ fs . writeFileSync ( path . resolve ( tempDir , 'sentry.server.config.ts' ) , 'Sit. Stay. Lie Down.' ) ;
399
+ fs . writeFileSync ( path . resolve ( tempDir , 'sentry.client.config.ts' ) , 'Good dog!' ) ;
400
+
401
+ expect ( getUserConfigFile ( tempDir , 'server' ) ) . toEqual ( 'sentry.server.config.ts' ) ;
402
+ expect ( getUserConfigFile ( tempDir , 'client' ) ) . toEqual ( 'sentry.client.config.ts' ) ;
403
+ } ) ;
404
+
405
+ it ( 'errors when files are missing' , ( ) => {
406
+ expect ( ( ) => getUserConfigFile ( tempDir , 'server' ) ) . toThrowError (
407
+ `Cannot find 'sentry.server.config.ts' or 'sentry.server.config.js' in '${ tempDir } '` ,
408
+ ) ;
409
+ expect ( ( ) => getUserConfigFile ( tempDir , 'client' ) ) . toThrowError (
410
+ `Cannot find 'sentry.client.config.ts' or 'sentry.client.config.js' in '${ tempDir } '` ,
411
+ ) ;
412
+ } ) ;
413
+ } ) ;
363
414
} ) ;
0 commit comments