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' ;
@@ -357,4 +362,50 @@ describe('Sentry webpack plugin config', () => {
357
362
358
363
expect ( finalWebpackConfig ?. devtool ) . not . toEqual ( 'source-map' ) ;
359
364
} ) ;
365
+
366
+ describe ( 'getUserConfigFile' , ( ) => {
367
+ let tempDir : string ;
368
+
369
+ beforeAll ( ( ) => {
370
+ exitsSync . mockImplementation ( realExistsSync ) ;
371
+ } ) ;
372
+
373
+ beforeEach ( ( ) => {
374
+ const tempDirPathPrefix = path . join ( os . tmpdir ( ) , 'sentry-nextjs-test-' ) ;
375
+ tempDir = fs . mkdtempSync ( tempDirPathPrefix ) ;
376
+ } ) ;
377
+
378
+ afterEach ( ( ) => {
379
+ rimraf . sync ( tempDir ) ;
380
+ } ) ;
381
+
382
+ afterAll ( ( ) => {
383
+ exitsSync . mockImplementation ( mockExistsSync ) ;
384
+ } ) ;
385
+
386
+ it ( 'successfully finds js files' , ( ) => {
387
+ fs . writeFileSync ( path . resolve ( tempDir , 'sentry.server.config.js' ) , 'Dogs are great!' ) ;
388
+ fs . writeFileSync ( path . resolve ( tempDir , 'sentry.client.config.js' ) , 'Squirrel!' ) ;
389
+
390
+ expect ( getUserConfigFile ( tempDir , 'server' ) ) . toEqual ( 'sentry.server.config.js' ) ;
391
+ expect ( getUserConfigFile ( tempDir , 'client' ) ) . toEqual ( 'sentry.client.config.js' ) ;
392
+ } ) ;
393
+
394
+ it ( 'successfully finds ts files' , ( ) => {
395
+ fs . writeFileSync ( path . resolve ( tempDir , 'sentry.server.config.ts' ) , 'Sit. Stay. Lie Down.' ) ;
396
+ fs . writeFileSync ( path . resolve ( tempDir , 'sentry.client.config.ts' ) , 'Good dog!' ) ;
397
+
398
+ expect ( getUserConfigFile ( tempDir , 'server' ) ) . toEqual ( 'sentry.server.config.ts' ) ;
399
+ expect ( getUserConfigFile ( tempDir , 'client' ) ) . toEqual ( 'sentry.client.config.ts' ) ;
400
+ } ) ;
401
+
402
+ it ( 'errors when files are missing' , ( ) => {
403
+ expect ( ( ) => getUserConfigFile ( tempDir , 'server' ) ) . toThrowError (
404
+ `Cannot find 'sentry.server.config.ts' or 'sentry.server.config.js' in '${ tempDir } '` ,
405
+ ) ;
406
+ expect ( ( ) => getUserConfigFile ( tempDir , 'client' ) ) . toThrowError (
407
+ `Cannot find 'sentry.client.config.ts' or 'sentry.client.config.js' in '${ tempDir } '` ,
408
+ ) ;
409
+ } ) ;
410
+ } ) ;
360
411
} ) ;
0 commit comments