@@ -1747,6 +1747,58 @@ describe('e2e', function () {
1747
1747
} ) ;
1748
1748
} ) ;
1749
1749
1750
+ describe ( 'with custom log retention max file count' , function ( ) {
1751
+ const customLogDir = useTmpdir ( ) ;
1752
+
1753
+ it ( 'should delete files once it is above the max file count limit' , async function ( ) {
1754
+ const globalConfig = path . join ( homedir , 'globalconfig.conf' ) ;
1755
+ await fs . writeFile (
1756
+ globalConfig ,
1757
+ `mongosh:\n logLocation: ${ JSON . stringify (
1758
+ customLogDir . path
1759
+ ) } \n logMaxFileCount: 4`
1760
+ ) ;
1761
+ const paths : string [ ] = [ ] ;
1762
+ const offset = Math . floor ( Date . now ( ) / 1000 ) ;
1763
+
1764
+ // Create 10 log files
1765
+ for ( let i = 9 ; i >= 0 ; i -- ) {
1766
+ const filename = path . join (
1767
+ customLogDir . path ,
1768
+ ObjectId . createFromTime ( offset - i ) . toHexString ( ) + '_log'
1769
+ ) ;
1770
+ await fs . writeFile ( filename , '' ) ;
1771
+ paths . push ( filename ) ;
1772
+ }
1773
+
1774
+ // All 10 existing log files exist.
1775
+ expect ( await getFilesState ( paths ) ) . to . equal ( '1111111111' ) ;
1776
+ shell = this . startTestShell ( {
1777
+ args : [ '--nodb' ] ,
1778
+ env : {
1779
+ ...env ,
1780
+ MONGOSH_TEST_ONLY_MAX_LOG_FILE_COUNT : '' ,
1781
+ MONGOSH_GLOBAL_CONFIG_FILE_FOR_TESTING : globalConfig ,
1782
+ } ,
1783
+ forceTerminal : true ,
1784
+ } ) ;
1785
+
1786
+ await shell . waitForPrompt ( ) ;
1787
+
1788
+ // Add the newly created log to the file list.
1789
+ paths . push (
1790
+ path . join ( customLogDir . path , `${ shell . logId as string } _log` )
1791
+ ) ;
1792
+
1793
+ expect (
1794
+ await shell . executeLine ( 'config.get("logMaxFileCount")' )
1795
+ ) . contains ( '4' ) ;
1796
+
1797
+ // Expect 7 files to be deleted and 4 to remain (including the new log file)
1798
+ expect ( await getFilesState ( paths ) ) . to . equal ( '00000001111' ) ;
1799
+ } ) ;
1800
+ } ) ;
1801
+
1750
1802
it ( 'creates a log file that keeps track of session events' , async function ( ) {
1751
1803
expect ( await shell . executeLine ( 'print(123 + 456)' ) ) . to . include ( '579' ) ;
1752
1804
const log = await readLogFile ( ) ;
0 commit comments