1- import fs from "fs/promises" ;
2- import os from "os" ;
3- import path from "path" ;
1+ import fs from "node: fs/promises" ;
2+ import os from "node: os" ;
3+ import path from "node: path" ;
44import { beforeAll , describe , expect , it } from "vitest" ;
55
66import * as cliUtils from "@/core/cliUtils" ;
@@ -95,17 +95,45 @@ describe("CliUtils", () => {
9595 expect ( await cliUtils . rmOld ( path . join ( binDir , "bin1" ) ) ) . toStrictEqual ( [ ] ) ;
9696
9797 await fs . mkdir ( binDir , { recursive : true } ) ;
98+
99+ // Create old files that should be removed.
100+ const oldTime = Date . now ( ) - 60 * 60 * 1000 ; // 60 minutes ago
98101 await fs . writeFile ( path . join ( binDir , "bin.old-1" ) , "echo hello" ) ;
102+ await fs . utimes (
103+ path . join ( binDir , "bin.old-1" ) ,
104+ oldTime / 1000 ,
105+ oldTime / 1000 ,
106+ ) ;
99107 await fs . writeFile ( path . join ( binDir , "bin.old-2" ) , "echo hello" ) ;
108+ await fs . utimes (
109+ path . join ( binDir , "bin.old-2" ) ,
110+ oldTime / 1000 ,
111+ oldTime / 1000 ,
112+ ) ;
100113 await fs . writeFile ( path . join ( binDir , "bin.temp-1" ) , "echo hello" ) ;
101- await fs . writeFile ( path . join ( binDir , "bin.temp-2" ) , "echo hello" ) ;
102- await fs . writeFile ( path . join ( binDir , "bin1" ) , "echo hello" ) ;
103- await fs . writeFile ( path . join ( binDir , "bin2" ) , "echo hello" ) ;
114+ await fs . utimes (
115+ path . join ( binDir , "bin.temp-1" ) ,
116+ oldTime / 1000 ,
117+ oldTime / 1000 ,
118+ ) ;
104119 await fs . writeFile ( path . join ( binDir , "bin.asc" ) , "echo hello" ) ;
120+ await fs . utimes (
121+ path . join ( binDir , "bin.asc" ) ,
122+ oldTime / 1000 ,
123+ oldTime / 1000 ,
124+ ) ;
125+
126+ // Create new files that should be skipped.
127+ await fs . writeFile ( path . join ( binDir , "bin.temp-2" ) , "echo hello" ) ;
105128 await fs . writeFile ( path . join ( binDir , "bin.old-1.asc" ) , "echo hello" ) ;
106129 await fs . writeFile ( path . join ( binDir , "bin.temp-2.asc" ) , "echo hello" ) ;
107130
108- expect ( await cliUtils . rmOld ( path . join ( binDir , "bin1" ) ) ) . toStrictEqual ( [
131+ // Regular files that should never be removed.
132+ await fs . writeFile ( path . join ( binDir , "bin1" ) , "echo hello" ) ;
133+ await fs . writeFile ( path . join ( binDir , "bin2" ) , "echo hello" ) ;
134+
135+ const results = await cliUtils . rmOld ( path . join ( binDir , "bin1" ) ) ;
136+ expect ( results ) . toStrictEqual ( [
109137 {
110138 fileName : "bin.asc" ,
111139 error : undefined ,
@@ -117,6 +145,7 @@ describe("CliUtils", () => {
117145 {
118146 fileName : "bin.old-1.asc" ,
119147 error : undefined ,
148+ skipped : true ,
120149 } ,
121150 {
122151 fileName : "bin.old-2" ,
@@ -129,14 +158,22 @@ describe("CliUtils", () => {
129158 {
130159 fileName : "bin.temp-2" ,
131160 error : undefined ,
161+ skipped : true ,
132162 } ,
133163 {
134164 fileName : "bin.temp-2.asc" ,
135165 error : undefined ,
166+ skipped : true ,
136167 } ,
137168 ] ) ;
138169
139- expect ( await fs . readdir ( path . join ( tmp , "bins" ) ) ) . toStrictEqual ( [
170+ // Verify old files were removed and new files were kept.
171+ const remaining = await fs . readdir ( path . join ( tmp , "bins" ) ) ;
172+ remaining . sort ( ) ;
173+ expect ( remaining ) . toStrictEqual ( [
174+ "bin.old-1.asc" ,
175+ "bin.temp-2" ,
176+ "bin.temp-2.asc" ,
140177 "bin1" ,
141178 "bin2" ,
142179 ] ) ;
0 commit comments