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+
16import { withSentryConfig } from '../src/config' ;
27import {
38 BuildContext ,
@@ -7,7 +12,7 @@ import {
712 SentryWebpackPluginOptions ,
813 WebpackConfigObject ,
914} from '../src/config/types' ;
10- import { constructWebpackConfigFunction , SentryWebpackPlugin } from '../src/config/webpack' ;
15+ import { constructWebpackConfigFunction , getUserConfigFile , SentryWebpackPlugin } from '../src/config/webpack' ;
1116
1217const SERVER_SDK_CONFIG_FILE = 'sentry.server.config.js' ;
1318const CLIENT_SDK_CONFIG_FILE = 'sentry.client.config.js' ;
@@ -360,4 +365,50 @@ describe('Sentry webpack plugin config', () => {
360365
361366 expect ( finalWebpackConfig ?. devtool ) . not . toEqual ( 'source-map' ) ;
362367 } ) ;
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+ } ) ;
363414} ) ;
0 commit comments