1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-21 15:04:11 -05:00

chore(cli): Fix rename test for XFS (#21215)

Renaming a directory to a path where a non-empty directory already
exists was asserted to always fail with `ENOTEMPTY`
According to glibc manual the function may also fail with `EEXIST` on
"some other systems". One such case is using XFS [^1].

This commit handles the EEXIST case.

[^1]:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/xfs/xfs_inode.c?h=v4.18&id=94710cac0ef4ee177a63b5227664b38c95bbf703#n3082
This commit is contained in:
Florian Schwalm 2023-11-17 23:24:10 +01:00 committed by GitHub
parent f46802cb1e
commit 20bf697ba6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 7 deletions

View file

@ -2,6 +2,8 @@
import {
assert,
assertEquals,
AssertionError,
assertIsError,
assertThrows,
pathToAbsoluteFileUrl,
} from "./test_util.ts";
@ -149,13 +151,22 @@ Deno.test(
Error,
"Is a directory",
);
assertThrows(
() => {
Deno.renameSync(olddir, fulldir);
},
Error,
"Directory not empty",
);
try {
assertThrows(
() => {
Deno.renameSync(olddir, fulldir);
},
Error,
"Directory not empty",
);
} catch (e) {
// rename syscall may also return EEXIST, e.g. with XFS
assertIsError(
e,
AssertionError,
`Expected error message to include "Directory not empty", but got "File exists`,
);
}
assertThrows(
() => {
Deno.renameSync(olddir, file);

View file

@ -8,6 +8,7 @@ export {
assertEquals,
assertFalse,
AssertionError,
assertIsError,
assertMatch,
assertNotEquals,
assertNotStrictEquals,