mirror of
https://github.com/lovell/sharp.git
synced 2025-12-06 03:51:40 +01:00
Improve error messaging when only warnings issued #4465
This commit is contained in:
parent
b7fda60a85
commit
c1c16ed3e6
@ -9,3 +9,6 @@ slug: changelog/v0.34.5
|
||||
* Add support for BigTIFF output.
|
||||
[#4459](https://github.com/lovell/sharp/pull/4459)
|
||||
[@throwbi](https://github.com/throwbi)
|
||||
|
||||
* Improve error messaging when only warnings issued.
|
||||
[#4465](https://github.com/lovell/sharp/issues/4465)
|
||||
|
||||
@ -1277,10 +1277,15 @@ class PipelineWorker : public Napi::AsyncWorker {
|
||||
char const *what = err.what();
|
||||
if (what && what[0]) {
|
||||
(baton->err).append(what);
|
||||
} else {
|
||||
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
|
||||
vips_error_clear();
|
||||
vips_thread_shutdown();
|
||||
@ -1293,7 +1298,11 @@ class PipelineWorker : public Napi::AsyncWorker {
|
||||
// Handle warnings
|
||||
std::string warning = sharp::VipsWarningPop();
|
||||
while (!warning.empty()) {
|
||||
if (baton->errUseWarning) {
|
||||
(baton->err).append("\n").append(warning);
|
||||
} else {
|
||||
debuglog.Call(Receiver().Value(), { Napi::String::New(env, warning) });
|
||||
}
|
||||
warning = sharp::VipsWarningPop();
|
||||
}
|
||||
|
||||
|
||||
@ -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),
|
||||
|
||||
BIN
test/fixtures/bonne.geo.tif
vendored
Normal file
BIN
test/fixtures/bonne.geo.tif
vendored
Normal file
Binary file not shown.
1
test/fixtures/index.js
vendored
1
test/fixtures/index.js
vendored
@ -113,6 +113,7 @@ module.exports = {
|
||||
inputTiff8BitDepth: getPath('8bit_depth.tiff'),
|
||||
inputTifftagPhotoshop: getPath('tifftag-photoshop.tiff'), // https://github.com/lovell/sharp/issues/1600
|
||||
inputTiffFogra: getPath('fogra-0-100-100-0.tif'), // https://github.com/lovell/sharp/issues/4045
|
||||
inputTiffGeo: getPath('bonne.geo.tif'), // https://download.osgeo.org/geotiff/samples/intergraph
|
||||
|
||||
inputJp2: getPath('relax.jp2'), // https://www.fnordware.com/j2k/relax.jp2
|
||||
inputJp2TileParts: getPath('relax_tileparts.jp2'), // kdu_expand -i relax.jp2 -o relax-tmp.tif ; kdu_compress -i relax-tmp.tif -o relax_tileparts.jp2 -jp2_space sRGB Clayers=8 -rate 1.0,0.04 Stiles='{128,128}' ORGtparts=L ; rm relax-tmp.tif
|
||||
|
||||
@ -103,4 +103,11 @@ describe('failOn', () => {
|
||||
fs.createReadStream(fixtures.inputJpgTruncated).pipe(writable);
|
||||
return writable.toBuffer();
|
||||
});
|
||||
|
||||
it('converts warnings to error for GeoTIFF', async () => {
|
||||
await assert.rejects(
|
||||
sharp(fixtures.inputTiffGeo).toBuffer(),
|
||||
/Unknown field with tag 33550/
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user