mirror of
https://github.com/morluto/rea.git
synced 2026-11-11 01:13:39 +00:00
fix(reference): preserve import cancellation provenance (#9597)
* fix(reference): preserve import cancellation reason * test(reference): cover null cancellation during failed cleanup * test(reference): always release fixture directory
This commit is contained in:
1 parent
e66e92904e
commit
e8d1bbc98b
9 files changed
+149
-31
No files matched your search
@@ -80,11 +80,17 @@ const resolveRoot = async (
|
||||
signal?: AbortSignal,
|
||||
): Promise<Result<string, ReferenceSourceImportError>> => {
|
||||
if (isAborted(signal))
|
||||
return err(failure("cancelled", "Reference source import cancelled"));
|
||||
return err({
|
||||
...failure("cancelled", "Reference source import cancelled"),
|
||||
cause: signal?.reason,
|
||||
});
|
||||
try {
|
||||
const metadata = await stat(requestedRoot);
|
||||
if (isAborted(signal))
|
||||
return err(failure("cancelled", "Reference source import cancelled"));
|
||||
return err({
|
||||
...failure("cancelled", "Reference source import cancelled"),
|
||||
cause: signal?.reason,
|
||||
});
|
||||
if (!metadata.isDirectory())
|
||||
return err(
|
||||
failure(
|
||||
@@ -94,11 +100,17 @@ const resolveRoot = async (
|
||||
);
|
||||
const canonicalRoot = await realpath(requestedRoot);
|
||||
if (isAborted(signal))
|
||||
return err(failure("cancelled", "Reference source import cancelled"));
|
||||
return err({
|
||||
...failure("cancelled", "Reference source import cancelled"),
|
||||
cause: signal?.reason,
|
||||
});
|
||||
return ok(canonicalRoot);
|
||||
} catch (cause: unknown) {
|
||||
if (isAborted(signal))
|
||||
return err(failure("cancelled", "Reference source import cancelled"));
|
||||
return err({
|
||||
...failure("cancelled", "Reference source import cancelled"),
|
||||
cause: signal?.reason,
|
||||
});
|
||||
const rootFailure = rootFilesystemFailure(
|
||||
cause,
|
||||
"Reference source root could not be resolved",
|
||||
@@ -242,7 +254,11 @@ const readIgnoreCase = async (
|
||||
} catch (cause: unknown) {
|
||||
if (readFailure !== undefined) return err(readFailure);
|
||||
if (isAborted(signal) || isIgnorePolicyCancellation(cause))
|
||||
return err(failure("cancelled", "Reference source import cancelled"));
|
||||
return err({
|
||||
...failure("cancelled", "Reference source import cancelled"),
|
||||
cause:
|
||||
signal?.aborted === true ? signal.reason : ignorePolicyCause(cause),
|
||||
});
|
||||
return err({
|
||||
...failure(
|
||||
"io",
|
||||
|
||||
Reference in new issue
Block a user