Improve error messaging when only warnings issued #4465

This commit is contained in:
Lovell Fuller
2025-10-17 14:57:38 +01:00
parent b7fda60a85
commit c1c16ed3e6
6 changed files with 24 additions and 2 deletions

View File

@@ -1278,7 +1278,12 @@ class PipelineWorker : public Napi::AsyncWorker {
if (what && what[0]) {
(baton->err).append(what);
} else {
(baton->err).append("Unknown error");
if (baton->input->failOn == VIPS_FAIL_ON_WARNING) {
(baton->err).append("Warning treated as error due to failOn setting");
baton->errUseWarning = true;
} else {
(baton->err).append("Unknown error");
}
}
}
// Clean up libvips' per-request data and threads
@@ -1293,7 +1298,11 @@ class PipelineWorker : public Napi::AsyncWorker {
// Handle warnings
std::string warning = sharp::VipsWarningPop();
while (!warning.empty()) {
debuglog.Call(Receiver().Value(), { Napi::String::New(env, warning) });
if (baton->errUseWarning) {
(baton->err).append("\n").append(warning);
} else {
debuglog.Call(Receiver().Value(), { Napi::String::New(env, warning) });
}
warning = sharp::VipsWarningPop();
}

View File

@@ -198,6 +198,7 @@ struct PipelineBaton {
bool jxlLossless;
VipsBandFormat rawDepth;
std::string err;
bool errUseWarning;
int keepMetadata;
int withMetadataOrientation;
double withMetadataDensity;
@@ -373,6 +374,7 @@ struct PipelineBaton {
jxlEffort(7),
jxlLossless(false),
rawDepth(VIPS_FORMAT_UCHAR),
errUseWarning(false),
keepMetadata(0),
withMetadataOrientation(-1),
withMetadataDensity(0.0),