Checking if your kit is complete... Looks good Writing Makefile for Image::MetaData::JPEG cp lib/Image/MetaData/JPEG/Segment_dumpers.pl blib/lib/Image/MetaData/JPEG/Segment_dumpers.pl cp lib/Image/MetaData/JPEG/JPEG_comments.pl blib/lib/Image/MetaData/JPEG/JPEG_comments.pl cp lib/Image/MetaData/JPEG/JPEG_various.pl blib/lib/Image/MetaData/JPEG/JPEG_various.pl cp lib/Image/MetaData/JPEG/JPEG_app13.pl blib/lib/Image/MetaData/JPEG/JPEG_app13.pl cp lib/Image/MetaData/JPEG/TagLists.pod blib/lib/Image/MetaData/JPEG/TagLists.pod cp lib/Image/MetaData/JPEG/Structures.pod blib/lib/Image/MetaData/JPEG/Structures.pod cp lib/Image/MetaData/JPEG/Record.pm blib/lib/Image/MetaData/JPEG/Record.pm cp lib/Image/MetaData/JPEG/JPEG_app1_exif.pl blib/lib/Image/MetaData/JPEG/JPEG_app1_exif.pl cp lib/Image/MetaData/JPEG/Segment.pm blib/lib/Image/MetaData/JPEG/Segment.pm cp lib/Image/MetaData/JPEG.pm blib/lib/Image/MetaData/JPEG.pm cp lib/Image/MetaData/JPEG/Tables_makernotes.pl blib/lib/Image/MetaData/JPEG/Tables_makernotes.pl cp lib/Image/MetaData/JPEG.pod blib/lib/Image/MetaData/JPEG.pod cp lib/Image/MetaData/JPEG/MakerNotes.pod blib/lib/Image/MetaData/JPEG/MakerNotes.pod cp lib/Image/MetaData/JPEG/Tables.pm blib/lib/Image/MetaData/JPEG/Tables.pm cp lib/Image/MetaData/JPEG/Segment_parsers.pl blib/lib/Image/MetaData/JPEG/Segment_parsers.pl cp lib/Image/MetaData/JPEG/Backtrace.pm blib/lib/Image/MetaData/JPEG/Backtrace.pm Manifying blib/man3/Image::MetaData::JPEG::Structures.3 Manifying blib/man3/Image::MetaData::JPEG::MakerNotes.3 Manifying blib/man3/Image::MetaData::JPEG.3 Manifying blib/man3/Image::MetaData::JPEG::TagLists.3 PERL_DL_NONLAZY=1 /home/cpanrun/ia64/build/5.8.2/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(1, 'blib/lib', 'blib/arch')" t/*.t t/JPEG_0_records...........# Testing [Image::MetaData::JPEG::Record] 1..150 ok 1 - Endianness detected: MM ok 2 - ASCII ctor ok 3 - The object isa Image::MetaData::JPEG::Record ok 4 - with numeric tag ok 5 - rereading ASCII data ok 6 - ... test of get ok 7 - ... test of get (list) ok 8 - rereading UNDEF variables ok 9 - rereading REFERENCE variables ok 10 - ... it is really a reference ok 11 - ... its value is correct ok 12 - rereading nibbles ok 13 - ... 1st value ok 14 - ... 2nd value ok 15 - ... 3rd value ok 16 - ... 4th value ok 17 - ... as binary data ok 18 - rereading unsigned chars ok 19 - ... as binary data (length) ok 20 - ... as binary data (content) ok 21 - rereading signed chars ok 22 - ... as binary data (length) ok 23 - ... as binary data (content) ok 24 - rereading unsigned shorts ok 25 - ... as binary data ok 26 - ... using little endian ok 27 - ... repacking as little endian ok 28 - ... little endian paranoia ok 29 - rereading signed shorts ok 30 - ... as binary data ok 31 - ... using little endian ok 32 - ... repacking as little endian ok 33 - ... big endian paranoia ok 34 - rereading unsigned longs ok 35 - ... 1st value ok 36 - ... 2nd value ok 37 - ... 3rd value ok 38 - ... 4th value ok 39 - ... as binary data ok 40 - ... using little endian ok 41 - ... 1st value ok 42 - ... 2nd value ok 43 - ... 3rd value ok 44 - ... 4th value ok 45 - rereading signed longs ok 46 - ... as binary data ok 47 - ... using little endian ok 48 - ... repacking as little endian ok 49 - ... big endian paranoia ok 50 - rereading unsigned rationals ok 51 - ... as binary data ok 52 - ... with little endian and sign ok 53 - ... as binary data ok 54 - No negative sign in unsigned rational ok 55 - Negative sign in signed rational ok 56 - Fail OK: Incorrect size (expected 16, found 8) ok 57 - Positive float (native order) ok 58 - ... as binary data ok 59 - Negative float (native order) ok 60 - ... as binary data ok 61 - Positive float (reversed order) ok 62 - ... as binary data ok 63 - Negative float (reversed order) ok 64 - ... as binary data ok 65 - rereading floats (native order) ok 66 - ... 1st value ok 67 - ... 2nd value ok 68 - ... 3rd value ok 69 - ... 4th value ok 70 - ... as binary data ok 71 - rereading floats (reversed order) ok 72 - ... 1st value ok 73 - ... 2nd value ok 74 - ... 3rd value ok 75 - ... 4th value ok 76 - ... as binary data ok 77 - Exchanging endianness ok 78 - (float) accepting +1 ok 79 - (float) accepting -1 ok 80 - (float) accepting 2**32 ok 81 - (float) accepting 2 ok 82 - (float) accepting 0.5 ok 83 - (float) accepting 2**(-126) ok 84 - (float) accepting (2-2**(-23))*2**127 ok 85 - (float) accepting -2**(-127) ok 86 - (float) accepting -2**(-149) ok 87 - (float) all tested as binary data # Failed test (t/JPEG_0_records.t at line 325) not ok 88 - (float) NaN OK # '?' # doesn't match '(?i-xsm:NAN)' # Failed test (t/JPEG_0_records.t at line 325) not ok 89 - (float) +Inf OK # '++' # doesn't match '(?i-xsm:^[^-]*INF)' # Failed test (t/JPEG_0_records.t at line 325) not ok 90 - (float) -Inf OK # '---' # doesn't match '(?i-xsm:-.*INF)' ok 91 - (float) ... also as binary data ok 92 - Positive double (native order) ok 93 - ... as binary data ok 94 - Negative double (native order) ok 95 - ... as binary data ok 96 - Positive double (reversed order) ok 97 - ... as binary data ok 98 - Negative double (reversed order) ok 99 - ... as binary data ok 100 - rereading doubles (native order) ok 101 - ... 1st value ok 102 - ... 2nd value ok 103 - ... 3rd value ok 104 - ... 4th value ok 105 - ... as binary data ok 106 - rereading doubles (reversed order) ok 107 - ... 1st value ok 108 - ... 2nd value ok 109 - ... 3rd value ok 110 - ... 4th value ok 111 - ... as binary data ok 112 - Exchanging endianness ok 113 - (double) accepting +1 ok 114 - (double) accepting -1 ok 115 - (double) accepting 2**32 ok 116 - (double) accepting 2**48 ok 117 - (double) accepting 2 ok 118 - (double) accepting 0.5 ok 119 - (double) accepting 2**(-1022) ok 120 - (double) accepting (2-2**(-52))*2**1023 ok 121 - (double) accepting -2**(-1023) ok 122 - (double) accepting -2**(-1074) ok 123 - (double) all tested as binary data # Failed test (t/JPEG_0_records.t at line 417) # '?' # doesn't match '(?i-xsm:NAN)' not ok 124 - (double) NaN OK # Failed test (t/JPEG_0_records.t at line 417) not ok 125 - (double) +Inf OK # '++' # doesn't match '(?i-xsm:^[^-]*INF)' # Failed test (t/JPEG_0_records.t at line 417) not ok 126 - (double) -Inf OK # '---' # doesn't match '(?i-xsm:-.*INF)' ok 127 - (double) ... also as binary data ok 128 - Fail OK: Incorrect size (expected 199, found 24) ok 129 - Variable-length size specified ok 130 - Variable-length size unspecified ok 131 - Generation of warning reports works: Fake warning ok 132 - Generation of warnings can be inhibited ok 133 - Generation of error reports works: Out-of-bound index (999 > 0) ok 134 - Generation of errors cannot be inhibited: Out-of-bound index (999 > 0) ok 135 - Error report from "static" method: Unknown record type (65535) ok 136 - Error OK: Incorrect size (expected 4, found 5) ok 137 - Error OK: Incorrect size (expected 7, found 5) ok 138 - Error OK: Unknown record type (99) ok 139 - Error OK: Empty token list ok 140 - Error OK: Undefined record type ok 141 - Error OK: Unknown record type (99) ok 142 - Error OK: Incorrect size (expected 4, found 2) ok 143 - Error OK: Incorrect size (expected 4, found 2) ok 144 - Error OK: Unknown endianness ok 145 - Error OK: Unknown endianness ok 146 - Error OK: Unknown endianness ok 147 - Error OK: Unknown endianness ok 148 - Error OK: Reference not found ok 149 - Error OK: Reference not found ok 150 - does not survive to undef data # Looks like you failed 6 tests of 150. dubious Test returned status 6 (wstat 1536, 0x600) DIED. FAILED tests 88-90, 124-126 Failed 6/150 tests, 96.00% okay t/JPEG_1_segments..........# Testing [Image::MetaData::JPEG::Segment] 1..61 ok 1 - APP1 segment created ok 2 - The object isa Image::MetaData::JPEG::Segment ok 3 - ... with error flag set ok 4 - a faulty segment cannot be updated ok 5 - Error OK: Invalid segment name ok 6 - ctor survives to undef data ok 7 - Comment segment created ok 8 - ... with error flag unset ok 9 - the 'records' container exists ok 10 - the 'name' member exists ok 11 - 'Comment' record found ok 12 - The object isa Image::MetaData::JPEG::Record ok 13 - Forged SOS segment created ok 14 - ... with error flag unset ok 15 - search_record with tag works ok 16 - search_record with 'FIRST_RECORD' works ok 17 - search_record with 'LAST_RECORD' works ok 18 - search_record() without args gives a fake root record ok 19 - search_record_value() without args gives root ok 20 - you cannot 'update' this yet ok 21 - a SOS can be reparsed as a COM ok 22 - ... but not as an APP2 ok 23 - output_segment_data does not fail ok 24 - ... and its return value is correct ok 25 - get_description gives non-undef ok 26 - NOPARSE actually avoids parsing ok 27 - ... but then you cannot update ok 28 - output_segment_data works with empty comments ok 29 - size check works in forged comment ok 30 - size check works in forged comment (2) ok 31 - Raw output for raw data ok 32 - Raw output for Post-EOI data ok 33 - Correct output for SOI ok 34 - Correct output for EOI ok 35 - 'fancydir' creation ok ok 36 - ... it is an empty array ok 37 - 'fancydirfancydir' creation ok ok 38 - ... it is not in the root dir ok 39 - 'fancydir@fancydir' creation ok ok 40 - ... search_record alternative syntax OK ok 41 - Spurious args in search_record_value() ignored ok 42 - Spurious args in provide_subdirectory() ignored ok 43 - search_record_value() resists to undef's ok 44 - provide_subdirectory() resists to undef's ok 45 - create_record ok [ref] ok 46 - create_record ok [offset] ok 47 - read_record ok [ref] ok 48 - read_record ok [offset] ok 49 - store_record ok [ref] ok 50 - store_record ok [offset] ok 51 - The faboulous 1B-JFXX APP0 segment ok 52 - A fake DAC segment ok 53 - An invalid DAC segment ok 54 - A fake EXP segment ok 55 - An invalid EXP segment ok 56 - A fake DNL segment ok 57 - An invalid DNL segment ok 58 - Generation of warning reports works ok 59 - Generation of warnings can be inhibited ok 60 - Generation of error reports works ok 61 - Generation of errors cannot be inhibited ok t/JPEG_2_JPEG_class........# Testing [Image::MetaData::JPEG] 1..60 ok 1 - Test photo exists ok 2 - Fail OK: Open error on 'Invalid': No such file or directory ok 3 - Fail OK: Undefined input ok 4 - Fail OK: Empty file ok 5 - Plain constructor ok 6 - The object isa Image::MetaData::JPEG ok 7 - Constructor with reference ok 8 - Objects coincide ok 9 - Ctor error unset (default) ok 10 - Restricted constructor ok 11 - Fast constructor ok 12 - Metadata file exists ok 13 - Description from file ok 14 - Detailed description check ok 15 - Description from reference ok 16 - Descriptions differing (header) ok 17 - The two descriptions are the same ok 18 - Get all segments (undef string) ok 19 - Get all segments (empty string) ok 20 - Segments beginning with S ok 21 - Segments through their indexes ok 22 - Image dimensions ok 23 - New APPx position ok 24 - Exit status of save() ok 25 - Image saved to memory ok 26 - The object isa Image::MetaData::JPEG ok 27 - From-disk and in-memory compare equal ok 28 - Exit status of save() (2) ok 29 - No dimensions without SOF segment ok 30 - Do not save incomplete files ok 31 - Number of APP1 segments ok 32 - find_new_app_segment_position not fooled by only 1 segment ok 33 - All metadata erased ok 34 - ... infact, they are no more there ok 35 - drop_segments' regex cannot be undefined ok 36 - drop_segments' regex cannot be an empty string ok 37 - All comments erased ok 38 - All APP segments erased ok 39 - insert_segments without a segment does not fail ok 40 - ... but segments are not changed ok 41 - ... pos=0 fails miserably ok 42 - ... pos=last also ok 43 - ... segments still unchanged ok 44 - inserting a segment with pos=3 ok 45 - ... now with automatic positioning ok 46 - inserting more than one segment ok 47 - overwriting instead of inserting ok 48 - only SOI and EOI left ok 49 - insert with only SOI/EOI ok 50 - insertion of a fake SOF ok 51 - insert in [SOI, SOF] ok 52 - insert COM after APPx ok 53 - insert APP0 before APP2 ok 54 - insert APP9 after APP2 ok 55 - insert APP0 after APP0 ok 56 - insert APP1 after APP1 with before APP0 ok 57 - insert COM after COM among APPx ok 58 - insert COM after all APPx ok 59 - insert APP7 among APPx ok 60 - provide_app1_Exif_segment finds its way ... ok t/JPEG_2_rare..............# Testing JPEG segments seldom used methods 1..30 ok 1 - An APP1 segment is there ok 2 - Its reference is not undefined ok 3 - All segments can be reparsed as comments ok 4 - Wrong identifier (ExifMM*) ok 5 - Size mismatch in segment DQT : required 5878B, found 5759B. ok 6 - Unknown segment type ok 7 - ... the mistreated APP1 can return APP1 ok 8 - get_app0_data returns a hash reference ok 9 - There is APP0 data out there ok 10 - All values are scalars ok 11 - Frankenstein file read ok 12 - Warnings generated during file read ok 13 - Thumbnail size mismatch caught ok 14 - Number of segments is correct ok 15 - No segment shows an error condition ok 16 - Prehistoric APP13 identifier found ok 17 - An APP0 segment with an invalid identifier ok 18 - XPM APP1 segments not updatable yet ok 19 - APP1 seg. with unknown format catched ok 20 - Dump of APP1 segment with no records catched ok 21 - An APP2 FPXR segment with a reserved type ok 22 - An APP2 FPXR segment with an invalid type ok 23 - Generation of warning reports works ok 24 - Generation of warnings can be inhibited ok 25 - Generation of error reports works ok 26 - Generation of errors cannot be inhibited ok 27 - Forgiving a few bytes before next marker ok 28 - Too much garbage cannot be forgiven ok 29 - Error on next marker not found ok 30 - Error on segment too short ok t/JPEG_3_comments..........# Testing comment routines 1..24 ok 1 - Get number of comments ok 2 - Two comments now ok 3 - Rereading second comment ok 4 - Comment too long, broken ok 5 - Setting an existing comment ok 6 - Just to see we really read ok 7 - Set with long comment ok 8 - Second comment now third ok 9 - Erase comment with undef set ok 10 - Remove one comment ok 11 - Remove out-of-bound ok 12 - Remove out-of-bound (2) ok 13 - Erase all comments ok 14 - No comments as a list ok 15 - Restoring comments ok 16 - Complex joining ok 17 - Total joining ok 18 - Negative index in join_comments catched ok 19 - Out-of-bound index in join_comments catched ok 20 - Undefined index in join_comments catched ok 21 - Invalid index in join_comments catched ok 22 - Save and re-read ok 23 - Saving a picture with a null comment ok 24 - The comment is really null ok t/JPEG_4_app13.............# Testing APP13 IPTC basic routines 1..53 ok 1 - No setters here ok 2 - Number of APP13 segments ok 3 - ... of Photoshop APP13 ok 4 - ... of IPTC_2 APP13 ok 5 - ... of IPTC_1 APP13 ok 6 - Out-of-bound index ok 7 - Negative index ok 8 - 2 Photoshop segments now ok 9 - ... but only one is IPTC ok 10 - You can ask for the 2nd Photoshop segment ok 11 - ... and make it IPTC_1 complaiant ok 12 - ... without making it IPTC complaiant ok 13 - ... asking for IPTC_2 is the same ok 14 - You cannot ask for the 2nd IPTC segment ok 15 - Provide segment finds IPTC_1, does not create it ok 16 - First Photoshop deleted ok 17 - Now $index = 0 depends on $what ok 18 - We can erase Photoshop info from index = 0 ok 19 - ... without touching the other segment ok 20 - ... even if we repeat remove_app13_info ok 21 - Now also the IPTC segment is gone ok 22 - No APP13 segments currently ok 23 - provide_app13_segment creates a segment ok 24 - ... but it does not insert too much information ok 25 - A wrong $what hurts in retrieve_app13_segment ok 26 - ... also a futuristic $what hurts ok 27 - It hurts also in provide_app13_segment ok 28 - No non-IPTC record created by provide_... ok 29 - But one IPTC/IPTC_2 record is there ok 30 - ... and it is the version dataset ok 31 - One mandatory dataset inserted for IPTC_1 ok 32 - ... and it is the version dataset ok 33 - Get IPTC segment in two ways [Photoshop] ok 34 - Get IPTC segment in two ways [IPTC] ok 35 - Num elements from numeric get [Photoshop] ok 36 - ... all tags are numeric ok 37 - ... num elements from textual get ok 38 - ... all tags are textual ok 39 - Num elements from numeric get [IPTC] ok 40 - Record Version exists ok 41 - ... all tags are numeric ok 42 - ... num elements from textual get ok 43 - ... all tags are textual ok 44 - Removing IPTC information ok 45 - ... but not the APP13 segment ok 46 - Removing Photoshop info with index ok 47 - ... this time, a real segment removal ok 48 - Retrieve not forcing a segment ok 49 - Provide forcing a segment ok 50 - get_app13_data fails with wrong label ok 51 - get_app13_data fails with illegal type ok 52 - get_app13_data [IPTC] returns a copy of actual data ok 53 - get_app13_data [PHOTOSHOP] behaves the same way ok t/JPEG_4_app13_IPTC........# Testing APP13 IPTC format checker 1..33 ok 1 - regular tag ok 2 - unknown numeric tag ok 3 - negative tag ok 4 - tag larger than 255 ok 5 - unkwnon textual tag ok 6 - value array with zero elements ok 7 - non repeateable tag (1) ok 8 - non repeateable tag (2) ok 9 - invalid tag ok 10 - binary tag not passing because of length ok 11 - binary tag now passing ok 12 - length too small ok 13 - length OK (1) ok 14 - length OK (2) ok 15 - length too large ok 16 - invalid regex (1) ok 17 - invalid regex (2) ok 18 - invalid regex (3) ok 19 - form feed not allowed in 'paragraph' ok 20 - Dates in the 20th century accepted ok 21 - Dates in the 19th century accepted ok 22 - Dates in the 18th century not accepted ok 23 - ... except in DateCreated ok 24 - DateCreated accepts also the 1st millennium ok 25 - ... and the 1st century ok 26 - ... and the very early days ok 27 - a group of valid tags ok 28 - regular tag (IPTC_1) ok 29 - non repeateable tag (IPTC_1) ok 30 - invalid tag (IPTC_1) ok 31 - invalid regex (1, IPTC_1), no spaces allowed ok 32 - invalid regex (2, IPTC_1) ok 33 - a group of valid tags (IPTC_1) ok t/JPEG_4_app13_set.........# Testing APP13 IPTC set routines 1..53 ok 1 - No error with undefined arguments in set ok 2 - ... but $what cannot be wrong ok 3 - Non-repeatable IPTC constraint is enforced ok 4 - Correct precedence for nonrepeatables ok 5 - Adding records textually ok 6 - UPDATE addresses user tags ... ok 7 - ... without touching the others ok 8 - Replacing instead of adding ok 9 - Record version is OK ok 10 - Adding records numerically ok 11 - Replacing records numerically ok 12 - Record version added automatically ok 13 - High level get IPTC data (numeric) ok 14 - High level set/get (textual) ok 15 - Forcing an IPTC segment (high level) ok 16 - Same, but with replace and numerically ok 17 - Record version can be changed ok 18 - File written and re-read ok 19 - There is an APP13 segment ok 20 - Re-read data is ok ok 21 - Set with mixed type tags ok 22 - Two APP13 segments now ok 23 - Run get_IPTC_data with two segments (get 1st) ok 24 - First segment eliminated ok 25 - get_IPTC_data now retrieves the second segment ok 26 - Two invalid textual entries rejected ok 27 - Two invalid numeric entries rejected ok 28 - Updating illegally fails ok 29 - Updating record version work ... ok 30 - ... without touching the other tags ok 31 - A value array with one undef is invalid ok 32 - ... also with multiple undefs ok 33 - ... also with no elements ok 34 - From now on we are testing [PHOTOSHOP] ok 35 - You cannot add the IPTC/NAA tag ok 36 - All numeric tags updated ok 37 - ... resource block correctly updated ok 38 - All textual tags updated ok 39 - ... resource block correctly updated ok 40 - ADD behaves like UPDATE ok 41 - All value arrays have exactly 2 values ok 42 - All numeric tags replaced ok 43 - REPLACE works as expected (NUMERIC) ok 44 - All textual tags replaced ok 45 - ... also with TEXTUAL tags ok 46 - All value arrays have exactly 2 values ok 47 - Invalid textual tags are rejected ok 48 - Invalid numeric tags are rejected ok 49 - Valid tags with strange data accepted ok 50 - Value arrays cannot have > 2 element ok 51 - .... nor less than one ok 52 - .... nor an undefined one ok 53 - This is the exemple in the .pod ok t/JPEG_5_exif..............# Testing APP1 Exif data routines 1..42 ok 1 - Number of APP1 segments ok 2 - Number, alternatively ok 3 - Out-of-bound index ok 4 - Get segment in two ways ok 5 - get_Exif_data with wrong $what returns undef ok 6 - get_Exif_data with wrong $type returns undef ok 7 - get_Exif_data('ALL') returns a copy of actual data ok 8 - get_Exif_data('IMAGE_DATA') behaves the same way ok 9 - there are seven subdirs ok 10 - the two forms of get_Exif_data agree ok 11 - (sub)IFD's record counts OK ... ok 12 - ... also without textual translation ok 13 - ... Structure and Segment method coincide ok 14 - count OK for ROOT_DATA ok 15 - count OK for IFD0_DATA ok 16 - count OK for IFD1_DATA ok 17 - count OK for SUBIFD_DATA ok 18 - count OK for GPS_DATA ok 19 - count OK for INTEROP_DATA ok 20 - count OK for MAKERNOTE_DATA ok 21 - All textual keys in ROOT_DATA are known ok 22 - count OK for IMAGE_DATA ok 23 - count OK for THUMB_DATA ok 24 - IMAGE_DATA is a merge of IFD0_DATA and SUBIFD_DATA ok 25 - THUMB_DATA and IFD1_DATA return the same struct. ok 26 - The test file contains a JPEG thumbnail ok 27 - declared size not null ok 28 - thumbnail data is present ok 29 - ... Structure and Segment method coincide ok 30 - thumbnail data size from description OK ok 31 - thumbnail data size from IFD1 data OK ok 32 - This thumbnail is a valid JPEG file ok 33 - number of thumbnail segments OK ok 34 - Deleting Exif APP1 segments works ok 35 - Absence of thumbnail correctly detected ok 36 - Absence of thumbnail data is correctly detected ok 37 - Absence of primary image data is correctly detected ok 38 - Absence of GPS data is correctly detected ok 39 - Absence of interop. data is correctly detected ok 40 - 'ALL' on a bare Exif segment is not empty ok 41 - Again, (sub)IFD record counts OK ... ok 42 - Set with an undefined action is mortal ok t/JPEG_5_exif_GPS..........# Testing APP1 Exif data routines (GPS_DATA) 1..47 ok 1 - The Exif segment is there, hi! ok 2 - Unknown section GPL_DATA ok 3 - Unknown action SPEAK ok 4 - all test GPS records ADDed ok 5 - numeric keys work ok 6 - textual keys too ok 7 - also REPLACing works ok 8 - Automatic VersionID works ok 9 - Manual VersionID works ok 10 - adding through image object ok 11 - adding without the GPS dir ok 12 - Write and reread works ok 13 - Descriptions after write/read cycle are coincident ok 14 - Malformed LatitudeRef rejected ok 15 - Non-null-terminated ASCII strings are patched ok 16 - Malformed Latitude rejected ok 17 - ... rejected again ... ok 18 - Overflowing Latitude rejected ok 19 - Atypical but valid latitude format accepted ok 20 - ... very atypical but valid (?) and accepted again ok 21 - ... this, really, must be invalid ok 22 - ... negative elements are invalid ok 23 - You can write North Pole ok 24 - Overflowing DestLatitude rejected ok 25 - Correct DestLatitude accepted ok 26 - Overflowing Longitude rejected ok 27 - Longitude in [0,180] accepted ok 28 - Overflowing DestLongitude rejected ok 29 - Correct DestLongitude accepted ok 30 - GPS direction accepted ok 31 - ... direction >= 360 is invalid ok 32 - ... direction with negative rationals is invalid ok 33 - ... direction with > 2 decimal digits is invalid ok 34 - ... but 2 decimal digits are OK ok 35 - GPS non-C strings start with an identifier ok 36 - ... invalid identifiers are trapped ok 37 - Accepting dates in YYYY:MM:DD ok 38 - ... a good date in the 20th century ok 39 - ... a good date in the 19th century ok 40 - ... not accepting a year before 1800 ok 41 - ... not accepting a wrong month ok 42 - ... not accepting a wrong day ok 43 - ... not accepting non numeric characters ok 44 - byte field accepted ok 45 - ... but not with a wrong value ok 46 - unknown numeric tags are rejected ok 47 - unknown textual tags are rejected ok t/JPEG_5_exif_IFD..........# Testing APP1 Exif data routines (IFD01_DATA) 1..59 ok 1 - The Exif segment is there, hi! ok 2 - all test IFD0 records ADDed ok 3 - ... added also to IFD1 ok 4 - ... the IFD0 is still present ok 5 - ... also the IFD0@GPS directory ok 6 - ... also the IFD0@SubIFD directory ok 7 - ... also the IFD0@SubIFD@Interop dir. ok 8 - all forbidden records are rejected in IFD0 ok 9 - ... rejected also in IFD1 ok 10 - REPLACing in IFD0 works ok 11 - ... also in IFD1 works ok 12 - ... the IFD0 is still present ok 13 - ... also the IFD0@GPS directory ok 14 - ... also the IFD0@SubIFD directory ok 15 - ... also the IFD0@SubIFD@Interop dir. ok 16 - all forbidden records rejected when replacing in IFD0 ok 17 - ... rejected also in IFD1 ok 18 - Automatic IFD0 XResolution works ok 19 - ... also YResolution ok 20 - ... also ResolutionUnit ok 21 - ... also YCbCrPositioning ok 22 - Automatic IFD1 XResolution works ok 23 - ... also YResolution ok 24 - ... also ResolutionUnit ok 25 - ... also YCbCrSubSampling ok 26 - ... also PlanarConfiguration ok 27 - Manual IFD0 XResolution works ok 28 - ... also in IFD1 ok 29 - adding through image object in IFD0 ok 30 - adding without the IFD1 dir ok 31 - Write and reread works ok 32 - Descriptions after write/read cycle are coincident ok 33 - Invalid string rejected ok 34 - Invalid Orientation rejected ok 35 - Invalid TransferFunc. rejected ok 36 - Invalid resolution rejected ok 37 - Invalid ResolutionUnit rejected ok 38 - Standard date/time accepted ok 39 - ... gotten back via get_Exif_data ok 40 - ... and its value is correct ok 41 - Invalid date/time rejected ok 42 - Date in the 19th century accepted ok 43 - Date in the 18th century not accepted ok 44 - Blank date/time accepted (1) ok 45 - Blank date/time accepted (2) ok 46 - Invalid WhitePoint rejected ok 47 - Invalid ReferenceBlackWhite rejected ok 48 - Invalid PrimaryChromaticities rejected ok 49 - unknown numeric tags are rejected ok 50 - unknown textual tags are rejected ok 51 - a valid field from the additional list ok 52 - ... and an invalid one ok 53 - ... and a forbidden one ok 54 - a valid float field from the companies' list ok 55 - ... and a field with 16 floats ok 56 - ... and a field with 3 doubles ok 57 - ... and an obsoleted one ok 58 - Write and reread works ok 59 - Descriptions are still coincident ok t/JPEG_5_exif_IMAGE........# Testing APP1 Exif data routines (IMAGE_DATA & ROOT_DATA) 1..52 ok 1 - update() called only once with IMAGE_DATA ok 2 - all test IMAGE records ADDed ok 3 - all forbidden records are rejected ok 4 - all forbidden records rejected when replacing ok 5 - all records which should go to SubIFD accepted ok 6 - ... FocalPlaneResolutionUnit found in SubIFD ok 7 - ... its value is OK ok 8 - ... FlashEnergy found in SubIFD ok 9 - ... its value is OK ok 10 - ... FocalPlaneYResolution found in SubIFD ok 11 - ... its value is OK ok 12 - ... FocalPlaneXResolution found in SubIFD ok 13 - ... its value is OK ok 14 - ... SensingMethod found in SubIFD ok 15 - ... its value is OK ok 16 - ... SpatialFrequencyResponse found in SubIFD ok 17 - ... its value is OK ok 18 - ... ExposureIndex found in SubIFD ok 19 - ... its value is OK ok 20 - ... CFAPattern found in SubIFD ok 21 - ... its value is OK ok 22 - REPLACing in the image works ok 23 - Automatic IFD0 XResolution works ok 24 - ... also YCbCrPositioning ok 25 - Automatic SubIFD ExifVersion works ok 26 - ... also ColorSpace ok 27 - ... also picture dimensions ok 28 - adding through image/segment coincide ok 29 - adding without the Exif segment ok 30 - Write and reread works ok 31 - Descriptions after write/read cycle are coincident ok 32 - ... no records found in IFD1 ok 33 - ... no records found in INTEROP ok 34 - ... no records found in GPS ok 35 - The MakerNote cannot be changed ok 36 - Invalid Orientation rejected ok 37 - Invalid SceneType rejected ok 38 - unknown numeric tags are rejected ok 39 - unknown textual tags are rejected ok 40 - Standard date/time accepted ok 41 - ... gotten back via get_Exif_data ok 42 - ... and its value is correct ok 43 - 3 properties out of 4 rejected with ROOT_DATA ok 44 - ... only 'Endianness' was accepted ok 45 - Malformed endianness rejected ok 46 - ... but legal endianness accepted ok 47 - ... tag read with get_description ok 48 - Little-endianness correctly saved ok 49 - ... also big-endianness ok 50 - ... incorrect match fails (II) ok 51 - ... incorrect match fails (MM) ok 52 - ... descriptions are otherwise equivalent ok t/JPEG_5_exif_Interop......# Testing APP1 Exif data routines (INTEROP_DATA) 1..29 ok 1 - The Exif segment is there, hi! ok 2 - Unknown section INTEROP_DETA ok 3 - Unknown action UPDATE ok 4 - all test Interop records ADDed ok 5 - numeric keys work ok 6 - textual keys too ok 7 - also REPLACing works ok 8 - Replacing without mandatory tags works ok 9 - Automatic Index works ok 10 - Automatic Version works ok 11 - A wrong index cannot be set ok 12 - adding through image object ok 13 - adding without the Interop. dir ok 14 - Write and reread works ok 15 - Descriptions after write/read cycle are coincident ok 16 - Malformed Index rejected ok 17 - Malformed Version rejected ok 18 - Malformed X dimension rejected ok 19 - Malformed Y dimension rejected ok 20 - A negative dimension is invalid ok 21 - unknown numeric tags are rejected ok 22 - unknown textual tags are rejected ok 23 - Forge Interop. IFD is not rejected ok 24 - ... automatic Index ok ok 25 - ... automatic Version ok ok 26 - ... automatic FileFormat ok ok 27 - ... automatic dimensions ok ok 28 - same result after deleting Exif data and forging ok 29 - Write and reread works ok t/JPEG_5_exif_Makernote....# Testing APP1 MakerNote parse / dump 1..44 ok 1 - (Pentax_Optio430.jpg) ok 2 - | number of records ok 3 - | PrintIM tag OK ok 4 - | detection of format (Pentax_1) ok 5 - | no error detected ok 6 - | prediction mech. used ok 7 - | no errors while saving ok 8 - `- description OK after saving ok 9 - (Canon_PShotS330.jpg) ok 10 - | number of records ok 11 - | detection of format (Canon) ok 12 - | no error detected ok 13 - | prediction mech. not used ok 14 - | no errors while saving ok 15 - `- description OK after saving ok 16 - (Kodak_DX3900.jpg) ok 17 - | number of records ok 18 - | detection of format (Kodak) ok 19 - | no error detected ok 20 - | prediction mech. not used ok 21 - | no errors while saving ok 22 - `- description OK after saving ok 23 - (Nikon_D70.jpg) ok 24 - | number of records ok 25 - | detection of format (Nikon_3) ok 26 - | no error detected ok 27 - | prediction mech. not used ok 28 - | no errors while saving ok 29 - `- description OK after saving ok 30 - (Toshiba_PDRM70.jpg) ok 31 - | number of records ok 32 - | detection of format (unknown) ok 33 - | no error detected ok 34 - | prediction mech. not used ok 35 - | no errors while saving ok 36 - `- description OK after saving ok 37 - (Sony_MVC-CD500.jpg) ok 38 - | number of records ok 39 - | detection of format (Sony) ok 40 - | this is a corrupted MakerNote ok 41 - | prediction mech. used ok 42 - | but failed to mend MkNote ok 43 - | no errors while saving ok 44 - `- description OK after saving ok t/JPEG_5_exif_SubIFD.......# Testing APP1 Exif data routines (SUBIFD_DATA) 1..50 ok 1 - The Exif segment is there, hi! ok 2 - Unknown section SubIFD_DATA ok 3 - Unknown action RUN ok 4 - all test SubIFD records ADDed ok 5 - numeric keys work ok 6 - textual keys too ok 7 - also REPLACing works ok 8 - Automatic ExifVersion works ok 9 - Automatic ComponentsConfiguration works ok 10 - Automatic FlashpixVersion works ok 11 - Automatic ColorSpace works ok 12 - Meaningful dimensions set to 0x0 ok 13 - Manual ExifVersion works ok 14 - adding through image object ok 15 - adding without the SubIFD dir ok 16 - Write and reread works ok 17 - Descriptions after write/read cycle are coincident ok 18 - The MakerNote cannot be changed ok 19 - Invalid rational rejected ok 20 - Out-of-bound short rejected ok 21 - Invalid short (a string) rejected ok 22 - Invalid Exif version rejected ok 23 - Invalid date/time rejected ok 24 - Dates in the 20th century accepted ok 25 - Dates in the 19th century accepted ok 26 - Dates in the 18th century rejected ok 27 - Invalid date/time rejected ok 28 - Blank date/time accepted(1) ok 29 - Blank date/time accepted(2) ok 30 - Invalid CCfg rejected ok 31 - 'Char' CCfg rejected ok 32 - 'Char' FileSource rejected ok 33 - Numeric FileSource rejected ok 34 - 'Char' SceneType rejected ok 35 - Numeric SceneType rejected ok 36 - Invalid s-rational rejected ok 37 - Out-of-bound LightSource rejected ok 38 - Out-of-bound Flash rejected ok 39 - Invalid SubjectArea rejected ok 40 - Plain string invalid as UserComment ok 41 - Letters not accepted in SubSecTime ok 42 - Non-conforming RelatedSoundFile rejected ok 43 - Offsets are invalid ok 44 - Invalid CFAPattern rejected (1) ok 45 - Invalid CFAPattern rejected (2) ok 46 - Non UCS-2 in DeviceSettingDescription rejected ok 47 - Invalid ImageUniqueID rejected ok 48 - Invalid Photoshop tag rejected ok 49 - unknown numeric tags are rejected ok 50 - unknown textual tags are rejected ok t/JPEG_5_exif_Thumbnail....# Testing APP1 Exif data routines (thumbnail) 1..26 ok 1 - The Exif segment is there, hi! ok 2 - Thumbnail data found ok 3 - ... as a reference to a scalar ok 4 - It is a valid JPEG image ok 5 - JPEG Thumbnail read from disk ok 6 - JPEG Thumbnail 'saved' in memory ok 7 - New JPEG thumbnail set (scalar) ok 8 - ... it containes the new data block ok 9 - Thumbnail length exists ok 10 - ... and is correct ok 11 - All other tags unchanged ok 12 - Fail OK: Undefined data reference ok 13 - Thumbnail removed with empty value ok 14 - No Compression tag ok 15 - No JPEGInterchangeFormat tag ok 16 - No JPEGInterchangeFormatLength tag ok 17 - New JPEG thumbnail set (object) ok 18 - ... the data block is again there ok 19 - The Compression record exists ok 20 - ... and its value is six ok 21 - The JPEGInterchangeFormatLength record exists ok 22 - ... and matches thumb. size ok 23 - Thumbnail inserted without an APP1 segment ok 24 - ... no main-image related records ok 25 - ... but 3 thumbnail related records ok 26 - unsupported thumbnail format ok t/JPEG_p_podchecker........# Checking documentation syntax with Pod::Checker 1..4 ok 1 - Checking lib/Image/MetaData/JPEG.pod ok 2 - Checking lib/Image/MetaData/JPEG/Structures.pod ok 3 - Checking lib/Image/MetaData/JPEG/TagLists.pod ok 4 - Checking lib/Image/MetaData/JPEG/MakerNotes.pod ok Failed 1/17 test scripts, 94.12% okay. 6/817 subtests failed, 99.27% okay. Failed Test Stat Wstat Total Fail Failed List of Failed --------------------------------------------------------------------------------------------------------------------------------------- t/JPEG_0_records.t 6 1536 150 6 4.00% 88-90 124-126 make: *** [test_dynamic] Error 25