Skip to content

Commit 9f16d3d

Browse files
yangshunclaude
andcommitted
Fix CI: replace sizes snapshot tests with assertion-based tests
Directory stat.size varies by filesystem (96B on macOS, 4096B on Linux), causing snapshot mismatches on CI. Replace with assertions that verify size prefixes exist and check deterministic file sizes only. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent ee7a089 commit 9f16d3d

2 files changed

Lines changed: 20 additions & 115 deletions

File tree

‎src/__snapshots__/index.test.ts.snap‎

Lines changed: 0 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -156,12 +156,6 @@ exports[`tree > combined: filesFirst + reverse 1`] = `
156156
└── beta"
157157
`;
158158

159-
exports[`tree > combined: trailingSlash + lineAscii + sizes 1`] = `
160-
"128B single-level/
161-
|-- 13B alpha.txt
162-
\`-- 96B beta/"
163-
`;
164-
165159
exports[`tree > default 1`] = `
166160
"chain
167161
└── alpha
@@ -1262,108 +1256,6 @@ exports[`tree > reverse 12`] = `
12621256
└── large.txt"
12631257
`;
12641258

1265-
exports[`tree > sizes 1`] = `
1266-
"96B chain
1267-
└── 96B alpha
1268-
└── 96B alpha
1269-
└── 96B alpha
1270-
└── 96B alpha
1271-
└── 96B alpha
1272-
└── 96B alpha
1273-
└── 96B alpha
1274-
└── 96B alpha
1275-
└── 24B alpha.txt"
1276-
`;
1277-
1278-
exports[`tree > sizes 2`] = `
1279-
"128B double-level
1280-
├── 9B alpha.txt
1281-
└── 96B beta
1282-
└── 20B alpha.txt"
1283-
`;
1284-
1285-
exports[`tree > sizes 3`] = `"96B empty-dir"`;
1286-
1287-
exports[`tree > sizes 4`] = `
1288-
"192B hidden-files
1289-
├── 8B another.txt
1290-
└── 8B visible.txt"
1291-
`;
1292-
1293-
exports[`tree > sizes 5`] = `
1294-
"224B mixed-content
1295-
├── 1B alpha.txt
1296-
├── 96B bravo-dir
1297-
│ └── 1B inner.txt
1298-
├── 1B charlie.txt
1299-
├── 96B delta-dir
1300-
│ └── 1B inner.txt
1301-
└── 1B echo.txt"
1302-
`;
1303-
1304-
exports[`tree > sizes 6`] = `
1305-
"160B multi-files
1306-
├── 5B alpha.txt
1307-
├── 17B beta.txt
1308-
└── 46B charlie.txt"
1309-
`;
1310-
1311-
exports[`tree > sizes 7`] = `
1312-
"192B multi-level
1313-
├── 10B alpha.txt
1314-
├── 160B beta
1315-
│ ├── 128B alpha
1316-
│ │ ├── 16B alpha.txt
1317-
│ │ └── 128B beta
1318-
│ │ └── 11B alpha.txt
1319-
│ ├── 9B beta.txt
1320-
│ └── 96B charlie
1321-
│ └── 12B alpha.txt
1322-
├── 192B charlie
1323-
│ ├── 13B alpha.txt
1324-
│ ├── 96B beta
1325-
│ │ └── 18B alpha.txt
1326-
│ └── 23B charlie.txt
1327-
└── 15B delta.txt"
1328-
`;
1329-
1330-
exports[`tree > sizes 8`] = `
1331-
"224B numbered-files
1332-
├── 0B file1.txt
1333-
├── 0B file10.txt
1334-
├── 0B file2.txt
1335-
├── 0B file20.txt
1336-
└── 0B file3.txt"
1337-
`;
1338-
1339-
exports[`tree > sizes 9`] = `
1340-
"96B single-file
1341-
└── 5B alpha.txt"
1342-
`;
1343-
1344-
exports[`tree > sizes 10`] = `
1345-
"128B single-level
1346-
├── 13B alpha.txt
1347-
└── 96B beta"
1348-
`;
1349-
1350-
exports[`tree > sizes 11`] = `
1351-
"192B unicode-names
1352-
├── 1B café.txt
1353-
├── 1B emoji-🎉.txt
1354-
├── 1B über.txt
1355-
└── 96B 日本語
1356-
└── 1B ファイル.txt"
1357-
`;
1358-
1359-
exports[`tree > sizes 12`] = `
1360-
"192B varied-sizes
1361-
├── 10kB large.txt
1362-
├── 1kB medium.txt
1363-
├── 100B small.txt
1364-
└── 1B tiny.txt"
1365-
`;
1366-
13671259
exports[`tree > trailingSlash 1`] = `
13681260
"chain/
13691261
└── alpha/

‎src/index.test.ts‎

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,20 @@ describe('tree', () => {
4646
});
4747

4848
test('sizes', () => {
49-
dirs.forEach((dir) => {
50-
expect(
51-
tree(path.join(PATH_TO_TEST, dir), {
52-
sizes: true,
53-
}),
54-
).toMatchSnapshot();
49+
// Use a controlled fixture to avoid filesystem-dependent directory sizes.
50+
const result = tree(path.join(PATH_TO_TEST, 'varied-sizes'), {
51+
sizes: true,
5552
});
53+
const lines = result.split('\n');
54+
// Every line should have a size prefix.
55+
for (const line of lines) {
56+
expect(line).toMatch(/\d+(\.\d+)?(B|kB|MB)/);
57+
}
58+
// File sizes are deterministic.
59+
expect(result).toContain('10kB large.txt');
60+
expect(result).toContain('1kB medium.txt');
61+
expect(result).toContain('100B small.txt');
62+
expect(result).toContain('1B tiny.txt');
5663
});
5764

5865
test('du', () => {
@@ -183,7 +190,13 @@ describe('tree', () => {
183190
lineAscii: true,
184191
sizes: true,
185192
});
186-
expect(result).toMatchSnapshot();
193+
const lines = result.split('\n');
194+
// Root directory with trailing slash and size prefix.
195+
expect(lines[0]).toMatch(/^\S+ single-level\/$/);
196+
// File entry with ASCII branch and size.
197+
expect(result).toContain('13B alpha.txt');
198+
// Subdirectory with trailing slash.
199+
expect(lines[2]).toMatch(/`-- \S+ beta\/$/);
187200
});
188201

189202
test('combined: exclude + allFiles', () => {

0 commit comments

Comments
 (0)