Skip to content

Use correctly-aligned codepaths on all platforms, not just Solaris & ARM

matoro1 requested to merge matoro1/exempi:master into master

On SPARC, and under some circumstances 32-bit ARM, unaligned accesses will always crash with SIGBUS. However, they are undefined behavior on all platforms, so it is never correct to issue unaligned accesses. UBSAN can identify this on gcc or clang. The aligned path typically uses memcpy(), which modern compilers can easily optimize away.

I discovered this issue in the test suite for python-xmp-toolkit, which uses exempi. Here's the difference in the UBSAN logs, before:

python3.11 -m unittest_or_fail discover -v
test_delete_property (test.test_core_unit.NegativeTestCases.test_delete_property)
Verify the deleting a phony property does not raise an exception. ... ok
test_delete_property_bad_schema (test.test_core_unit.NegativeTestCases.test_delete_property_bad_schema)
Specifying a bad schema trigger an exception. ... Unregistered schema namespace URI
ok
test_2bytes_codepoint (test.test_core_unit.UnicodeTestCase.test_2bytes_codepoint)
Verify that we can create and read back utf-8 where some characters ... ok
test_get_localized_text (test.test_core_unit.UnicodeTestCase.test_get_localized_text)
Verify that unicode string literals are properly interpreted. ... ok
test_libxmp_version (test.test_core_unit.UnicodeTestCase.test_libxmp_version)
Verify that the version attribute is accessible. ... ok
test_parse_from_str_3_bytes_per_codepoint (test.test_core_unit.UnicodeTestCase.test_parse_from_str_3_bytes_per_codepoint)
Verify that we can create and read back utf-8 where each character ... ok
test_xmpmeta_repr (test.test_core_unit.UnicodeTestCase.test_xmpmeta_repr)
Should be a str in both 2.x and 3.x ... ok
test_xmpmeta_str (test.test_core_unit.UnicodeTestCase.test_xmpmeta_str)
In 2.7, str must return a byte string.  In 3.x, it is a str. ... ok
test_xmpmeta_unicode_27 (test.test_core_unit.UnicodeTestCase.test_xmpmeta_unicode_27)
In 2.7, unicode(xmp) should return a unicode object. ... ok
test_file_to_dict (test.test_core_unit.UtilsTestCase.test_file_to_dict) ... ../../../source/EndianUtils.hpp:174:2: runtime error: load of misaligned address 0x00014c95e7d2 for type 'XMP_Uns32', which requires 4 byte alignment
0x00014c95e7d2: note: pointer points here
 00 00  01 00 38 42 49 4d 03 f5  00 00 00 00 00 48 00 2f  66 66 00 01 00 6c 66 66  00 06 00 00 00 00
              ^ 
../../../source/EndianUtils.hpp:148:2: runtime error: load of misaligned address 0x00014c8ea7c3 for type 'XMP_Uns16', which requires 2 byte alignment
0x00014c8ea7c3: note: pointer points here
 00  1c 01 5a 00 03 1b 25 47  1c 02 00 00 02 00 04 1c  02 05 00 2a 43 72 61 62  20 4e 65 62 75 6c 61
              ^ 
RIFF.cpp:207:61: runtime error: downcast of address 0x00014c930440 which does not point to an object of type 'ValueChunk'
0x00014c930440: note: object is of type 'RIFF::Chunk'
 00 00 00 00  70 b6 de ac ff 7f 00 00  03 00 00 00 00 00 00 00  b0 e8 92 4c 01 00 00 00  50 72 6d 4c
              ^~~~~~~~~~~~~~~~~~~~~~~
              vptr for 'RIFF::Chunk'
../../../source/EndianUtils.hpp:125:2: runtime error: load of misaligned address 0x7fffeee2452a for type 'XMP_Uns32', which requires 4 byte alignment
0x7fffeee2452a: note: pointer points here
 00 01  00 00 00 00 00 00 00 00  00 00 00 00 43 3a 5c 44  6f 63 75 6d 65 6e 74 73  20 61 6e 64 20 53
              ^ 
../../../source/EndianUtils.hpp:125:2: runtime error: store to misaligned address 0x7fffeee2452a for type 'XMP_Uns32', which requires 4 byte alignment
0x7fffeee2452a: note: pointer points here
 00 01  00 00 00 00 00 00 00 00  00 00 00 00 43 3a 5c 44  6f 63 75 6d 65 6e 74 73  20 61 6e 64 20 53
              ^ 
TIFF_MemoryReader.cpp:681:12: runtime error: member access within misaligned address 0x00014c8e993a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e993a: note: pointer points here
 00 08  00 08 01 0e 00 02 00 00  00 58 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:682:12: runtime error: member access within misaligned address 0x00014c8e993a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e993a: note: pointer points here
 00 08  00 08 0e 01 00 02 00 00  00 58 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:683:12: runtime error: member access within misaligned address 0x00014c8e993a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e993a: note: pointer points here
 00 08  00 08 0e 01 02 00 00 00  00 58 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
../../../source/EndianUtils.hpp:125:2: runtime error: load of misaligned address 0x00014c8e993e for type 'XMP_Uns32', which requires 4 byte alignment
0x00014c8e993e: note: pointer points here
 0e 01 02 00 00 00  00 58 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05 00 00  00 01
             ^ 
../../../source/EndianUtils.hpp:125:2: runtime error: store to misaligned address 0x00014c8e993e for type 'XMP_Uns32', which requires 4 byte alignment
0x00014c8e993e: note: pointer points here
 0e 01 02 00 00 00  00 58 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05 00 00  00 01
             ^ 
TIFF_MemoryReader.cpp:686:21: runtime error: member access within misaligned address 0x00014c8e993a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e993a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:687:28: runtime error: member access within misaligned address 0x00014c8e993a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e993a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:689:22: runtime error: member access within misaligned address 0x00014c8e993a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e993a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:689:75: runtime error: member access within misaligned address 0x00014c8e993a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e993a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:693:15: runtime error: member access within misaligned address 0x00014c8e993a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e993a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:693:62: runtime error: member access within misaligned address 0x00014c8e993a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e993a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:693:21: runtime error: member access within misaligned address 0x00014c8e993a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e993a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:694:20: runtime error: member access within misaligned address 0x00014c8e993a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e993a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:695:41: runtime error: member access within misaligned address 0x00014c8e993a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e993a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:696:22: runtime error: member access within misaligned address 0x00014c8e993a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e993a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 6e 00 00 00 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:696:52: runtime error: member access within misaligned address 0x00014c8e993a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e993a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 6e 00 00 00 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:699:21: runtime error: member access within misaligned address 0x00014c8e993a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e993a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 6e 00 00 00 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:699:60: runtime error: member access within misaligned address 0x00014c8e993a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e993a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 6e 00 00 00 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
../../../source/EndianUtils.hpp:174:2: runtime error: load of misaligned address 0x00014c8e999a for type 'XMP_Uns32', which requires 4 byte alignment
0x00014c8e999a: note: pointer points here
 00 00  01 08 00 00 01 32 58 4d  50 46 69 6c 65 73 20 42  6c 75 65 53 71 75 61 72  65 20 74 65 73 74
              ^ 
TIFF_MemoryReader.cpp:180:39: runtime error: member access within misaligned address 0x00014c8e996a for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e996a: note: pointer points here
 ce 00  00 00 28 01 03 00 02 00  00 00 00 02 00 00 31 01  02 00 1e 00 00 00 d6 00  00 00 32 01 02 00
              ^ 
TIFF_MemoryReader.cpp:193:20: runtime error: member access within misaligned address 0x00014c8e998e for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e998e: note: pointer points here
 f4 00 00 00 69 87  04 00 04 00 00 00 00 00  01 08 00 00 01 32 58 4d  50 46 69 6c 65 73 20 42  6c 75
             ^ 
TIFF_MemoryReader.cpp:604:41: runtime error: member access within misaligned address 0x00014c8e998e for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e998e: note: pointer points here
 f4 00 00 00 69 87  04 00 04 00 00 00 00 00  01 08 00 00 01 32 58 4d  50 46 69 6c 65 73 20 42  6c 75
             ^ 
TIFF_MemoryReader.cpp:604:82: runtime error: member access within misaligned address 0x00014c8e998e for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e998e: note: pointer points here
 f4 00 00 00 69 87  04 00 04 00 00 00 00 00  01 08 00 00 01 32 58 4d  50 46 69 6c 65 73 20 42  6c 75
             ^ 
../../../source/EndianUtils.hpp:192:2: runtime error: load of misaligned address 0x00014c8e9992 for type 'XMP_Uns32', which requires 4 byte alignment
0x00014c8e9992: note: pointer points here
 69 87  04 00 04 00 00 00 00 00  01 08 00 00 01 32 58 4d  50 46 69 6c 65 73 20 42  6c 75 65 53 71 75
              ^ 
TIFF_MemoryReader.cpp:605:43: runtime error: member access within misaligned address 0x00014c8e998e for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e998e: note: pointer points here
 f4 00 00 00 69 87  04 00 04 00 00 00 00 00  01 08 00 00 01 32 58 4d  50 46 69 6c 65 73 20 42  6c 75
             ^ 
TIFF_MemoryReader.cpp:222:38: runtime error: member access within misaligned address 0x00014c8e9946 for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e9946: note: pointer points here
 6e 00 00 00 12 01  03 00 02 00 00 00 00 01  00 00 1a 01 05 00 08 00  00 00 c6 00 00 00 1b 01  05 00
             ^ 
TIFF_MemoryReader.cpp:223:39: runtime error: member access within misaligned address 0x00014c8e9946 for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e9946: note: pointer points here
 6e 00 00 00 12 01  03 00 02 00 00 00 00 01  00 00 1a 01 05 00 08 00  00 00 c6 00 00 00 1b 01  05 00
             ^ 
TIFF_MemoryReader.cpp:229:29: runtime error: member access within misaligned address 0x00014c8e9946 for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e9946: note: pointer points here
 6e 00 00 00 12 01  03 00 02 00 00 00 00 01  00 00 1a 01 05 00 08 00  00 00 c6 00 00 00 1b 01  05 00
             ^ 
../../../XMPFiles/source/FormatSupport/TIFF_Support.hpp:807:23: runtime error: member access within misaligned address 0x00014c8e9946 for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e9946: note: pointer points here
 6e 00 00 00 12 01  03 00 02 00 00 00 00 01  00 00 1a 01 05 00 08 00  00 00 c6 00 00 00 1b 01  05 00
             ^ 
../../../XMPFiles/source/FormatSupport/TIFF_Support.hpp:808:25: runtime error: member access within misaligned address 0x00014c8e9946 for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e9946: note: pointer points here
 6e 00 00 00 12 01  03 00 02 00 00 00 00 01  00 00 1a 01 05 00 08 00  00 00 c6 00 00 00 1b 01  05 00
             ^ 
../../../XMPFiles/source/FormatSupport/TIFF_Support.hpp:810:33: runtime error: member access within misaligned address 0x00014c8e9952 for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e9952: note: pointer points here
 00 01  00 00 1a 01 05 00 08 00  00 00 c6 00 00 00 1b 01  05 00 08 00 00 00 ce 00  00 00 28 01 03 00
              ^ 
../../../XMPFiles/source/FormatSupport/TIFF_Support.hpp:811:28: runtime error: member access within misaligned address 0x00014c8e9952 for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c8e9952: note: pointer points here
 00 01  00 00 1a 01 05 00 08 00  00 00 c6 00 00 00 1b 01  05 00 08 00 00 00 ce 00  00 00 28 01 03 00
              ^ 
../../../source/EndianUtils.hpp:192:2: runtime error: load of misaligned address 0x00014c8e99f6 for type 'XMP_Uns32', which requires 4 byte alignment
0x00014c8e99f6: note: pointer points here
 69 66 2e 00 00 0a  fc 80 00 00 27 10 00 0a  fc 80 00 00 27 10 41 64  6f 62 65 20 50 68 6f 74  6f 73
             ^ 
../../../source/EndianUtils.hpp:174:2: runtime error: load of misaligned address 0x00014c8eaefe for type 'XMP_Uns32', which requires 4 byte alignment
0x00014c8eaefe: note: pointer points here
 64 6c 65 72 00 00  01 57 6d 69 6e 66 00 00  00 14 76 6d 68 64 00 00  00 01 00 40 80 00 80 00  80 00
             ^ 
../../../source/EndianUtils.hpp:174:2: runtime error: load of misaligned address 0x7fffacd4878d for type 'XMP_Uns32', which requires 4 byte alignment
0x7fffacd4878d: note: pointer points here
 6f 6f 76 2f 75 64 74  61 2f 58 4d 50 5f 00 00  58 4d 50 5f 45 6e 66 6f  72 63 65 20 66 61 69 6c  65
             ^ 
../../../source/EndianUtils.hpp:125:2: runtime error: load of misaligned address 0x7fffeee2451a for type 'XMP_Uns32', which requires 4 byte alignment
0x7fffeee2451a: note: pointer points here
 00 01  00 00 00 00 00 00 00 00  00 00 00 00 43 3a 5c 44  6f 63 75 6d 65 6e 74 73  20 61 6e 64 20 53
              ^ 
../../../source/EndianUtils.hpp:125:2: runtime error: store to misaligned address 0x7fffeee2451a for type 'XMP_Uns32', which requires 4 byte alignment
0x7fffeee2451a: note: pointer points here
 00 01  00 00 00 00 00 00 00 00  00 00 00 00 43 3a 5c 44  6f 63 75 6d 65 6e 74 73  20 61 6e 64 20 53
              ^ 
../../../source/EndianUtils.hpp:174:2: runtime error: load of misaligned address 0x00014c957ee9 for type 'XMP_Uns32', which requires 4 byte alignment
0x00014c957ee9: note: pointer points here
 49 3a ee  43 00 00 0a 2a 69 54 58  74 58 4d 4c 3a 63 6f 6d  2e 61 64 6f 62 65 2e 78  6d 70 00 00 00
              ^ 
../../../source/EndianUtils.hpp:174:2: runtime error: load of misaligned address 0x7fffeee24676 for type 'XMP_Uns32', which requires 4 byte alignment
0x7fffeee24676: note: pointer points here
 00 00 00 03 00 00  00 d8 00 00 01 68 00 08  00 03 00 00 00 00 00 00  00 55 d5 a4 ba 34 f8 50  f0 49
             ^ 
ok
test_file_to_dict_nofile (test.test_core_unit.UtilsTestCase.test_file_to_dict_nofile) ... ok
test_file_to_dict_noxmp (test.test_core_unit.UtilsTestCase.test_file_to_dict_noxmp) ... ok
test_object_to_dict (test.test_core_unit.UtilsTestCase.test_object_to_dict) ... ok
test_object_to_dict_noxmp (test.test_core_unit.UtilsTestCase.test_object_to_dict_noxmp) ... ok
test_clone (test.test_core_unit.XMPMetaTestCase.test_clone) ... ok
test_count_array_items (test.test_core_unit.XMPMetaTestCase.test_count_array_items)
Tests XMPMeta method count_array_items. ... ok
test_does_array_item_exist (test.test_core_unit.XMPMetaTestCase.test_does_array_item_exist)
Tests XMPMeta method does_array_item_exist.  Issue #03 ... ok
test_does_property_exist (test.test_core_unit.XMPMetaTestCase.test_does_property_exist) ... ok
test_exempi_core (test.test_core_unit.XMPMetaTestCase.test_exempi_core)
Corresponds to test_exempi.TestExempi.test_exempi_core ... ok
test_get_localized_text (test.test_core_unit.XMPMetaTestCase.test_get_localized_text) ... ok
test_get_xmp (test.test_core_unit.XMPMetaTestCase.test_get_xmp) ... ok
test_init_del (test.test_core_unit.XMPMetaTestCase.test_init_del) ... ok
test_parse_str (test.test_core_unit.XMPMetaTestCase.test_parse_str) ... ok
test_serialize_and_format (test.test_core_unit.XMPMetaTestCase.test_serialize_and_format) ... Inconsistent options for read-only packet
Inconsistent options for non-packet serialize
Inconsistent options for exact size serialize
ok
test_serialize_str (test.test_core_unit.XMPMetaTestCase.test_serialize_str) ... Inconsistent options for read-only packet
Inconsistent options for non-packet serialize
Inconsistent options for exact size serialize
ok
test_serialize_unicode (test.test_core_unit.XMPMetaTestCase.test_serialize_unicode)
Return type is unicode in 2.7, but str in 3.x ... Inconsistent options for read-only packet
Inconsistent options for non-packet serialize
Inconsistent options for exact size serialize
ok
test_shorthand_rdf (test.test_core_unit.XMPMetaTestCase.test_shorthand_rdf)
Tests pass so long as no error is issued. ... ok
test_skip (test.test_core_unit.XMPMetaTestCase.test_skip)
Verify usage of XMPMeta skip method. ... ok
test_test_files (test.test_core_unit.XMPMetaTestCase.test_test_files) ... ok
test_text_property_450 (test.test_core_unit.XMPMetaTestCase.test_text_property_450) ... ok
test_text_property_450_file (test.test_core_unit.XMPMetaTestCase.test_text_property_450_file) ... ok
test_write_new_property (test.test_core_unit.XMPMetaTestCase.test_write_new_property)
Corresponds to test-write-new-property.cpp ... ok
test_write_new_struct_in_array (test.test_core_unit.XMPMetaTestCase.test_write_new_struct_in_array) ... ok
test_3 (test.test_exempi.TestExempi.test_3)
Corresponds to test3.cpp ... ok
test_bad_formats (test.test_exempi.TestExempi.test_bad_formats)
Verify check_file_format on PDF, Adobe Illustrator, XMP. ... skipped 'Issue 26'
test_bgo (test.test_exempi.TestExempi.test_bgo)
Corresponds to test-bgo.cpp ... TIFF_MemoryReader.cpp:610:39: runtime error: member access within misaligned address 0x00014c98b6a6 for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c98b6a6: note: pointer points here
 00 00 00 c6 25 88  04 00 04 00 00 00 00 00  03 20 00 00 03 32 4e 49  4b 4f 4e 20 43 4f 52 50  4f 52
             ^ 
TIFF_MemoryReader.cpp:610:80: runtime error: member access within misaligned address 0x00014c98b6a6 for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c98b6a6: note: pointer points here
 00 00 00 c6 25 88  04 00 04 00 00 00 00 00  03 20 00 00 03 32 4e 49  4b 4f 4e 20 43 4f 52 50  4f 52
             ^ 
TIFF_MemoryReader.cpp:611:42: runtime error: member access within misaligned address 0x00014c98b6a6 for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00014c98b6a6: note: pointer points here
 00 00 00 c6 25 88  04 00 04 00 00 00 00 00  03 20 00 00 03 32 4e 49  4b 4f 4e 20 43 4f 52 50  4f 52
             ^ 
ok
test_exempi_core (test.test_exempi.TestExempi.test_exempi_core)
According to test-exempi-core.cpp ... ok
test_formats (test.test_exempi.TestExempi.test_formats)
Verify that check_file_format function works as expected. ... ok
test_serialize (test.test_exempi.TestExempi.test_serialize)
Corresponds to test-serialize.cpp ... ok
test_tiff_leak (test.test_exempi.TestExempi.test_tiff_leak)
Corresponds to test-tiff-leak.cpp ... ../../../source/EndianUtils.hpp:174:2: runtime error: load of misaligned address 0x00014c8e5f72 for type 'XMP_Uns32', which requires 4 byte alignment
0x00014c8e5f72: note: pointer points here
 00 00  01 00 38 42 49 4d 03 f5  00 00 00 00 00 48 00 2f  66 66 00 01 00 6c 66 66  00 06 00 00 00 00
              ^ 
../../../source/EndianUtils.hpp:391:2: runtime error: store to misaligned address 0x00014c8ffc83 for type 'XMP_Uns16', which requires 2 byte alignment
0x00014c8ffc83: note: pointer points here
 66  1c 02 19 00 00 00 00 00  64 63 3a 73 75 62 6a 65  63 74 00 6c 6e 73 3a 78  01 00 00 00 6f 62 65
              ^ 
../../../source/EndianUtils.hpp:414:2: runtime error: store to misaligned address 0x00014c98b902 for type 'XMP_Uns32', which requires 4 byte alignment
0x00014c98b902: note: pointer points here
 00 00  01 00 98 4c 01 00 00 00  0a 00 00 00 00 00 00 00  65 78 69 66 3a 46 6c 61  73 68 00 65 74 72
              ^ 
ok
test_write_new_date_property (test.test_exempi.TestExempi.test_write_new_date_property)
TODO:  fill in the doc string ... ok
test_write_new_property (test.test_exempi.TestExempi.test_write_new_property)
Corresponds to test-write-new-property.cpp ... ok
test_xmp_files (test.test_exempi.TestExempi.test_xmp_files)
Corresponds to test_xmp_files.cpp ... ok
test_xmpfiles_write (test.test_exempi.TestExempi.test_xmpfiles_write)
According to test-xmpfiles-write.cpp ... TIFF_FileWriter.cpp:699:43: runtime error: member access within misaligned address 0x00014c95b56a for type 'struct RawIFDEntry', which requires 4 byte alignment
0x00014c95b56a: note: pointer points here
 00 08  00 08 01 0e 00 02 00 00  00 58 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_FileWriter.cpp:702:41: runtime error: member access within misaligned address 0x00014c95b56a for type 'struct RawIFDEntry', which requires 4 byte alignment
0x00014c95b56a: note: pointer points here
 00 08  00 08 01 0e 00 02 00 00  00 58 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_FileWriter.cpp:703:39: runtime error: member access within misaligned address 0x00014c95b56a for type 'struct RawIFDEntry', which requires 4 byte alignment
0x00014c95b56a: note: pointer points here
 00 08  00 08 01 0e 00 02 00 00  00 58 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_FileWriter.cpp:713:38: runtime error: member access within misaligned address 0x00014c95b56a for type 'struct RawIFDEntry', which requires 4 byte alignment
0x00014c95b56a: note: pointer points here
 00 08  00 08 01 0e 00 02 00 00  00 58 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
../../../source/EndianUtils.hpp:192:2: runtime error: load of misaligned address 0x00014c95b572 for type 'XMP_Uns32', which requires 4 byte alignment
0x00014c95b572: note: pointer points here
 00 00  00 58 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05 00 00  00 01 00 00 00 c6
              ^ 
TIFF_FileWriter.cpp:719:45: runtime error: member access within misaligned address 0x00014c95b56a for type 'struct RawIFDEntry', which requires 4 byte alignment
0x00014c95b56a: note: pointer points here
 00 08  00 08 01 0e 00 02 00 00  00 58 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
ok
test_init (test.test_exempi.TestInit.test_init)
TODO:  fill in the docstring ... ok
test_iter_skip_subtree (test.test_exempi.TestIteration.test_iter_skip_subtree)
Alter the iteration midstream. ... ok
test_namespaces (test.test_exempi.TestIteration.test_namespaces)
Iterate through the namespaces. ... skipped 'Issue 27'
test_no_namespace_single_prop_leaf_nodes (test.test_exempi.TestIteration.test_no_namespace_single_prop_leaf_nodes)
Get all the leaf nodes from a single property. ... skipped 'Issue 28.'
test_single_namespace_leaf_nodes (test.test_exempi.TestIteration.test_single_namespace_leaf_nodes)
Get all the leaf nodes from a single namespace. ... ok
test_single_namespace_leaf_nodes_omit_qualifiers (test.test_exempi.TestIteration.test_single_namespace_leaf_nodes_omit_qualifiers)
Get all the leaf nodes (no qualifiers) from a single namespace. ... ok
test_single_namespace_properties (test.test_exempi.TestIteration.test_single_namespace_properties)
Get all the properties from a single namespace. ... ok
test_single_namespace_single_path_children (test.test_exempi.TestIteration.test_single_namespace_single_path_children)
Get just child nodes from a single path, single namespace. ... ok
test_single_namespace_single_path_leaf_names (test.test_exempi.TestIteration.test_single_namespace_single_path_leaf_names)
Get just leaf names from a single path, single namespace. ... skipped 'Issue x1'
test_single_namespace_single_path_leaf_nodes (test.test_exempi.TestIteration.test_single_namespace_single_path_leaf_nodes)
Get all the leaf nodes from a single path, single namespace. ... ok
test_file_not_there_check_file_format (test.test_exempi.TestPythonXmpToolkit.test_file_not_there_check_file_format)
The library does not catch comfortably, so we perform our own check. ... ok
test_file_not_there_open_new (test.test_exempi.TestPythonXmpToolkit.test_file_not_there_open_new)
The library does not catch comfortably, so we perform our own check. ... ok
test_can_inject_xmp_info_png (test.test_files.XMPFilesTestCase.test_can_inject_xmp_info_png)
Verify behavior of being able to inject XMP into barren PNG ... ok
test_can_put_xmp (test.test_files.XMPFilesTestCase.test_can_put_xmp) ... ok
test_cannot_inject_xmp_info_pdf (test.test_files.XMPFilesTestCase.test_cannot_inject_xmp_info_pdf)
Verify behavior of not being able to inject XMP into barren PDF ... ok
test_close_file (test.test_files.XMPFilesTestCase.test_close_file) ... ok
test_exempi_bad_combinations (test.test_files.XMPFilesTestCase.test_exempi_bad_combinations)
Verify bad combinations of formats and open flags. ... ok
test_get_xmp (test.test_files.XMPFilesTestCase.test_get_xmp) ... ok
test_init_del (test.test_files.XMPFilesTestCase.test_init_del) ... ok
test_non_ascii_filename (test.test_files.XMPFilesTestCase.test_non_ascii_filename)
repr must not fail on files with non-ascii characters ... ok
test_open_file (test.test_files.XMPFilesTestCase.test_open_file) ... ok
test_open_file_with_options (test.test_files.XMPFilesTestCase.test_open_file_with_options)
Try all open options ... ok
test_open_open_limitscanning (test.test_files.XMPFilesTestCase.test_open_open_limitscanning)
Verify this library failure. ... ok
test_open_use_smarthandler (test.test_files.XMPFilesTestCase.test_open_use_smarthandler)
Verify this library failure. ... ok
test_print_bom (test.test_files.XMPFilesTestCase.test_print_bom)
Should be able to print XMP packets despite BOM. ... ok
test_repr (test.test_files.XMPFilesTestCase.test_repr)
Test __repr__ and __str__ on XMPFiles objects. ... ok
test_test_files (test.test_files.XMPFilesTestCase.test_test_files) ... ok
test_tiff_smarthandler (test.test_files.XMPFilesTestCase.test_tiff_smarthandler)
Verify action of TIFF smarthandler when tag length > 255 ... ok
test_write_in_readonly (test.test_files.XMPFilesTestCase.test_write_in_readonly)
If not "open_forupdate = True", should raise exception ... ok
test_jpeg (test.test_roundtrip.TestRoundTrip.test_jpeg)
Create XMP from scratch to store in a jpeg. ... MD5.cpp:164:15: runtime error: null pointer passed as argument 2, which is declared to never be null
../../../source/EndianUtils.hpp:414:2: runtime error: store to misaligned address 0x00014c42241e for type 'XMP_Uns32', which requires 4 byte alignment
0x00014c42241e: note: pointer points here
 01 12 00 03 00 00  c0 5b 96 4c 01 00 00 00  50 18 91 4c 01 00 00 00  11 01 c3 ac ff 7f 00 00  11 01
             ^ 
../../../source/EndianUtils.hpp:429:2: runtime error: store to misaligned address 0x00014c422422 for type 'XMP_Uns32', which requires 4 byte alignment
0x00014c422422: note: pointer points here
 00 00  00 01 96 4c 01 00 00 00  50 18 91 4c 01 00 00 00  11 01 c3 ac ff 7f 00 00  11 01 04 00 0a 00
              ^ 
ok
test_sturm_und_drang (test.test_roundtrip.TestRoundTrip.test_sturm_und_drang)
Should be able to write a property which includes umlauts. ... ok
test_tiff (test.test_roundtrip.TestRoundTrip.test_tiff)
Write to a TIFF that does not already have the XMP tag. ... ok

----------------------------------------------------------------------
Ran 76 tests in 3.661s

OK (skipped=4)

After this patch:

python3.11 -m unittest_or_fail discover -v
test_delete_property (test.test_core_unit.NegativeTestCases.test_delete_property)
Verify the deleting a phony property does not raise an exception. ... ok
test_delete_property_bad_schema (test.test_core_unit.NegativeTestCases.test_delete_property_bad_schema)
Specifying a bad schema trigger an exception. ... Unregistered schema namespace URI
ok
test_2bytes_codepoint (test.test_core_unit.UnicodeTestCase.test_2bytes_codepoint)
Verify that we can create and read back utf-8 where some characters ... ok
test_get_localized_text (test.test_core_unit.UnicodeTestCase.test_get_localized_text)
Verify that unicode string literals are properly interpreted. ... ok
test_libxmp_version (test.test_core_unit.UnicodeTestCase.test_libxmp_version)
Verify that the version attribute is accessible. ... ok
test_parse_from_str_3_bytes_per_codepoint (test.test_core_unit.UnicodeTestCase.test_parse_from_str_3_bytes_per_codepoint)
Verify that we can create and read back utf-8 where each character ... ok
test_xmpmeta_repr (test.test_core_unit.UnicodeTestCase.test_xmpmeta_repr)
Should be a str in both 2.x and 3.x ... ok
test_xmpmeta_str (test.test_core_unit.UnicodeTestCase.test_xmpmeta_str)
In 2.7, str must return a byte string.  In 3.x, it is a str. ... ok
test_xmpmeta_unicode_27 (test.test_core_unit.UnicodeTestCase.test_xmpmeta_unicode_27)
In 2.7, unicode(xmp) should return a unicode object. ... ok
test_file_to_dict (test.test_core_unit.UtilsTestCase.test_file_to_dict) ... RIFF.cpp:207:61: runtime error: downcast of address 0x00013f03d920 which does not point to an object of type 'ValueChunk'
0x00013f03d920: note: object is of type 'RIFF::Chunk'
 00 00 00 00  70 b6 1e 7f ff 7f 00 00  03 00 00 00 00 00 00 00  90 5f ee 3e 01 00 00 00  50 72 6d 4c
              ^~~~~~~~~~~~~~~~~~~~~~~
              vptr for 'RIFF::Chunk'
TIFF_MemoryReader.cpp:674:12: runtime error: member access within misaligned address 0x00013f0a362a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a362a: note: pointer points here
 00 08  00 08 01 0e 00 02 00 00  00 58 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:675:12: runtime error: member access within misaligned address 0x00013f0a362a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a362a: note: pointer points here
 00 08  00 08 0e 01 00 02 00 00  00 58 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:676:12: runtime error: member access within misaligned address 0x00013f0a362a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a362a: note: pointer points here
 00 08  00 08 0e 01 02 00 00 00  00 58 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:679:21: runtime error: member access within misaligned address 0x00013f0a362a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a362a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:680:28: runtime error: member access within misaligned address 0x00013f0a362a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a362a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:682:22: runtime error: member access within misaligned address 0x00013f0a362a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a362a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:682:75: runtime error: member access within misaligned address 0x00013f0a362a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a362a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:684:9: runtime error: member access within misaligned address 0x00013f0a362a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a362a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:685:33: runtime error: member access within misaligned address 0x00013f0a362a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a362a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:686:57: runtime error: member access within misaligned address 0x00013f0a362a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a362a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:690:21: runtime error: member access within misaligned address 0x00013f0a362a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a362a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:691:10: runtime error: member access within misaligned address 0x00013f0a362a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a362a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:692:40: runtime error: member access within misaligned address 0x00013f0a362a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a362a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:693:23: runtime error: member access within misaligned address 0x00013f0a362a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a362a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 6e 00 00 00 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:693:68: runtime error: member access within misaligned address 0x00013f0a362a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a362a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 6e 00 00 00 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:698:22: runtime error: member access within misaligned address 0x00013f0a362a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a362a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 6e 00 00 00 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:698:76: runtime error: member access within misaligned address 0x00013f0a362a for type 'struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a362a: note: pointer points here
 00 08  00 08 0e 01 02 00 58 00  00 00 6e 00 00 00 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_MemoryReader.cpp:173:39: runtime error: member access within misaligned address 0x00013f0a365a for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a365a: note: pointer points here
 ce 00  00 00 28 01 03 00 02 00  00 00 00 02 00 00 31 01  02 00 1e 00 00 00 d6 00  00 00 32 01 02 00
              ^ 
TIFF_MemoryReader.cpp:186:20: runtime error: member access within misaligned address 0x00013f0a367e for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a367e: note: pointer points here
 f4 00 00 00 69 87  04 00 04 00 00 00 00 00  01 08 00 00 01 32 58 4d  50 46 69 6c 65 73 20 42  6c 75
             ^ 
TIFF_MemoryReader.cpp:597:41: runtime error: member access within misaligned address 0x00013f0a367e for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a367e: note: pointer points here
 f4 00 00 00 69 87  04 00 04 00 00 00 00 00  01 08 00 00 01 32 58 4d  50 46 69 6c 65 73 20 42  6c 75
             ^ 
TIFF_MemoryReader.cpp:597:82: runtime error: member access within misaligned address 0x00013f0a367e for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a367e: note: pointer points here
 f4 00 00 00 69 87  04 00 04 00 00 00 00 00  01 08 00 00 01 32 58 4d  50 46 69 6c 65 73 20 42  6c 75
             ^ 
TIFF_MemoryReader.cpp:598:43: runtime error: member access within misaligned address 0x00013f0a367e for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a367e: note: pointer points here
 f4 00 00 00 69 87  04 00 04 00 00 00 00 00  01 08 00 00 01 32 58 4d  50 46 69 6c 65 73 20 42  6c 75
             ^ 
TIFF_MemoryReader.cpp:215:38: runtime error: member access within misaligned address 0x00013f0a3636 for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a3636: note: pointer points here
 6e 00 00 00 12 01  03 00 02 00 00 00 00 01  00 00 1a 01 05 00 08 00  00 00 c6 00 00 00 1b 01  05 00
             ^ 
TIFF_MemoryReader.cpp:216:39: runtime error: member access within misaligned address 0x00013f0a3636 for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a3636: note: pointer points here
 6e 00 00 00 12 01  03 00 02 00 00 00 00 01  00 00 1a 01 05 00 08 00  00 00 c6 00 00 00 1b 01  05 00
             ^ 
TIFF_MemoryReader.cpp:222:29: runtime error: member access within misaligned address 0x00013f0a3636 for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a3636: note: pointer points here
 6e 00 00 00 12 01  03 00 02 00 00 00 00 01  00 00 1a 01 05 00 08 00  00 00 c6 00 00 00 1b 01  05 00
             ^ 
../../../XMPFiles/source/FormatSupport/TIFF_Support.hpp:807:23: runtime error: member access within misaligned address 0x00013f0a3636 for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a3636: note: pointer points here
 6e 00 00 00 12 01  03 00 02 00 00 00 00 01  00 00 1a 01 05 00 08 00  00 00 c6 00 00 00 1b 01  05 00
             ^ 
../../../XMPFiles/source/FormatSupport/TIFF_Support.hpp:808:25: runtime error: member access within misaligned address 0x00013f0a3636 for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a3636: note: pointer points here
 6e 00 00 00 12 01  03 00 02 00 00 00 00 01  00 00 1a 01 05 00 08 00  00 00 c6 00 00 00 1b 01  05 00
             ^ 
../../../XMPFiles/source/FormatSupport/TIFF_Support.hpp:810:33: runtime error: member access within misaligned address 0x00013f0a3642 for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a3642: note: pointer points here
 00 01  00 00 1a 01 05 00 08 00  00 00 c6 00 00 00 1b 01  05 00 08 00 00 00 ce 00  00 00 28 01 03 00
              ^ 
../../../XMPFiles/source/FormatSupport/TIFF_Support.hpp:811:28: runtime error: member access within misaligned address 0x00013f0a3642 for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0a3642: note: pointer points here
 00 01  00 00 1a 01 05 00 08 00  00 00 c6 00 00 00 1b 01  05 00 08 00 00 00 ce 00  00 00 28 01 03 00
              ^ 
ok
test_file_to_dict_nofile (test.test_core_unit.UtilsTestCase.test_file_to_dict_nofile) ... ok
test_file_to_dict_noxmp (test.test_core_unit.UtilsTestCase.test_file_to_dict_noxmp) ... ok
test_object_to_dict (test.test_core_unit.UtilsTestCase.test_object_to_dict) ... ok
test_object_to_dict_noxmp (test.test_core_unit.UtilsTestCase.test_object_to_dict_noxmp) ... ok
test_clone (test.test_core_unit.XMPMetaTestCase.test_clone) ... ok
test_count_array_items (test.test_core_unit.XMPMetaTestCase.test_count_array_items)
Tests XMPMeta method count_array_items. ... ok
test_does_array_item_exist (test.test_core_unit.XMPMetaTestCase.test_does_array_item_exist)
Tests XMPMeta method does_array_item_exist.  Issue #03 ... ok
test_does_property_exist (test.test_core_unit.XMPMetaTestCase.test_does_property_exist) ... ok
test_exempi_core (test.test_core_unit.XMPMetaTestCase.test_exempi_core)
Corresponds to test_exempi.TestExempi.test_exempi_core ... ok
test_get_localized_text (test.test_core_unit.XMPMetaTestCase.test_get_localized_text) ... ok
test_get_xmp (test.test_core_unit.XMPMetaTestCase.test_get_xmp) ... ok
test_init_del (test.test_core_unit.XMPMetaTestCase.test_init_del) ... ok
test_parse_str (test.test_core_unit.XMPMetaTestCase.test_parse_str) ... ok
test_serialize_and_format (test.test_core_unit.XMPMetaTestCase.test_serialize_and_format) ... Inconsistent options for read-only packet
Inconsistent options for non-packet serialize
Inconsistent options for exact size serialize
ok
test_serialize_str (test.test_core_unit.XMPMetaTestCase.test_serialize_str) ... Inconsistent options for read-only packet
Inconsistent options for non-packet serialize
Inconsistent options for exact size serialize
ok
test_serialize_unicode (test.test_core_unit.XMPMetaTestCase.test_serialize_unicode)
Return type is unicode in 2.7, but str in 3.x ... Inconsistent options for read-only packet
Inconsistent options for non-packet serialize
Inconsistent options for exact size serialize
ok
test_shorthand_rdf (test.test_core_unit.XMPMetaTestCase.test_shorthand_rdf)
Tests pass so long as no error is issued. ... ok
test_skip (test.test_core_unit.XMPMetaTestCase.test_skip)
Verify usage of XMPMeta skip method. ... ok
test_test_files (test.test_core_unit.XMPMetaTestCase.test_test_files) ... ok
test_text_property_450 (test.test_core_unit.XMPMetaTestCase.test_text_property_450) ... ok
test_text_property_450_file (test.test_core_unit.XMPMetaTestCase.test_text_property_450_file) ... ok
test_write_new_property (test.test_core_unit.XMPMetaTestCase.test_write_new_property)
Corresponds to test-write-new-property.cpp ... ok
test_write_new_struct_in_array (test.test_core_unit.XMPMetaTestCase.test_write_new_struct_in_array) ... ok
test_3 (test.test_exempi.TestExempi.test_3)
Corresponds to test3.cpp ... ok
test_bad_formats (test.test_exempi.TestExempi.test_bad_formats)
Verify check_file_format on PDF, Adobe Illustrator, XMP. ... skipped 'Issue 26'
test_bgo (test.test_exempi.TestExempi.test_bgo)
Corresponds to test-bgo.cpp ... TIFF_MemoryReader.cpp:603:39: runtime error: member access within misaligned address 0x00013f0b40e6 for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0b40e6: note: pointer points here
 00 00 00 c6 25 88  04 00 04 00 00 00 00 00  03 20 00 00 03 32 4e 49  4b 4f 4e 20 43 4f 52 50  4f 52
             ^ 
TIFF_MemoryReader.cpp:603:80: runtime error: member access within misaligned address 0x00013f0b40e6 for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0b40e6: note: pointer points here
 00 00 00 c6 25 88  04 00 04 00 00 00 00 00  03 20 00 00 03 32 4e 49  4b 4f 4e 20 43 4f 52 50  4f 52
             ^ 
TIFF_MemoryReader.cpp:604:42: runtime error: member access within misaligned address 0x00013f0b40e6 for type 'const struct TweakedIFDEntry', which requires 4 byte alignment
0x00013f0b40e6: note: pointer points here
 00 00 00 c6 25 88  04 00 04 00 00 00 00 00  03 20 00 00 03 32 4e 49  4b 4f 4e 20 43 4f 52 50  4f 52
             ^ 
ok
test_exempi_core (test.test_exempi.TestExempi.test_exempi_core)
According to test-exempi-core.cpp ... ok
test_formats (test.test_exempi.TestExempi.test_formats)
Verify that check_file_format function works as expected. ... ok
test_serialize (test.test_exempi.TestExempi.test_serialize)
Corresponds to test-serialize.cpp ... ok
test_tiff_leak (test.test_exempi.TestExempi.test_tiff_leak)
Corresponds to test-tiff-leak.cpp ... ok
test_write_new_date_property (test.test_exempi.TestExempi.test_write_new_date_property)
TODO:  fill in the doc string ... ok
test_write_new_property (test.test_exempi.TestExempi.test_write_new_property)
Corresponds to test-write-new-property.cpp ... ok
test_xmp_files (test.test_exempi.TestExempi.test_xmp_files)
Corresponds to test_xmp_files.cpp ... ok
test_xmpfiles_write (test.test_exempi.TestExempi.test_xmpfiles_write)
According to test-xmpfiles-write.cpp ... TIFF_FileWriter.cpp:699:43: runtime error: member access within misaligned address 0x00013f0a1b8a for type 'struct RawIFDEntry', which requires 4 byte alignment
0x00013f0a1b8a: note: pointer points here
 00 08  00 08 01 0e 00 02 00 00  00 58 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_FileWriter.cpp:702:41: runtime error: member access within misaligned address 0x00013f0a1b8a for type 'struct RawIFDEntry', which requires 4 byte alignment
0x00013f0a1b8a: note: pointer points here
 00 08  00 08 01 0e 00 02 00 00  00 58 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_FileWriter.cpp:703:39: runtime error: member access within misaligned address 0x00013f0a1b8a for type 'struct RawIFDEntry', which requires 4 byte alignment
0x00013f0a1b8a: note: pointer points here
 00 08  00 08 01 0e 00 02 00 00  00 58 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_FileWriter.cpp:713:38: runtime error: member access within misaligned address 0x00013f0a1b8a for type 'struct RawIFDEntry', which requires 4 byte alignment
0x00013f0a1b8a: note: pointer points here
 00 08  00 08 01 0e 00 02 00 00  00 58 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
TIFF_FileWriter.cpp:719:45: runtime error: member access within misaligned address 0x00013f0a1b8a for type 'struct RawIFDEntry', which requires 4 byte alignment
0x00013f0a1b8a: note: pointer points here
 00 08  00 08 01 0e 00 02 00 00  00 58 00 00 00 6e 01 12  00 03 00 00 00 01 00 01  00 00 01 1a 00 05
              ^ 
ok
test_init (test.test_exempi.TestInit.test_init)
TODO:  fill in the docstring ... ok
test_iter_skip_subtree (test.test_exempi.TestIteration.test_iter_skip_subtree)
Alter the iteration midstream. ... ok
test_namespaces (test.test_exempi.TestIteration.test_namespaces)
Iterate through the namespaces. ... skipped 'Issue 27'
test_no_namespace_single_prop_leaf_nodes (test.test_exempi.TestIteration.test_no_namespace_single_prop_leaf_nodes)
Get all the leaf nodes from a single property. ... skipped 'Issue 28.'
test_single_namespace_leaf_nodes (test.test_exempi.TestIteration.test_single_namespace_leaf_nodes)
Get all the leaf nodes from a single namespace. ... ok
test_single_namespace_leaf_nodes_omit_qualifiers (test.test_exempi.TestIteration.test_single_namespace_leaf_nodes_omit_qualifiers)
Get all the leaf nodes (no qualifiers) from a single namespace. ... ok
test_single_namespace_properties (test.test_exempi.TestIteration.test_single_namespace_properties)
Get all the properties from a single namespace. ... ok
test_single_namespace_single_path_children (test.test_exempi.TestIteration.test_single_namespace_single_path_children)
Get just child nodes from a single path, single namespace. ... ok
test_single_namespace_single_path_leaf_names (test.test_exempi.TestIteration.test_single_namespace_single_path_leaf_names)
Get just leaf names from a single path, single namespace. ... skipped 'Issue x1'
test_single_namespace_single_path_leaf_nodes (test.test_exempi.TestIteration.test_single_namespace_single_path_leaf_nodes)
Get all the leaf nodes from a single path, single namespace. ... ok
test_file_not_there_check_file_format (test.test_exempi.TestPythonXmpToolkit.test_file_not_there_check_file_format)
The library does not catch comfortably, so we perform our own check. ... ok
test_file_not_there_open_new (test.test_exempi.TestPythonXmpToolkit.test_file_not_there_open_new)
The library does not catch comfortably, so we perform our own check. ... ok
test_can_inject_xmp_info_png (test.test_files.XMPFilesTestCase.test_can_inject_xmp_info_png)
Verify behavior of being able to inject XMP into barren PNG ... ok
test_can_put_xmp (test.test_files.XMPFilesTestCase.test_can_put_xmp) ... ok
test_cannot_inject_xmp_info_pdf (test.test_files.XMPFilesTestCase.test_cannot_inject_xmp_info_pdf)
Verify behavior of not being able to inject XMP into barren PDF ... ok
test_close_file (test.test_files.XMPFilesTestCase.test_close_file) ... ok
test_exempi_bad_combinations (test.test_files.XMPFilesTestCase.test_exempi_bad_combinations)
Verify bad combinations of formats and open flags. ... ok
test_get_xmp (test.test_files.XMPFilesTestCase.test_get_xmp) ... ok
test_init_del (test.test_files.XMPFilesTestCase.test_init_del) ... ok
test_non_ascii_filename (test.test_files.XMPFilesTestCase.test_non_ascii_filename)
repr must not fail on files with non-ascii characters ... ok
test_open_file (test.test_files.XMPFilesTestCase.test_open_file) ... ok
test_open_file_with_options (test.test_files.XMPFilesTestCase.test_open_file_with_options)
Try all open options ... ok
test_open_open_limitscanning (test.test_files.XMPFilesTestCase.test_open_open_limitscanning)
Verify this library failure. ... ok
test_open_use_smarthandler (test.test_files.XMPFilesTestCase.test_open_use_smarthandler)
Verify this library failure. ... ok
test_print_bom (test.test_files.XMPFilesTestCase.test_print_bom)
Should be able to print XMP packets despite BOM. ... ok
test_repr (test.test_files.XMPFilesTestCase.test_repr)
Test __repr__ and __str__ on XMPFiles objects. ... ok
test_test_files (test.test_files.XMPFilesTestCase.test_test_files) ... ok
test_tiff_smarthandler (test.test_files.XMPFilesTestCase.test_tiff_smarthandler)
Verify action of TIFF smarthandler when tag length > 255 ... ok
test_write_in_readonly (test.test_files.XMPFilesTestCase.test_write_in_readonly)
If not "open_forupdate = True", should raise exception ... ok
test_jpeg (test.test_roundtrip.TestRoundTrip.test_jpeg)
Create XMP from scratch to store in a jpeg. ... MD5.cpp:164:15: runtime error: null pointer passed as argument 2, which is declared to never be null
ok
test_sturm_und_drang (test.test_roundtrip.TestRoundTrip.test_sturm_und_drang)
Should be able to write a property which includes umlauts. ... ok
test_tiff (test.test_roundtrip.TestRoundTrip.test_tiff)
Write to a TIFF that does not already have the XMP tag. ... ok

----------------------------------------------------------------------
Ran 76 tests in 3.580s

OK (skipped=4)

Merge request reports