Refactor of error codes in import/export filters
I've changed KisImageBuilder_RESULT and ConversionStatus to KisImportExportErrorCode to unify error handling in import/export filters.
In the process I fixed some bugs and silent failures like:
- parsing errors in xcf library causing crash;
- saving tiff file to readonly location causing crash;
- saving exr file to readonly location causing std::exception and infinite waiting or silent failure;
- silent failure of saving spriter file to readonly location;
- crash when opening a preasumbly heightmap file that had 0 bytes;
I added tests that checks if import/export filters handles edge cases and broken files properly:
- saving to readonly location (no permission to write)
- opening from writeonly file (no permission to read)
- opening an empty file (incorrect format)
Test Plan
-
Go to ./build/plugins/impex and run 'make test'. There are three tests that fails now:
- ora (it has nearly no error handling, so it fails the test)
- svg (the same as ora)
- exr (make sure to click "OK", then the relevant test will pass - but there is still a test that fails on master and on my branch too which is not relevant to changes I've made, so 'make test' will show kis_exr_test as failed. Make sure to run 'exr/tests/kis_exr_test' to check if new tests pass)
-
Open Krita and open/save files in different formats
Formalities Checklist
-
I confirmed this builds. -
I confirmed Krita ran and the relevant functions work. -
I tested the relevant unit tests and can confirm they are not broken. (If not possible, don't hesitate to ask for help!) -
I made sure my commits build individually and have good descriptions as per KDE guidelines. -
I made sure my code conforms to the standards set in the HACKING file. -
I can confirm the code is licensed and attributed appropriately, and that unattributed code is mine, as per KDE Licensing Policy.
Edited by Agata Cacko