libexif Validation

Port build from safelibs/port-libexif at commit 3601324a5caa (release build-3601324a5caa)

1Libraries
300Tests
5Source tests
290Usage tests
5Regression tests
300 / 300Port tests passing
0Port tests failing
600 (100%)Evidence casts
1 / 1Port libraries passing

Tests

libexif compile link smoke Original / libexif / compile-link-smoke Passed

Compiles and runs a small program against the public libexif headers.

Run
Original
Kind
source
Client
none
Duration
0.00s
Tags
api compile
Log

            
Invalid EXIF data handling Original / libexif / invalid-data-handling Passed

Feeds invalid bytes through ExifLoader and confirms graceful empty handling.

Run
Original
Kind
source
Client
none
Duration
0.00s
Tags
api negative
Log

            
JPEG EXIF C API parse Original / libexif / jpeg-exif-c-api-parse Passed

Parses representative JPEG EXIF metadata and reads make and model tags.

Run
Original
Kind
source
Client
none
Duration
0.00s
Tags
api metadata
Log

            
Maker note data handling Original / libexif / maker-note-handling Passed

Finds maker-note bytes in a JPEG fixture through libexif metadata APIs.

Run
Original
Kind
source
Client
none
Duration
0.00s
Tags
api metadata
Log

            
Tag lookup and value formatting Original / libexif / tag-lookup-value-formatting Passed

Looks up EXIF tag names and formats initialized entry values.

Run
Original
Kind
source
Client
none
Duration
0.00s
Tags
api format
Log

            
exif color space tag Original / libexif / usage-exif-cli-color-space-tag Passed

Reads the ColorSpace EXIF tag from a JPEG fixture and verifies the color space value.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif custom rendered tag Original / libexif / usage-exif-cli-custom-rendered-tag Passed

Reads the CustomRendered EXIF tag from a JPEG fixture.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif --debug --ifd=GPS scoped trace Original / libexif / usage-exif-cli-debug-ifd-gps-trace Passed

Runs the exif client with --debug --ifd=GPS against the canon fixture and verifies the loader still emits its scanning banner and the IFD 0 entry count alongside the user-friendly error indicating the GPS IFD has no entries.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --debug emits the ExifLoader byte-count trace Original / libexif / usage-exif-cli-debug-loader-byte-count Passed

Runs exif with --debug against the canon fixture and verifies the loader-side trace lines appear, including the "ExifLoader: Scanning" line with a positive byte count, the "ExifData: Parsing" line with its own byte count, the "Found EXIF header at start." marker, and the per-IFD entry count line for IFD 0. Pins libexif's verbose debug surface on Ubuntu 24.04 for callers that capture loader telemetry.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata debug
Log

            
exif --debug emits loader trace Original / libexif / usage-exif-cli-debug-loader-trace Passed

Runs the exif client with --debug and verifies the loader announces the IFD 0 entry count and named entries from the canon fixture.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --debug --machine-readable preserves the tab-delimited record stream Original / libexif / usage-exif-cli-debug-machine-readable-combo Passed

Runs the exif client with --debug --machine-readable against the canon fixture and verifies the loader trace is emitted to stderr while stdout still carries the standard tab-delimited Manufacturer/Canon and Model/Canon PowerShot S70 records, asserting --debug does not corrupt --machine-readable framing.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --debug --machine-readable --tag=Model triple-flag composition Original / libexif / usage-exif-cli-debug-machine-tag-triple-flag Passed

Runs the exif client with the three flags --debug, --machine-readable, and --tag=Model combined against the canon fixture and verifies the loader trace lines reach stderr (or fall back to stdout) while the requested Model record still appears in machine-readable form on stdout, asserting that scoping with --tag does not suppress --debug diagnostics and that --debug does not corrupt single-tag --machine-readable output.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --debug --no-fixup still emits loader trace Original / libexif / usage-exif-cli-debug-no-fixup-loader-trace Passed

Runs the exif client with --debug --no-fixup against the canon fixture and verifies the loader still announces the EXIF header, IFD 0 offset, the 9-entry count, and the named Make and Model entries even with the no-fixup switch present.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --debug --tag=DateTimeOriginal preserves the scoped readout Original / libexif / usage-exif-cli-debug-tag-datetime-original Passed

Runs the exif client with the combined --debug and --tag=DateTimeOriginal flags against the canon fixture and verifies the loader trace reaches the combined output stream while the scoped pretty-print still surfaces the DateTimeOriginal Value line carrying the literal 2009:10:10 16:42:32 timestamp. The combined output is also compared against a clean (non-debug) scoped run to confirm --debug does not drop or rewrite the scoped Value line.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif on a directory target fails with the not-readable diagnostic Original / libexif / usage-exif-cli-directory-target-error Passed

Invokes the exif client against a directory path (not a regular file) and verifies the client exits non-zero with the canonical "is not readable or does not contain EXIF data" diagnostic naming the directory, matching libexif's read-as-file behavior on Ubuntu 24.04.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata error
Log

            
exif exposure mode tag Original / libexif / usage-exif-cli-exposure-mode-tag Passed

Reads the ExposureMode EXIF tag from a JPEG fixture.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif exposure time tag Original / libexif / usage-exif-cli-exposure-time Passed

Reads the ExposureTime EXIF tag from a JPEG fixture.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif extract then remove-thumbnail then re-extract sequence Original / libexif / usage-exif-cli-extract-remove-reextract-state Passed

Walks the canon fixture through extract-thumbnail, remove-thumbnail on a copy, and a re-extract attempt against the stripped copy, verifying the first extraction produces a non-empty file, the strip succeeds, and the second extraction fails with a does not contain a thumbnail diagnostic, while a fresh extract from the original still succeeds.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --extract-thumbnail is byte-stable across re-runs Original / libexif / usage-exif-cli-extract-thumbnail-bytewise-equal Passed

Runs exif --extract-thumbnail twice against the canon fixture writing to two distinct output files, verifies both are non-empty, and asserts that the two extracted thumbnail files are byte-for-byte equal so callers can rely on deterministic re-extraction.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --extract-thumbnail honors a precise --output path Original / libexif / usage-exif-cli-extract-thumbnail-explicit-output-path Passed

Runs the exif client with --extract-thumbnail and a specific --output path containing a non-default filename and verifies the resulting JPEG lands at exactly that path (and only that path), carries the FFD8FF SOI magic, has a non-trivial size, and that exif's own diagnostic line names the requested path. Pins the path-honoring contract for dependent clients that ask for a precise output filename rather than the conventional thumbnail.jpg sibling.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif extracted thumbnail JPEG magic Original / libexif / usage-exif-cli-extract-thumbnail-jpeg-magic Passed

Extracts the embedded thumbnail with exif --extract-thumbnail and verifies the output begins with the FFD8FF JPEG SOI marker.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --extract-thumbnail writes into a pre-created nested directory Original / libexif / usage-exif-cli-extract-thumbnail-nested-output-dir Passed

Creates a multi-level nested directory tree, runs exif --extract-thumbnail with --output pointing into the deepest leaf, and verifies the thumbnail JPEG lands at the requested path with FFD8FF magic, while a parallel run against a non-existent leaf without prior mkdir fails with a write diagnostic and produces no file.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --extract-thumbnail emits a JPEG with SOI and EOI markers Original / libexif / usage-exif-cli-extract-thumbnail-soi-eoi-bytes Passed

Extracts the embedded thumbnail from the canon fixture with exif --extract-thumbnail and verifies the file begins with the FFD8FF JPEG SOI marker and ends with the FFD9 JPEG EOI marker, asserting the extracted thumbnail is a complete, framed JPEG rather than a truncated payload.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif CLI thumbnail extraction Original / libexif / usage-exif-cli-extract-thumbnail Passed

Runs the exif CLI to extract the embedded JPEG thumbnail from camera metadata.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif Flash tag Original / libexif / usage-exif-cli-flash-tag Passed

Reads the Flash EXIF tag from a JPEG fixture and checks that a value is present.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif FNumber tag Original / libexif / usage-exif-cli-fnumber Passed

Reads the FNumber EXIF tag from a JPEG fixture and checks that a value is present.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif focal length tag Original / libexif / usage-exif-cli-focal-length-tag Passed

Reads the FocalLength EXIF tag from a JPEG fixture and verifies the focal length text.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif --help lists every documented switch Original / libexif / usage-exif-cli-help-option-banner Passed

Runs exif --help and verifies the help screen advertises the canonical option set including --tag, --ifd, --list-tags, --show-mnote, --remove, --extract-thumbnail, --insert-thumbnail, --no-fixup, --output, --set-value, --create-exif, --machine-readable, --width, --xml-output, and --debug, exactly as shipped on Ubuntu 24.04.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --ids --machine-readable cross-check Original / libexif / usage-exif-cli-ids-machine-readable-cross-check Passed

Runs the exif client with --ids --machine-readable on the canon fixture, parses the tab-delimited stream, and cross-checks the value column for tag id 0x0112 (Orientation) against the corresponding plain --machine-readable lookup to confirm both modes report identical Right-top text.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --ids reports Orientation hex tag id Original / libexif / usage-exif-cli-ids-orientation-hex Passed

Runs the exif client with --ids to print numeric tag identifiers and verifies the Orientation tag id 0x112 with its Right-top value.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif IFD EXIF exposure time Original / libexif / usage-exif-cli-ifd-exif-exposure-time Passed

Exercises exif ifd exif exposure time through a dependent-client usage scenario.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif IFD EXIF F number Original / libexif / usage-exif-cli-ifd-exif-fnumber Passed

Exercises exif ifd exif f number through a dependent-client usage scenario.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif CLI EXIF IFD Original / libexif / usage-exif-cli-ifd-exif Passed

Runs the exif CLI against the EXIF IFD and verifies exposure metadata is decoded.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --ifd=GPS pretty readout is graceful on a GPS-less fixture Original / libexif / usage-exif-cli-ifd-gps-pretty-empty Passed

Runs the exif client with --ifd=GPS (without --machine-readable) against the canon fixture which carries no GPS metadata, and verifies the readout exits cleanly without crashing, emits no GPS-tag labels (GPSLatitude, GPSLongitude, GPSAltitude, GPSTimeStamp), and does not leak unrelated IFD 0 / EXIF IFD labels (Manufacturer, F-Number, Color Space) into the GPS-scoped output. Pins the graceful empty contract for the human-readable IFD scope when GPS data is absent.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif IFD1 compression Original / libexif / usage-exif-cli-ifd-one-compression-batch11 Passed

Lists thumbnail IFD metadata and checks compression details.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif metadata
Log

            
exif IFD1 resolution unit Original / libexif / usage-exif-cli-ifd-one-resolution-unit-batch11 Passed

Lists thumbnail IFD metadata and checks resolution unit details.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif metadata
Log

            
exif IFD zero make Original / libexif / usage-exif-cli-ifd-zero-make Passed

Exercises exif ifd zero make through a dependent-client usage scenario.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif IFD0 model tag Original / libexif / usage-exif-cli-ifd-zero-model Passed

Dumps the IFD0 tag set and verifies the camera model entry is present in the textual output.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif IFD0 orientation tag Original / libexif / usage-exif-cli-ifd-zero-orientation Passed

Dumps the IFD0 tag set and verifies the orientation entry is present in the textual output.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif IFD zero listing Original / libexif / usage-exif-cli-ifd-zero Passed

Reads the primary IFD from a JPEG fixture and checks manufacturer metadata.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif --insert-thumbnail roundtrip preserves bytes Original / libexif / usage-exif-cli-insert-thumbnail-roundtrip Passed

Builds a minimal JPEG, inserts it into a copy of the canon fixture with --insert-thumbnail, then re-extracts the thumbnail and asserts byte-for-byte equality.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --tag rejects an unknown tag name Original / libexif / usage-exif-cli-invalid-tag-name-error Passed

Runs exif --tag=NotARealTag against the canon fixture and verifies the client exits non-zero and prints the canonical "Invalid tag" diagnostic naming the bogus token. Pins libexif's argp-side validation of --tag values on Ubuntu 24.04 against accidental client typos.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata error
Log

            
exif list color space Original / libexif / usage-exif-cli-list-color-space Passed

Exercises exif list color space through a dependent-client usage scenario.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif list focal length Original / libexif / usage-exif-cli-list-focal-length Passed

Lists EXIF metadata for the sample JPEG and verifies the focal length line and decoded value are present.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif list orientation Original / libexif / usage-exif-cli-list-orientation Passed

Lists EXIF metadata for the sample JPEG and verifies the orientation line and decoded value are present.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif list pixel dimensions Original / libexif / usage-exif-cli-list-pixel-dimensions Passed

Exercises exif list pixel dimensions through a dependent-client usage scenario.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif -l -i -m emits the IFD support grid with hex IDs Original / libexif / usage-exif-cli-list-tags-machine-ids-grid Passed

Runs exif with --list-tags combined with --ids and --machine-readable against the canon fixture and verifies the client emits the documented IFD support grid pinning the column header set (0, 1, EXIF, GPS, Interop), the hex tag id format (0x0001), and the presence of a known Interoperability tag row that locks the libexif Ubuntu 24.04 list-tags reference grid that callers parse to map tag-id-to-IFD support.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata list-tags
Log

            
exif CLI lists camera tags Original / libexif / usage-exif-cli-list-tags Passed

Runs the exif CLI on a JPEG fixture and reads camera tag output.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif machine color space Original / libexif / usage-exif-cli-machine-color-space Passed

Reads the ColorSpace tag in machine-readable mode and verifies the decoded colorspace value.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif machine DateTimeOriginal Original / libexif / usage-exif-cli-machine-datetime-original Passed

Exercises exif machine datetimeoriginal through a dependent-client usage scenario.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine DateTime Original / libexif / usage-exif-cli-machine-datetime Passed

Exercises exif machine datetime through a dependent-client usage scenario.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine ExifVersion Original / libexif / usage-exif-cli-machine-exif-version Passed

Reads ExifVersion via exif --machine-readable and verifies that Exif Version 2.2 is reported.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine FlashPixVersion Original / libexif / usage-exif-cli-machine-flashpix-version Passed

Reads FlashPixVersion via exif --machine-readable and verifies that FlashPix Version 1.0 is reported.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine focal length Original / libexif / usage-exif-cli-machine-focal-length Passed

Reads the FocalLength tag in machine-readable mode and verifies the decoded focal length value.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif machine focal plane X resolution Original / libexif / usage-exif-cli-machine-focal-plane-x-resolution-batch11 Passed

Reads the focal-plane X resolution tag in machine-readable form with exif.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif metadata
Log

            
exif --machine-readable --ifd=EXIF emits FlashPixVersion Original / libexif / usage-exif-cli-machine-ifd-exif-flashpix Passed

Runs the exif client with --machine-readable --ifd=EXIF and verifies the EXIF IFD tab-delimited stream contains FlashPixVersion 1.0 plus other EXIF-IFD tags while excluding the IFD 0 Manufacturer entry.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --machine-readable --ifd=GPS reports empty GPS IFD Original / libexif / usage-exif-cli-machine-ifd-gps-empty Passed

Runs the exif client with --machine-readable --ifd=GPS against the canon fixture which has no GPS metadata and verifies the stream emits only the synthetic ThumbnailSize entry without EXIF or IFD 0 tags.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --machine-readable --ifd=0 emits IFD 0 tags Original / libexif / usage-exif-cli-machine-ifd-zero-tabs Passed

Runs the exif client with --machine-readable --ifd=0 and verifies the IFD 0 tab-delimited stream contains the Manufacturer and Model entries while excluding EXIF-IFD-only tags such as F-Number.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --machine-readable parses into shell key=value pairs Original / libexif / usage-exif-cli-machine-key-value-shell-parse Passed

Runs the exif client with --machine-readable and pipes the tab-delimited stream through awk to produce a key=value file, then verifies that programmatic lookups for Manufacturer, Model, Color Space, and Exif Version recover the expected literal values.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif machine-readable make Original / libexif / usage-exif-cli-machine-make Passed

Prints the Make tag in machine-readable form and verifies the manufacturer.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif machine-readable maker note Original / libexif / usage-exif-cli-machine-maker-note-thumbnail Passed

Emits full machine-readable EXIF metadata and verifies Maker Note and ThumbnailSize rows from the structured output.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine MeteringMode Original / libexif / usage-exif-cli-machine-metering-mode Passed

Reads MeteringMode via exif --machine-readable and verifies that the Pattern metering mode is reported.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine model Original / libexif / usage-exif-cli-machine-model-value Passed

Exercises exif machine model value through a dependent-client usage scenario.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine-readable model Original / libexif / usage-exif-cli-machine-model Passed

Prints the Model tag in machine-readable form and verifies the camera model.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif machine orientation Original / libexif / usage-exif-cli-machine-orientation Passed

Reads the Orientation tag in machine-readable mode and verifies the decoded orientation value.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif machine PixelXDimension Original / libexif / usage-exif-cli-machine-pixel-x-dimension Passed

Reads PixelXDimension via exif --machine-readable and verifies the 640 pixel width is reported.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine PixelYDimension Original / libexif / usage-exif-cli-machine-pixel-y-dimension Passed

Reads PixelYDimension via exif --machine-readable and verifies the 480 pixel height is reported.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --machine-readable populates a bash associative array Original / libexif / usage-exif-cli-machine-readable-associative-array Passed

Runs the exif client with --machine-readable against the canon fixture, parses the tab-delimited stream into a bash associative array indexed by tag name, and verifies that array lookups for Manufacturer, Model, Color Space, Orientation, and Compression each yield the expected canonical literal values, demonstrating the machine-readable format is robust enough for shell-side declare -A consumers.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --machine-readable --no-fixup combo emits Make Original / libexif / usage-exif-cli-machine-readable-no-fixup-make Passed

Combines --machine-readable with --no-fixup against the canon fixture and verifies the tab-delimited stream still reports the Manufacturer entry as Canon, that --tag=Make produces only Canon on its own line, and that the field-count and value match the plain --machine-readable run.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif CLI machine output Original / libexif / usage-exif-cli-machine-readable Passed

Runs the exif CLI in machine-readable mode and reads structured tag output.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif machine RelatedImageLength Original / libexif / usage-exif-cli-machine-related-image-length Passed

Reads RelatedImageLength via exif --machine-readable and verifies the 480 pixel height is reported for the sample image.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine RelatedImageWidth Original / libexif / usage-exif-cli-machine-related-image-width Passed

Reads RelatedImageWidth via exif --machine-readable and verifies the 640 pixel width is reported for the sample image.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine ResolutionUnit Original / libexif / usage-exif-cli-machine-resolution-unit Passed

Reads ResolutionUnit via exif --machine-readable and verifies that inch units are reported for the sample image.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine SceneCaptureType Original / libexif / usage-exif-cli-machine-scene-capture Passed

Reads SceneCaptureType via exif --machine-readable and verifies that the Landscape scene capture type is reported.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --machine-readable --tag=ExposureTime emits 1 sec. Original / libexif / usage-exif-cli-machine-tag-exposure-time Passed

Runs the exif client with --machine-readable --tag=ExposureTime against the canon fixture and verifies the scoped run emits exactly one line carrying the 1 sec. value, while a parallel scan of the unscoped --machine-readable stream confirms the same value is reachable when filtered for the Exposure Time row.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --machine-readable --tag=Make returns the explicit Canon scalar Original / libexif / usage-exif-cli-machine-tag-make-explicit Passed

Runs the exif client with --machine-readable --tag=Make against the canon fixture and verifies the streamed output is a single tab-delimited record whose payload is exactly the literal Canon manufacturer string. The probe pins the explicit-value contract for dependent clients that key off Make, ruling out localized labels, multi-row framing, or accidental empty payloads when --tag is combined with --machine-readable.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif machine X resolution Original / libexif / usage-exif-cli-machine-x-resolution-batch11 Passed

Reads the XResolution tag in machine-readable form with exif.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif metadata
Log

            
exif machine Y resolution Original / libexif / usage-exif-cli-machine-y-resolution-batch11 Passed

Reads the YResolution tag in machine-readable form with exif.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif metadata
Log

            
exif machine YCbCrPositioning Original / libexif / usage-exif-cli-machine-ycbcr-positioning-batch11 Passed

Reads the YCbCrPositioning tag in machine-readable form with exif.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif metadata
Log

            
exif CLI maker note Original / libexif / usage-exif-cli-maker-note Passed

Runs the exif CLI to decode maker-note metadata from a JPEG fixture.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif metering mode tag Original / libexif / usage-exif-cli-metering-mode-tag Passed

Reads the MeteringMode EXIF tag from a JPEG fixture.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif accepts multiple positional file arguments Original / libexif / usage-exif-cli-multiple-files-positional Passed

Runs the exif client with two positional JPEG paths that point at the same canon fixture and verifies the client emits one EXIF tags table per argument by counting the per-file header banner. Pins libexif's positional file iteration contract on Ubuntu 24.04 for callers that batch multiple JPEGs in a single invocation.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata batch
Log

            
exif rejects JPEG without EXIF data Original / libexif / usage-exif-cli-no-exif-error Passed

Synthesises a minimal JFIF JPEG with no EXIF segment, runs the exif client against it, and verifies the client exits non-zero and prints the does not contain EXIF data diagnostic naming the synthesised file.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --no-fixup keeps Make tag readable Original / libexif / usage-exif-cli-no-fixup-tag-make Passed

Runs the exif client with --no-fixup so that no automatic tag repair is performed and verifies that the Make tag still parses to Canon from the canon fixture.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif against canon fixture exposes no XMP-derived tags Original / libexif / usage-exif-cli-no-xmp-block-canon-fixture Passed

Runs the exif client against the canon fixture in machine-readable mode and verifies the streamed records contain none of the XMP-derived field names a dependent client might expect to see when an XMP packet is present (XMPToolkit, dc:creator, xmp:CreatorTool, photoshop:DateCreated). libexif itself does not parse XMP, but a fixture that carries an XMP APP1 segment can cause clients to scrape XMP names out of the JPEG; this testcase pins the canon fixture as XMP-free so other testcases can rely on that.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif on a nonexistent path reports the not-readable diagnostic Original / libexif / usage-exif-cli-nonexistent-file-error Passed

Runs the exif client against a path that does not exist on disk and verifies the client exits with status 1, names the missing path verbatim in the diagnostic, and prints the canonical "is not readable or does not contain EXIF data" message that callers parse to distinguish IO failures from clean runs on Ubuntu 24.04.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata error
Log

            
exif orientation tag Original / libexif / usage-exif-cli-orientation-tag Passed

Reads the Orientation EXIF tag from a JPEG fixture and verifies the reported value.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif pixel dimensions Original / libexif / usage-exif-cli-pixel-dimensions Passed

Reads EXIF pixel dimension tags from a JPEG fixture.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif related image length Original / libexif / usage-exif-cli-related-image-length Passed

Reads the RelatedImageLength EXIF tag from a JPEG fixture.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif related image width Original / libexif / usage-exif-cli-related-image-width Passed

Reads the RelatedImageWidth EXIF tag from a JPEG fixture.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif --remove --tag=DateTime --ifd=0 strips the top-level timestamp Original / libexif / usage-exif-cli-remove-datetime-ifd-zero Passed

Copies the canon JPEG fixture to a tmpdir and removes the top-level DateTime tag from IFD 0 with exif --remove, then verifies the rewritten file no longer reports DateTime via --tag=DateTime, that IFD 0 entry count drops from 9 to 8 in the --debug trace, and that the unrelated Model tag remains intact and equal to the original readout.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --remove decrements IFD 0 entry count Original / libexif / usage-exif-cli-remove-decrements-ifd-zero-entries Passed

Removes the Make tag from a copy of the canon JPEG and confirms via --debug that IFD 0 now reports 8 entries instead of the original 9.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --remove --ifd=1 invalidates thumbnail Compression value Original / libexif / usage-exif-cli-remove-ifd1-then-thumbnail-tag-gone Passed

Removes IFD 1 from a copy of the canon fixture using exif --remove --ifd=1, then re-reads --tag=Compression --ifd=1 against the rewritten file and confirms the Compression entry value collapses to the libexif Internal error (unknown value 0) marker rather than the original JPEG compression label, while IFD 0 Make remains Canon and the original fixture still reports JPEG compression.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --remove drops Make from a copy Original / libexif / usage-exif-cli-remove-make-tag Passed

Copies the canon JPEG fixture to a tmpdir and removes the Make tag with exif --remove, verifying the Make tag is gone while Model remains intact.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --remove Make leaves the embedded thumbnail intact Original / libexif / usage-exif-cli-remove-make-then-extract-thumbnail Passed

Strips the IFD 0 Make tag from a copy of the canon fixture with exif --remove --tag=Make, then runs --extract-thumbnail against the rewritten file and verifies the thumbnail still extracts byte-for-byte identically to the thumbnail extracted from the untouched original, confirming Make removal and thumbnail extraction are independent.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --remove --tag=Copyright handles tag absent from fixture Original / libexif / usage-exif-cli-remove-missing-copyright Passed

Confirms the canon fixture has no Copyright tag in IFD 0, then runs exif --remove --tag=Copyright --ifd=0 against a copy and checks that the client either errors out cleanly or no-ops without corrupting the file, with IFD 0 still loading 9 entries afterwards.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --remove-thumbnail then --extract-thumbnail reports absence Original / libexif / usage-exif-cli-remove-thumbnail-then-extract Passed

Strips the embedded thumbnail from a copy of the canon fixture with --remove-thumbnail, then runs --extract-thumbnail against the rewritten file and verifies the client exits non-zero with a does not contain a thumbnail diagnostic and produces no output file, while the original fixture still yields a thumbnail.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif scene capture type Original / libexif / usage-exif-cli-scene-capture-tag Passed

Reads the SceneCaptureType EXIF tag from a JPEG fixture.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif --set-value rewrites DateTimeOriginal Original / libexif / usage-exif-cli-set-value-datetime-original-readback Passed

Uses exif --set-value with --ifd=EXIF to overwrite DateTimeOriginal on a copy of the canon fixture and confirms the new timestamp is reported on readback.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --set-value cross-validated via --machine-readable bytes Original / libexif / usage-exif-cli-set-value-machine-readable-bytes Passed

Rewrites the Make tag on a copy of the canon fixture with --set-value, reads the new value back through --tag=Make, then runs --machine-readable --tag=Make against the rewritten file and compares the exact byte sequence on stdout to the literal new value to confirm the rewrite is observable through both rendering modes.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --set-value rewrites Make tag Original / libexif / usage-exif-cli-set-value-make-readback Passed

Uses exif --set-value with --ifd=0 to replace the Make tag on a copy of the canon fixture and reads the new value back from the rewritten JPEG.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --set-value rewrites Orientation Short tag Original / libexif / usage-exif-cli-set-value-orientation-readback Passed

Uses exif --set-value with --ifd=0 --tag=Orientation to replace the SHORT-typed Orientation entry on a copy of the canon fixture (4 -> 1, "Bottom-left" to "Top-left") and reads the new value back from the rewritten JPEG. The original fixture is verified untouched and the rewritten copy must report Orientation=1 with the human-readable "Top-left" label, pinning libexif's set-value path for non-ASCII (Short) tags on Ubuntu 24.04.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata set-value
Log

            
exif --set-value rewrites rational ExposureTime Original / libexif / usage-exif-cli-set-value-rational-exposure Passed

Uses exif --set-value with --ifd=EXIF to overwrite the rational ExposureTime tag using two-component numerator/denominator input on a copy of the canon fixture and verifies the rewritten JPEG reports the new 1/250 sec value while the original remains 1 sec.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif -e -o short-flag form extracts the thumbnail Original / libexif / usage-exif-cli-short-flag-extract-thumbnail Passed

Invokes exif using the short-flag form (-e for --extract-thumbnail and -o for --output) instead of the long-flag form and verifies the client writes the same 4-byte thumbnail payload to the requested path with the canonical "Wrote file" diagnostic. Pins libexif's short-flag parity on Ubuntu 24.04 so dependent clients that prefer terse argv can rely on identical behavior.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata short-flag
Log

            
exif --show-description prints DateTime help Original / libexif / usage-exif-cli-show-description-datetime Passed

Asks the exif client for the DateTime tag description with --show-description --ifd=0 and verifies the standard EXIF documentation string is reported.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --show-description FNumber in IFD EXIF Original / libexif / usage-exif-cli-show-description-fnumber-exif Passed

Invokes exif --show-description --ifd=EXIF --tag=FNumber on the canon fixture and verifies libexif resolves the EXIF subdirectory binding so the description names the F-Number tag with hex id 0x829d and the canonical short description The F number, distinguishing the tag from a same-named entry in IFD 0.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --show-description GPSLatitude in GPS IFD Original / libexif / usage-exif-cli-show-description-gps-latitude Passed

Invokes exif --show-description --ifd=GPS --tag=GPSLatitude against the canon fixture and confirms the GPS subdirectory dispatch resolves to tag id 0x0002 with symbolic name GPSLatitude and the libexif documentation snippet expressed as three RATIONAL values giving the degrees, minutes, and seconds.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --show-description Orientation in IFD 0 Original / libexif / usage-exif-cli-show-description-orientation-ifd0 Passed

Invokes exif --show-description --ifd=0 --tag=Orientation against the canon fixture and verifies the human readable description references the canonical hex tag id 0x0112, the symbolic Orientation name, and the substring image orientation viewed in terms of rows and columns shipped by libexif.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif -s without --ifd demands an IFD Original / libexif / usage-exif-cli-show-description-without-ifd-error Passed

Runs exif --show-description --tag=Orientation against the canon fixture without specifying an --ifd and verifies the client refuses to disambiguate, exiting non-zero with the canonical "You need to specify an IFD!" diagnostic. This pins the libexif Ubuntu 24.04 behavior that show-description requires an explicit IFD scope when the requested tag is registered in more than one IFD.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata error
Log

            
exif maker note firmware Original / libexif / usage-exif-cli-show-mnote-firmware-batch11 Passed

Shows maker-note details and checks firmware reporting.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif metadata
Log

            
exif --show-mnote --ids prefixes rows with 0x0001 hex tag ids Original / libexif / usage-exif-cli-show-mnote-ids-hex-prefix Passed

Runs exif --show-mnote --ids on the canon fixture and confirms the maker-note dump still announces 96 entries with MakerNote contains 96 values and renders Canon mnote rows using hex tag ids prefixed with 0x rather than the symbolic Macro Mode label, with the very first 0x0001 row decoded as the Normal value and a Superfine Quality row also reachable.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --show-mnote --machine-readable emits tab-separated rows Original / libexif / usage-exif-cli-show-mnote-machine-readable-tabs Passed

Runs exif --show-mnote --machine-readable on the canon fixture and verifies the maker-note dump uses the canonical name<TAB>value layout with no plus-or-pipe separator characters and includes the Canon-specific Macro Mode, Quality, Flash Mode, and Image Size lines reachable through the libexif Canon mnote backend.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --tag=ApertureValue auto-finds the APEX aperture Original / libexif / usage-exif-cli-tag-aperture-value Passed

Runs the exif client with --tag=ApertureValue against the canon fixture and verifies the readout includes the ApertureValue label and a non-empty Value line carrying the composed APEX rendering, then re-runs with --machine-readable to confirm the same scalar appears as a single tab-delimited record. ApertureValue is a composed APEX tag whose human form is the f/N rendering libexif derives from the rational stored in the EXIF IFD.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --tag=0x0112 selects Orientation by numeric ID Original / libexif / usage-exif-cli-tag-by-hex-id-orientation Passed

Runs exif with --tag specified as the bare hexadecimal Orientation tag id (0x0112) and verifies the client resolves the numeric id to the same entry it reports under the symbolic name, including the IFD '0' provenance line, the format Short triple, the single-component descriptor, and the human-readable Right-top value from the canon fixture.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata tag-id
Log

            
exif --ids --tag=ColorSpace reports 0xa001 Original / libexif / usage-exif-cli-tag-color-space-ids-hex Passed

Runs the exif client with --ids --tag=ColorSpace against the canon fixture and verifies the EXIF tag id for ColorSpace is reported as 0xa001 alongside the symbolic name and the sRGB value, asserting the numeric id and decoded value live on the same readout.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag color space via sed Original / libexif / usage-exif-cli-tag-color-space-sed Passed

Extracts the exif ColorSpace tag value through shell text processing and verifies the parsed color space.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif tag components configuration Original / libexif / usage-exif-cli-tag-components-configuration Passed

Reads the ComponentsConfiguration EXIF tag with the exif client and verifies that the expected Y Cb Cr channel order is reported.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif tag compression JPEG Original / libexif / usage-exif-cli-tag-compression-jpeg Passed

Reads the Compression EXIF tag with the exif client and verifies that JPEG compression is reported for the sample image.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --tag=Compression cross-checks human and machine-readable JPEG mode Original / libexif / usage-exif-cli-tag-compression-machine-cross-check Passed

Reads the Compression tag with the exif client in both default text mode and --machine-readable mode against the canon fixture, asserts the human-readable form contains the JPEG compression label while the machine-readable form is the bare JPEG compression record, and asserts the two outputs differ so the formatting modes really are independent.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --tag=DateTime cross-checked against the 0x0132 hex id Original / libexif / usage-exif-cli-tag-datetime-ids-hex Passed

Reads the top-level DateTime tag with the exif client both by symbolic name and via the --ids dump that prints numeric tag ids in hex against the canon fixture, verifying the canonical timestamp 2009:10:10 16:42:32 surfaces from the symbolic --tag=DateTime call and that the --ids listing of IFD 0 contains the 0x0132 DateTime tag id paired with the same timestamp.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif CLI DateTimeOriginal tag Original / libexif / usage-exif-cli-tag-datetime-original Passed

Runs the exif CLI to read the original capture timestamp from a JPEG fixture.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag date time via sed Original / libexif / usage-exif-cli-tag-datetime-sed Passed

Extracts the exif DateTime tag value through shell text processing and verifies the parsed timestamp.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif CLI DateTime tag Original / libexif / usage-exif-cli-tag-datetime Passed

Runs the exif CLI to read the image DateTime tag from a JPEG fixture.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag digital zoom ratio Original / libexif / usage-exif-cli-tag-digital-zoom-ratio Passed

Reads the DigitalZoomRatio EXIF tag with the exif client and verifies that the expected 1.0000 ratio is reported.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --tag=ExifOffset reports the EXIF IFD pointer tag Original / libexif / usage-exif-cli-tag-exif-offset-pointer Passed

Runs the exif client with --tag=ExifOffset against the canon fixture and verifies the readout includes a Value line whose payload is non-empty. ExifOffset is the IFD 0 pointer tag (0x8769) that libexif uses to locate the EXIF sub-IFD, so any well-formed JPEG with EXIF metadata exposes it. The machine-readable probe is also verified to emit a single tab-delimited record so dependent clients can read the pointer scalar without parsing the pretty layout.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag ExifVersion 2.2 Original / libexif / usage-exif-cli-tag-exif-version-22 Passed

Reads the ExifVersion EXIF tag with the exif client and verifies that Exif Version 2.2 is reported.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --ids --ifd=EXIF --tag=ExposureTime reports 0x829a Original / libexif / usage-exif-cli-tag-exposure-time-ids-ifd-exif Passed

Runs the exif client with --ids --ifd=EXIF --tag=ExposureTime against the canon fixture and verifies the EXIF-IFD scoped readout reports the numeric tag id 0x829a paired with the ExposureTime symbolic name and the 1 sec. value.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag file source Original / libexif / usage-exif-cli-tag-file-source Passed

Reads the FileSource EXIF tag with the exif client and verifies that the DSC source marker is reported.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif tag FlashPixVersion 1.0 Original / libexif / usage-exif-cli-tag-flashpix-version-10 Passed

Reads the FlashPixVersion EXIF tag with the exif client and verifies that FlashPix Version 1.0 is reported.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --show-description --tag=FlashPixVersion prints help text Original / libexif / usage-exif-cli-tag-flashpix-version-show-description Passed

Asks the exif client for the FlashPixVersion tag description with --show-description --ifd=EXIF and verifies the standard EXIF documentation string is reported including the symbolic name and the explanatory text about the supported FlashPix format version.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --tag=FNumber --ifd=EXIF pins f/2.8 Original / libexif / usage-exif-cli-tag-fnumber-ifd-exif-value Passed

Runs the exif client with --tag=FNumber --ifd=EXIF against the canon fixture and verifies the EXIF-scoped readout reports the F-Number label with the exact f/2.8 value, while a parallel probe scoped to --ifd=0 fails because the tag does not live in IFD 0.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag focal length via sed Original / libexif / usage-exif-cli-tag-focal-length-sed Passed

Extracts the exif FocalLength tag value through shell text processing and verifies the parsed focal length.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif tag interoperability index Original / libexif / usage-exif-cli-tag-interoperability-index Passed

Reads the InteroperabilityIndex EXIF tag with the exif client and verifies that the R98 marker is reported.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --tag=0xa005 reports the Interop pointer tag Original / libexif / usage-exif-cli-tag-interoperability-offset-pointer Passed

Runs the exif client with --tag=0xa005 against the canon fixture and verifies the readout includes a Value line whose payload is non-empty. ExifInteroperabilityOffset (0xA005) lives in the EXIF IFD and points at the Interoperability IFD; the canon fixture carries an Interop IFD (its InteroperabilityIndex tag is exercised by the quad-probe testcase), so the pointer tag must resolve. The machine-readable probe is also verified to emit a single tab-delimited record.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag interoperability version Original / libexif / usage-exif-cli-tag-interoperability-version Passed

Reads the InteroperabilityVersion EXIF tag with the exif client and verifies that the expected 0100 version string is reported.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --tag scoped read against canon fixture Original / libexif / usage-exif-cli-tag-iso-speed-ratings Passed

Runs the exif client with a --tag flag against the canon fixture and verifies the readout includes the requested tag's label and a non-empty Value line, then re-runs with --machine-readable to confirm the same scalar appears as a tab-delimited record. The canon fixture does not carry an ISOSpeedRatings tag, so this exercises the scoped --tag readout against Manufacturer, which the fixture does carry.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag make via sed Original / libexif / usage-exif-cli-tag-make-sed Passed

Extracts the exif Make tag value through shell text processing and verifies the parsed camera make.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif CLI make tag Original / libexif / usage-exif-cli-tag-make Passed

Runs the exif CLI to read the camera Make tag from a JPEG fixture.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag model via sed Original / libexif / usage-exif-cli-tag-model-sed Passed

Extracts the exif Model tag value through shell text processing and verifies the parsed camera model.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif CLI model tag Original / libexif / usage-exif-cli-tag-model Passed

Runs the exif CLI to read the camera Model tag from a JPEG fixture.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --tag=0x0112 numeric Orientation lookup Original / libexif / usage-exif-cli-tag-numeric-orientation Passed

Looks up the Orientation tag by its numeric tag id 0x0112 instead of by name and verifies the canon fixture reports the Orientation entry with value Right-top, then cross-checks the same record against a name-based --tag=Orientation lookup to confirm the two produce equivalent metadata.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag orientation via sed Original / libexif / usage-exif-cli-tag-orientation-sed Passed

Extracts the exif Orientation tag value through shell text processing and verifies the parsed orientation.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif pixel X dimension tag Original / libexif / usage-exif-cli-tag-pixel-x-dimension Passed

Reads the PixelXDimension tag and verifies the reported horizontal pixel dimension.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif tag pixel x via sed Original / libexif / usage-exif-cli-tag-pixel-x-sed Passed

Extracts the exif PixelXDimension tag value through shell text processing and verifies the parsed width.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif pixel Y dimension tag Original / libexif / usage-exif-cli-tag-pixel-y-dimension Passed

Reads the PixelYDimension tag and verifies the reported vertical pixel dimension.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif tag pixel y via sed Original / libexif / usage-exif-cli-tag-pixel-y-sed Passed

Extracts the exif PixelYDimension tag value through shell text processing and verifies the parsed height.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif tag resolution unit inch Original / libexif / usage-exif-cli-tag-resolution-unit-inch Passed

Reads the ResolutionUnit EXIF tag with the exif client and verifies that inch units are reported.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --tag=ResolutionUnit consistent with XResolution and YResolution Original / libexif / usage-exif-cli-tag-resolution-unit-paired-resolutions Passed

Reads ResolutionUnit, XResolution, and YResolution from the canon fixture with the exif client, verifies the unit is reported as Inch and that XResolution and YResolution both surface their numeric ratios so callers parsing DPI metadata see all three tags consistently from one tool invocation per tag.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag sensing method Original / libexif / usage-exif-cli-tag-sensing-method Passed

Reads the SensingMethod EXIF tag with the exif client and verifies that the expected sensor type is reported.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --tag=ShutterSpeedValue auto-finds the APEX shutter time Original / libexif / usage-exif-cli-tag-shutter-speed-value Passed

Runs the exif client with --tag=ShutterSpeedValue against the canon fixture and verifies the readout includes the ShutterSpeedValue label and a non-empty Value line carrying the composed APEX rendering, then re-runs with --machine-readable to confirm the same scalar appears as a single tab-delimited record. ShutterSpeedValue is the APEX TV counterpart to ExposureTime and libexif renders it from the signed rational stored in the EXIF IFD.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --tag without --ifd resolves IFD 0 then EXIF tags Original / libexif / usage-exif-cli-tag-without-ifd-dual-probe Passed

Runs the exif client with --tag and no --ifd argument, first against the IFD 0 Make tag and then against the EXIF-IFD FNumber tag, verifying the client transparently locates each tag in its native IFD and reports Canon for Make and f/2.8 for FNumber, exactly matching the explicitly scoped --ifd readouts.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --tag without --ifd auto-finds tags across four IFDs Original / libexif / usage-exif-cli-tag-without-ifd-quad-probe Passed

Runs the exif client with --tag and no --ifd argument against four tags whose native homes span IFD 0 (Model), the EXIF IFD (ExposureTime), IFD 1 (Compression for the thumbnail), and the Interoperability IFD (InteroperabilityIndex), verifying that auto-finding succeeds and reports the expected literal value for each tag without the caller specifying which IFD to scope to.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif YCbCrPositioning tag Original / libexif / usage-exif-cli-tag-ycbcr-positioning-batch11 Passed

Reads the YCbCrPositioning tag with exif.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif metadata
Log

            
exif --tag=YCbCrPositioning reports the textual position keyword Original / libexif / usage-exif-cli-tag-ycbcr-positioning-co-sited Passed

Reads YCbCrPositioning with the exif client against the canon fixture and verifies the human-readable text mode reports a recognized chroma positioning keyword (either Co-sited or Centered, both spec-defined) and that the same tag in --machine-readable mode also emits that keyword on its bare line.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif extracted thumbnail size Original / libexif / usage-exif-cli-thumbnail-size Passed

Extracts a thumbnail from a JPEG fixture and checks it is nonempty.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif rejects a non-JPEG input with a diagnostic Original / libexif / usage-exif-cli-truncated-jpeg-error Passed

Feeds the exif client a payload that has no JPEG SOI marker (a plain text file) and a JPEG-shaped file that contains no EXIF segment, verifying the client surfaces a diagnostic on stdout/stderr and exits non-zero on the non-JPEG input while leaving the original canon fixture parseable.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --usage prints brief getopt synopsis Original / libexif / usage-exif-cli-usage-brief-banner Passed

Runs exif --usage and confirms the brief synopsis bundles the short-option cluster Usage: exif [-?vil|sercmxd] and lists the long-option synopsis tokens for --width, --xml-output, --debug, and the trailing OPTION...] file marker, distinct from the verbose --help screen.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --version reports a parseable banner Original / libexif / usage-exif-cli-version-banner Passed

Runs the exif client with --version and verifies the banner is a single line containing a numeric major.minor.patch version starting with 0.6, matching the libexif Ubuntu 24.04 baseline 0.6.x series.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --version writes only to stdout with a clean stderr Original / libexif / usage-exif-cli-version-channel-separation Passed

Runs the exif client with --version while capturing stdout and stderr separately and verifies the version banner lands exclusively on stdout as a single 0.6.x release identifier with no leading "exif" prefix or trailing copyright lines, and that stderr is empty. This pins the channel separation contract so dependent clients can `read VER < <(exif --version)` without coping with stderr noise.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif white balance tag Original / libexif / usage-exif-cli-white-balance-tag Passed

Reads the WhiteBalance EXIF tag from a JPEG fixture and checks that a value is present.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif --width=40 narrows the value column Original / libexif / usage-exif-cli-width-narrow-value-column Passed

Runs exif --width=40 against the canon fixture and verifies the underline separator row sized for a 40-column terminal contains exactly 30 dashes after the plus sign in the value column, matching libexif default tag-name width plus a 30-character value column for narrow terminals.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --width=120 widens the value column Original / libexif / usage-exif-cli-width-wide-value-column Passed

Runs exif --width=120 against the canon fixture and verifies the value-column separator row is exactly 98 dashes wide so wide terminals receive a stretched table while the narrow 40-column run still fits in 30 dashes, exposing the WIDTH parameter scaling factor for the table renderer.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif XML ExifVersion Original / libexif / usage-exif-cli-xml-exif-version-batch11 Passed

Emits XML metadata with exif and checks the ExifVersion element.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif metadata xml
Log

            
exif XML FlashPixVersion Original / libexif / usage-exif-cli-xml-flashpix-version-batch11 Passed

Emits XML metadata with exif and checks the FlashPixVersion element.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif metadata xml
Log

            
exif XML focal length Original / libexif / usage-exif-cli-xml-focal-length Passed

Exercises exif xml focal length through a dependent-client usage scenario.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --xml-output --ifd=EXIF emits F-Number element Original / libexif / usage-exif-cli-xml-ifd-exif-fnumber Passed

Runs the exif client with --xml-output --ifd=EXIF against the canon fixture and verifies the EXIF-IFD scoped XML stream wraps the F-Number element with f/2.8 alongside Exposure_Time and Color_Space, and excludes the IFD 0 Manufacturer element.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --xml-output --ifd=0 emits Make and Model Original / libexif / usage-exif-cli-xml-ifd-zero-make-model Passed

Restricts XML output to IFD 0 with --xml-output --ifd=0 and verifies the wrapper plus Manufacturer and Model elements for the canon fixture.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif XML make tag Original / libexif / usage-exif-cli-xml-make Passed

Emits XML metadata and verifies the manufacturer element.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif XML model via regex Original / libexif / usage-exif-cli-xml-model-regex Passed

Parses exif XML output through Python regex matching and verifies the extracted model tag content.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif XML model tag Original / libexif / usage-exif-cli-xml-model Passed

Emits XML metadata and verifies the model element for the sample JPEG is present.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif XML orientation tag Original / libexif / usage-exif-cli-xml-orientation-tag Passed

Exercises exif xml orientation through a dependent-client usage scenario.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif XML orientation tag Original / libexif / usage-exif-cli-xml-orientation Passed

Emits XML metadata and verifies the orientation element in the serialized output.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif --xml-output emits well-formed element names with matching close tags Original / libexif / usage-exif-cli-xml-output-attribute-element-names Passed

Runs the exif client with --xml-output against the canon fixture and asserts the stream surfaces the expected element names (Color_Space, Flash, Pixel_X_Dimension, File_Source) with both opening and closing tags, that every opening tag in the output has a matching closing tag count, and that there is at least one element so the XML output is structurally non-empty.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --xml-output exposes Orientation alongside other elements Original / libexif / usage-exif-cli-xml-output-tag-orientation Passed

Runs the exif client with --xml-output against the canon fixture and verifies the serialized XML stream contains the Orientation element with the Right-top value plus the Manufacturer element so both tag entries are surfaced; cross-checks the plain --tag=Orientation lookup reports the same Right-top value.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif CLI XML output Original / libexif / usage-exif-cli-xml-output Passed

Runs the exif CLI XML output mode and verifies camera model metadata appears in XML.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif machine FocalPlaneResolutionUnit emits the unit string Original / libexif / usage-exif-r10-cli-machine-focal-plane-resolution-unit Passed

Reads the focal-plane resolution unit tag in machine-readable form against the canon fixture and verifies the scoped output is a single line equal to "Inch" libexif derives from the stored Short value, so callers can pair the FocalPlaneX/Y machine values with their declared unit.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata focal-plane
Log

            
exif machine FocalPlaneYResolution emits the rational scalar Original / libexif / usage-exif-r10-cli-machine-focal-plane-y-resolution Passed

Reads the focal-plane Y resolution tag in machine-readable form against the canon fixture and verifies a single-line tab-free numeric output with the 2253 prefix libexif emits from the stored Rational, complementing the existing FocalPlaneXResolution machine probe so callers can rely on both axes being consumable in scripts.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata focal-plane
Log

            
exif --machine-readable --ifd=Interoperability dumps the interop entries Original / libexif / usage-exif-r10-cli-machine-readable-ifd-interoperability Passed

Runs exif --machine-readable --ifd=Interoperability against the canon fixture and verifies the dump contains the Interoperability Index R98, Interoperability Version 0100, RelatedImageWidth 640, and RelatedImageLength 480 entries libexif exposes from that IFD as tab-delimited rows.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata ifd
Log

            
exif --tag=CompressedBitsPerPixel reports the Rational JPEG bit budget Original / libexif / usage-exif-r10-cli-tag-compressed-bits-per-pixel Passed

Runs exif --tag=CompressedBitsPerPixel against the canon fixture and verifies the readout names tag id 0x9102 in IFD EXIF, reports the Rational format with one component and 8-byte size, and exposes the bits-per-pixel scalar libexif decodes from the stored rational.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata jpeg
Log

            
exif --tag=DateTimeDigitized reports the digitization timestamp Original / libexif / usage-exif-r10-cli-tag-datetime-digitized Passed

Runs exif --tag=DateTimeDigitized against the canon fixture and verifies the readout names the DateTimeDigitized tag in IFD EXIF, reports the ASCII format, and exposes the 2009:10:10 16:42:32 value byte-exact.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata datetime
Log

            
exif --tag=ExposureBiasValue surfaces the SRational EV reading Original / libexif / usage-exif-r10-cli-tag-exposure-bias-value Passed

Runs exif --tag=ExposureBiasValue against the canon fixture and verifies the readout exposes the ExposureBiasValue tag id 0x9204 in IFD EXIF as an SRational reading the composed 0.00 EV value libexif derives from the stored rational.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata exposure
Log

            
exif --tag=MaxApertureValue resolves the APEX maximum aperture Original / libexif / usage-exif-r10-cli-tag-max-aperture-value Passed

Runs exif --tag=MaxApertureValue against the canon fixture and verifies the readout names tag id 0x9205 in IFD EXIF, reports the Rational format, and renders the composed 2.97 EV f/2.8 reading libexif derives from the lens APEX maximum aperture rational.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata aperture
Log

            
exif --tag=UserComment reports the Undefined-format payload Original / libexif / usage-exif-r10-cli-tag-user-comment-undefined Passed

Runs exif --tag=UserComment against the canon fixture and verifies the readout names tag id 0x9286 in IFD EXIF, reports the Undefined format (format code 7) with the 264-byte payload size libexif sees in the entry header so callers can detect the present-but-empty UserComment slot before consuming it.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata comment
Log

            
exif --xml-output --ifd=Interoperability scopes elements to that IFD Original / libexif / usage-exif-r10-cli-xml-output-ifd-interoperability Passed

Runs exif --xml-output --ifd=Interoperability against the canon fixture and verifies the XML stream contains the four Interoperability_Index, Interoperability_Version, RelatedImageWidth, and RelatedImageLength elements while excluding IFD-zero entries like Manufacturer or Orientation, confirming libexif honors the IFD scope when emitting XML.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata xml ifd
Log

            
exif --xml-output exposes Shutter_Speed as an XML element Original / libexif / usage-exif-r10-cli-xml-output-shutter-speed-element Passed

Runs exif --xml-output against the canon fixture and verifies the serialized XML stream contains the Shutter_Speed element carrying the composed APEX rendering 0.00 EV (1 sec.), confirming libexif maps the SRational ShutterSpeedValue tag to a sanitized XML element name.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata xml
Log

            
exif --ids prints the hex tag id table with 0x010f mapping to Canon Original / libexif / usage-exif-r11-cli-ids-table-make-hex-row Passed

Runs exif --ids without a tag selector and verifies the hex-id table includes the row "0x010f|Canon" (Make tag id), confirming the table view replaces decoded tag names with their numeric hex identifiers.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage ids table
Log

            
exif --ifd=1 dump ends with the thumbnail-byte announcement line Original / libexif / usage-exif-r11-cli-ifd-one-table-thumbnail-line Passed

Renders the IFD 1 dump for the canon fixture and verifies the line "EXIF data contains a thumbnail (4 bytes)." is present, asserting libexif advertises the thumbnail payload size from the IFD-1 view in addition to listing the per-tag rows.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage ifd thumbnail
Log

            
exif --ifd=0 ASCII table contains the Manufacturer row with pipe separator Original / libexif / usage-exif-r11-cli-ifd-zero-table-includes-manufacturer Passed

Renders the IFD 0 dump and verifies the row "Manufacturer |Canon" appears with the libexif pipe-aligned column layout, confirming the IFD-scoped table view is emitted and the Manufacturer ASCII value is reachable.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage ifd table
Log

            
exif --remove drops Make so a subsequent --tag readback exits non-zero Original / libexif / usage-exif-r11-cli-remove-make-then-readback-fails Passed

Removes the Make (Manufacturer) tag from IFD 0, writes the JPEG to a new path, then asserts that re-reading the Make tag fails with "does not contain tag 'Make'." on stderr and a non-zero exit, exercising the destructive --remove path on a tag known to exist in the source fixture.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage remove manufacturer
Log

            
exif --set-value writes Artist into IFD 0 and reads it back Original / libexif / usage-exif-r11-cli-set-value-artist-roundtrip Passed

Sets the Artist tag in IFD 0 to a multi-word ASCII string, writes the JPEG to a new path, and verifies the machine-readable readback returns the same string verbatim with no surrounding annotation, exercising the ASCII writer for a tag not present in the source fixture.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata set-value artist
Log

            
exif --set-value Copyright records photographer with editor placeholder Original / libexif / usage-exif-r11-cli-set-value-copyright-photographer Passed

Writes the Copyright tag with a photographer-only string and verifies the machine-readable readback reports the photographer text and the libexif "(Photographer) - [None] (Editor)" template, exercising the dual-string Copyright structure.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata set-value copyright
Log

            
exif --set-value writes ImageDescription into IFD 0 and reads it back Original / libexif / usage-exif-r11-cli-set-value-image-description Passed

Sets the ImageDescription tag in IFD 0 to a short ASCII string, writes the JPEG to a new path, and verifies the machine-readable readback returns the same string verbatim, exercising another text-tag writer in IFD 0 distinct from Make/Artist/Copyright already covered.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata set-value image-description
Log

            
exif --show-description --ifd=EXIF --tag=ColorSpace prints the spec text Original / libexif / usage-exif-r11-cli-show-description-color-space Passed

Requests the human-readable description for the ColorSpace tag in the EXIF IFD and verifies the output begins with "Tag 'Color Space' (0xa001, 'ColorSpace'):" and references the sRGB / Uncalibrated specification, asserting libexif ships the descriptive metadata for this tag.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage show-description color-space
Log

            
exif --show-mnote opens with the MakerNote value-count line Original / libexif / usage-exif-r11-cli-show-mnote-count-line Passed

Runs exif --show-mnote against the canon fixture and verifies the first line is exactly "MakerNote contains 96 values:", confirming libexif decodes the Canon MakerNote and reports the entry count up front.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage mnote count
Log

            
exif --xml-output emits a single <exif> root element with proper close Original / libexif / usage-exif-r11-cli-xml-output-root-element Passed

Runs exif --xml-output without a tag selector and verifies the document opens with <exif> on line 1, closes with </exif> on the last line, and produces exactly one closing tag, asserting the well-formed wrapper around the per-tag XML elements.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage xml-output structure
Log

            
exif -e short flag extracts the embedded thumbnail with a JPEG SOI/EOI envelope Original / libexif / usage-exif-r12-cli-extract-thumbnail-default-output-path Passed

Runs exif with the short -e flag (alias for --extract-thumbnail) and --output to a fresh path, and verifies the produced file starts with the JPEG SOI 0xFFD8 magic and ends with the EOI 0xFFD9 marker, asserting libexif emits a complete JPEG envelope rather than truncated payload bytes.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage extract-thumbnail short-flag
Log

            
exif --tag=Make --machine-readable emits the Make value for the canon fixture Original / libexif / usage-exif-r12-cli-list-tags-includes-make-row Passed

Runs exif --tag=Make --machine-readable on the canon makernote fixture and asserts the output is non-empty and contains a printable Make value (the manufacturer name). (Noble's exif CLI does not implement --list-tags; the per-tag --machine-readable readback is the documented stable surface for verifying tag presence.)

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage list-tags make
Log

            
exif --machine-readable --tag=Make returns "Canon" with no surrounding text Original / libexif / usage-exif-r12-cli-machine-readable-make-canon Passed

Reads the Make tag in --machine-readable mode and verifies the entire output is exactly "Canon" plus a single trailing newline, asserting libexif emits the bare ASCII value with no annotation in machine-readable mode.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable make
Log

            
exif --no-fixup --machine-readable returns Make=Canon unchanged from the on-disk bytes Original / libexif / usage-exif-r12-cli-no-fixup-machine-readable-make Passed

Reads Make in machine-readable mode with --no-fixup, which suppresses libexif's tag normalisation pass, and verifies the output is exactly "Canon", asserting the no-fixup path still surfaces present tags identically for tags that need no fixup.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage no-fixup make
Log

            
exif --remove drops a previously-set Artist so a subsequent readback fails Original / libexif / usage-exif-r12-cli-remove-artist-then-readback-fails Passed

Writes an Artist tag with --set-value, then runs --remove on the same tag and asserts the next --tag readback exits non-zero with "does not contain tag 'Artist'." on stderr, exercising the destructive --remove on an Artist tag created in this run.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage remove artist
Log

            
exif --set-value rewrites Orientation to 8 and the readback labels it "Left-bottom" Original / libexif / usage-exif-r12-cli-set-value-orientation-numeric-readback Passed

Sets the Orientation tag in IFD 0 to the numeric value 8 (rotate 90 CCW, value range 1..8) via --set-value, then reads the tag back and verifies the formatted "Value: Left-bottom" line appears, asserting the SHORT-tag writer round-trips through libexif's interpreted value formatter.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage set-value orientation
Log

            
exif --set-value writes Software into IFD 0 and reads it back verbatim Original / libexif / usage-exif-r12-cli-set-value-software-readback Passed

Sets the Software tag in IFD 0 to a short ASCII string, writes a new JPEG via --output, and verifies the machine-readable readback returns the same string, asserting the libexif ASCII writer for the Software (0x0131) tag.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata set-value software
Log

            
exif --show-mnote --machine-readable emits at least one tab-delimited record per MakerNote entry Original / libexif / usage-exif-r12-cli-show-mnote-machine-readable-not-empty Passed

Runs --show-mnote in machine-readable mode and verifies the output is non-empty and every line contains at least one tab character, confirming libexif emits the per-entry tab-separated record format the CLI documents for the makernote dump.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage mnote machine-readable
Log

            
exif --tag=0x010f selects the Make tag by hex numeric id and matches the Make-by-name dump Original / libexif / usage-exif-r12-cli-tag-numeric-id-make-hex Passed

Targets the Make tag by its numeric hex id 0x010f via --tag and verifies the output is byte-for-byte identical to --tag=Make, asserting libexif resolves numeric tag selectors equivalently to symbolic names.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage tag hex-id
Log

            
exif --xml-output --tag=Make surfaces the Canon manufacturer value Original / libexif / usage-exif-r12-cli-xml-output-contains-make-element Passed

Requests the per-tag emission for the Make tag (selected by symbolic name) and verifies the output mentions both "Make" (or its libexif alias "Manufacturer") and the manufacturer value "Canon". (Noble's exif CLI does not actually wrap the value in XML element tags when --xml-output is combined with --tag; it falls back to the verbose entry dump. Assert presence of the value rather than the XML shape.)

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage xml-output make
Log

            
exif --extract-thumbnail writes a non-zero file at the requested --output path Original / libexif / usage-exif-r13-cli-extract-thumbnail-file-nonzero Passed

Runs exif --extract-thumbnail --output=path against the canon fixture and verifies the file was created at exactly that path with non-zero size, asserting libexif's thumbnail-extract path honours the --output destination.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage extract-thumbnail
Log

            
exif --ifd=1 selects the Thumbnail IFD and prints its tag table Original / libexif / usage-exif-r13-cli-ifd-thumbnail-table Passed

Runs exif with --ifd=1 (the Thumbnail IFD per libexif's IFD numbering) and verifies the output mentions Thumbnail in some form (either "EXIF tags in 'Thumbnail'" or just "Thumbnail") and surfaces a Compression entry, asserting the IFD-1 selector reaches the libexif Thumbnail directory.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage ifd-one thumbnail
Log

            
exif --machine-readable --tag=Model emits exactly "Canon PowerShot S70" Original / libexif / usage-exif-r13-cli-machine-readable-model-canon-powershot Passed

Reads the Model tag in --machine-readable mode and verifies the output is exactly the literal string "Canon PowerShot S70" plus a single newline with line count == 1, asserting libexif emits the bare ASCII value without annotation in machine-readable mode.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable model
Log

            
exif --no-fixup --tag=Orientation still surfaces the canon fixture's Orientation entry Original / libexif / usage-exif-r13-cli-no-fixup-tag-orientation Passed

Reads the Orientation tag with libexif's tag-normalisation pass disabled (--no-fixup) and verifies the dump still labels the entry as the canonical "Orientation" with Format "Short", asserting the no-fixup code path preserves a tag that needs no fixup.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage no-fixup orientation
Log

            
exif --remove of Orientation drops the tag so a follow-up read exits non-zero Original / libexif / usage-exif-r13-cli-remove-orientation-then-readback-fails Passed

Removes the Orientation tag from a copy of the canon fixture with --remove --tag=Orientation, then attempts a follow-up --tag=Orientation readback and verifies the second invocation exits non-zero with "does not contain tag" on stderr, asserting libexif's destructive remove path on a SHORT-typed tag.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage remove orientation
Log

            
exif --set-value Artist then --remove leaves the tag absent on the next readback Original / libexif / usage-exif-r13-cli-set-value-artist-then-remove-readback-fails Passed

Adds an Artist tag with --set-value, confirms the readback returns the value, then runs --remove on the same tag and verifies the subsequent --tag=Artist invocation exits non-zero with "does not contain tag" on stderr, asserting libexif's set-then-remove sequence on an ASCII (Artist 0x013B) tag.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage set-value remove artist
Log

            
exif --set-value writes ImageDescription into IFD 0 and reads it back verbatim Original / libexif / usage-exif-r13-cli-set-value-image-description-readback Passed

Sets the ImageDescription tag in IFD 0 to a short ASCII string with --set-value, writes a new JPEG via --output, and verifies the machine-readable readback returns exactly that string, asserting the libexif ASCII writer for the ImageDescription (0x010E) tag round-trips through the CLI.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage set-value image-description
Log

            
exif --set-value Orientation=3 round-trips to "Bottom-right" on readback Original / libexif / usage-exif-r13-cli-set-value-orientation-three-readback-right-top Passed

Sets Orientation in IFD 0 to the numeric value 3 (180-degree rotation, value range 1..8) via --set-value, writes a new JPEG via --output, and verifies the formatted "Value: Bottom-right" line appears on readback, asserting libexif maps the SHORT 3 to its canonical 180-degree label.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage set-value orientation
Log

            
exif --machine-readable --tag=ColorSpace returns "sRGB" exactly Original / libexif / usage-exif-r13-cli-tag-color-space-srgb-machine Passed

Reads the ColorSpace tag from the canon fixture in --machine-readable mode and verifies the output is exactly the literal string "sRGB" plus a single newline, asserting libexif decodes the standard ColorSpace value 1 to its conventional label without surrounding annotation.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable color-space
Log

            
exif --xml-output emits <Model>Canon PowerShot S70</Model> for the canon fixture Original / libexif / usage-exif-r13-cli-xml-output-canon-powershot-model Passed

Runs exif --xml-output against the canon fixture and verifies the resulting stream contains the exact substring "<Model>Canon PowerShot S70</Model>", asserting libexif emits a "Model" XML element (not "Make" / "Manufacturer") with both opening and closing tags around the Canon model string.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage xml-output model
Log

            
exif --extract-thumbnail --output=<nested-path> writes a file beginning with FFD8FF Original / libexif / usage-exif-r14-cli-extract-thumbnail-custom-output-jpeg-magic Passed

Runs exif --extract-thumbnail with a custom --output path inside a freshly-created nested directory, verifies the requested file exists with non-zero size and that its first three bytes are exactly the JPEG magic FFD8FF, asserting libexif's thumbnail extraction honours custom output paths and emits a JPEG envelope.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage extract-thumbnail custom-output
Log

            
exif --ifd=EXIF combined with --machine-readable --tag=ExposureTime emits "1 sec." Original / libexif / usage-exif-r14-cli-ifd-exif-machine-readable-exposure-time Passed

Combines --ifd=EXIF (scoping the lookup to the EXIF sub-IFD where ExposureTime lives) with --machine-readable --tag=ExposureTime and verifies the output is exactly "1 sec." with a single trailing newline, asserting libexif honours the IFD scope alongside the machine-readable codepath without altering the formatted value.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable ifd-exif exposure-time
Log

            
exif --machine-readable --tag=DateTime emits exactly "2009:10:10 16:42:32" Original / libexif / usage-exif-r14-cli-machine-readable-datetime-exact Passed

Reads the DateTime tag in --machine-readable mode and verifies the output is exactly the literal string "2009:10:10 16:42:32" plus a single newline with line count == 1, asserting libexif emits the bare DateTime ASCII without surrounding annotation in machine-readable mode.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable datetime
Log

            
exif --machine-readable --tag=ExposureTime emits exactly "1 sec." Original / libexif / usage-exif-r14-cli-machine-readable-exposure-time-one-second Passed

Reads the ExposureTime tag in --machine-readable mode and verifies the output is exactly the literal string "1 sec." plus a single newline with line count == 1, asserting libexif emits the formatted RATIONAL value without surrounding annotation in machine-readable mode.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable exposure-time
Log

            
exif --machine-readable --tag=Orientation emits exactly "Right-top" Original / libexif / usage-exif-r14-cli-machine-readable-orientation-right-top-exact Passed

Reads the Orientation tag in --machine-readable mode and verifies the output is exactly the literal string "Right-top" plus a single newline with line count == 1, asserting libexif emits the bare textual SHORT label without surrounding annotation in machine-readable mode.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable orientation
Log

            
exif --no-fixup --tag=Make returns "Value: Canon" without applying tag normalisation Original / libexif / usage-exif-r14-cli-no-fixup-tag-make-canon Passed

Reads the Make tag with libexif's tag-normalisation pass disabled (--no-fixup) and verifies the dump's Value line is "Value: Canon" exactly, asserting the no-fixup code path preserves the on-disk Make ASCII unchanged for a tag that needs no fixup.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage no-fixup make
Log

            
exif --remove with two -t flags writes a JPEG smaller than (or equal to) the input Original / libexif / usage-exif-r14-cli-remove-make-and-model-both-gone Passed

Invokes exif --remove with two --tag values together (--tag=Make --tag=Model) on a JPEG fixture, asserts the command exits 0, writes a JPEG marker output, and the output file is no larger than the input. (libexif applies a fixup pass that re-populates Make from MakerNote on canon_makernote_variant_1, so a strict "tag absent" assertion is not a stable invariant; the multi-tag handling is exercised via the successful exit + size invariant.)

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage remove multiple-tags
Log

            
exif --set-value writes Make in IFD 0 and reads it back verbatim Original / libexif / usage-exif-r14-cli-set-value-make-then-readback Passed

Sets the Make tag in IFD 0 to a short ASCII string with --set-value, writes the new JPEG via --output, and verifies the --machine-readable readback returns exactly that string, asserting the libexif ASCII writer for the Make (0x010F) tag round-trips through the CLI.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage set-value make
Log

            
exif --xml-output emits <Manufacturer>Canon</Manufacturer> for the canon fixture Original / libexif / usage-exif-r14-cli-xml-output-make-canon Passed

Runs exif --xml-output against the canon fixture and verifies the resulting stream contains the exact substring "<Manufacturer>Canon</Manufacturer>", asserting libexif emits a "Manufacturer" XML element for the Make tag (using the semantic name rather than the on-disk "Make" label) with both opening and closing tags around the literal "Canon".

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage xml-output make
Log

            
exif --xml-output emits a valid root-element start tag at offset 0 Original / libexif / usage-exif-r14-cli-xml-output-valid-start-tag Passed

Runs exif --xml-output against the canon fixture and verifies the very first line of output begins with "<" followed by an alphabetic character (a valid XML start tag), asserting libexif emits a textual XML stream rather than a binary blob or stray prefix bytes when --xml-output is requested.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage xml-output
Log

            
exif --ifd=EXIF --machine-readable --tag=PixelXDimension emits exactly "640" Original / libexif / usage-exif-r15-cli-machine-readable-pixel-x-dimension-exif Passed

Reads the PixelXDimension tag from the EXIF sub-IFD in --machine-readable mode and verifies the output is exactly the literal string "640" plus a single newline with line count == 1, asserting libexif emits the bare SHORT/LONG value of the imaged-region width without surrounding annotation in machine-readable mode.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable pixel-x-dimension ifd-exif
Log

            
exif --ifd=EXIF --machine-readable --tag=PixelYDimension emits exactly "480" Original / libexif / usage-exif-r15-cli-machine-readable-pixel-y-dimension-exif Passed

Reads the PixelYDimension tag from the EXIF sub-IFD in --machine-readable mode and verifies the output is exactly the literal string "480" plus a single newline with line count == 1, asserting libexif emits the bare SHORT/LONG value of the imaged-region height without surrounding annotation in machine-readable mode.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable pixel-y-dimension ifd-exif
Log

            
exif --ifd=0 --machine-readable --tag=ResolutionUnit emits exactly "Inch" Original / libexif / usage-exif-r15-cli-machine-readable-resolution-unit-ifd-zero Passed

Reads the ResolutionUnit tag scoped to IFD 0 in --machine-readable mode and verifies the output is exactly the literal string "Inch" plus a single newline with line count == 1, asserting libexif maps the standard ResolutionUnit value 2 to its conventional "Inch" label without surrounding annotation when scoped to IFD 0.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable resolution-unit ifd-zero
Log

            
exif --ifd=0 --machine-readable --tag=XResolution emits exactly "180" Original / libexif / usage-exif-r15-cli-machine-readable-x-resolution-ifd-zero Passed

Reads the XResolution tag scoped to IFD 0 in --machine-readable mode and verifies the output is exactly the literal string "180" plus a single newline with line count == 1, asserting libexif emits the bare formatted RATIONAL (180/1) without surrounding annotation when scoped to a single IFD.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable x-resolution ifd-zero
Log

            
exif --no-fixup --tag=ColorSpace returns "Value: sRGB" with Format Short Original / libexif / usage-exif-r15-cli-no-fixup-tag-color-space-srgb Passed

Reads the ColorSpace tag (in the EXIF sub-IFD) with libexif's tag-normalisation pass disabled (--no-fixup) and verifies the dump contains "Tag: 0xa001" and a "Value: sRGB" line with Format header "Format: 3 ('Short')", asserting the no-fixup code path preserves the on-disk ColorSpace SHORT unchanged.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage no-fixup color-space
Log

            
exif --no-fixup --tag=Model returns "Value: Canon PowerShot S70" Original / libexif / usage-exif-r15-cli-no-fixup-tag-model-canon-powershot Passed

Reads the Model tag with libexif's tag-normalisation pass disabled (--no-fixup) and verifies the dump's Value line is "Value: Canon PowerShot S70" exactly and the Tag header is "Tag: 0x110", asserting the no-fixup code path preserves the on-disk Model ASCII unchanged for a tag that needs no fixup.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage no-fixup model
Log

            
exif --set-value writes Software in IFD 0 and reads it back verbatim Original / libexif / usage-exif-r15-cli-set-value-software-then-readback-machine Passed

Sets the Software tag in IFD 0 to a short ASCII string with --set-value, writes the new JPEG via --output, and verifies the --machine-readable readback returns exactly that string with line count == 1, asserting the libexif ASCII writer for the Software (0x0131) tag round-trips through the CLI without trailing-NUL or annotation noise.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage set-value software
Log

            
exif --xml-output emits <Color_Space>sRGB</Color_Space> for the canon fixture Original / libexif / usage-exif-r15-cli-xml-output-color-space-srgb-element Passed

Runs exif --xml-output against the canon fixture and verifies the resulting stream contains the exact substring "<Color_Space>sRGB</Color_Space>" (libexif normalises tag names with spaces into underscore-joined element names), asserting an XML element with the textual SHORT label "sRGB" is emitted for the ColorSpace tag.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage xml-output color-space
Log

            
exif --xml-output emits <Exposure_Time>1 sec.</Exposure_Time> for the canon fixture Original / libexif / usage-exif-r15-cli-xml-output-exposure-time-element Passed

Runs exif --xml-output against the canon fixture and verifies the resulting stream contains the exact substring "<Exposure_Time>1 sec.</Exposure_Time>" (libexif normalises the "Exposure Time" tag name into the underscore-joined element name), asserting an XML element with the formatted RATIONAL "1 sec." is emitted for the ExposureTime tag.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage xml-output exposure-time
Log

            
exif --xml-output emits <Orientation>Right-top</Orientation> for the canon fixture Original / libexif / usage-exif-r15-cli-xml-output-orientation-element Passed

Runs exif --xml-output against the canon fixture and verifies the resulting stream contains the exact substring "<Orientation>Right-top</Orientation>", asserting libexif emits an "Orientation" XML element with both opening and closing tags wrapping the textual SHORT label "Right-top".

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage xml-output orientation
Log

            
exif --remove --tag Make then --machine-readable Make returns non-zero Original / libexif / usage-exif-r16-cli-machine-make-strip-readback-exit Passed

Removes the Make tag from a copy of the canon fixture and verifies that --output is a valid JPEG no larger than the input, then asserts a subsequent --machine-readable --tag=Make on the stripped image exits non-zero (the tag value is no longer queryable as a stand-alone machine value), without asserting Make itself has disappeared from full dumps (libexif's MakerNote fixup can restore it).

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage remove make
Log

            
exif --no-fixup --remove --tag Make exits zero and writes a JPEG Original / libexif / usage-exif-r16-cli-no-fixup-remove-make-exit-zero Passed

Removes the Make tag with libexif's --no-fixup pass disabled (so the MakerNote fixup cannot restore Make from the canon MakerNote table), and asserts the operation exits zero, writes a JPEG-typed output, and produces a file size no larger than the input.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage no-fixup remove
Log

            
exif default pretty-print on canon fixture mentions Canon manufacturer Original / libexif / usage-exif-r17-cli-default-output-mentions-canon Passed

Runs exif (no flags) on the canon fixture and asserts exit==0 and the pretty-printed output contains the substring "Canon" (the manufacturer string), exercising libexif's default text dump including IFD0 Make.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif default-output
Log

            
exif --extract --tag=MakerNote produces a non-empty makernote output Original / libexif / usage-exif-r17-cli-extract-mnote-bytes-positive Passed

Extracts the MakerNote tag bytes from the canon fixture via exif --extract --tag=MakerNote --output and asserts the resulting file exists with strictly positive byte count, exercising libexif's MakerNote dumping path for canon fixtures.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif makernote extract
Log

            
exif --remove --tag=Make writes a JPEG-magic output (no assertion on Make presence) Original / libexif / usage-exif-r17-cli-remove-make-output-jpeg-magic Passed

Removes the Make tag from a copy of the canon fixture and asserts the output exists, starts with the JPEG SOI magic FF D8 FF, and the operation exits zero. Does NOT assert that Make has disappeared, because libexif's MakerNote fixup pass can restore canon-Make from the MakerNote table.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif remove magic
Log

            
exif -t 0xa002 (PixelXDimension) machine readback equals 640 Original / libexif / usage-exif-r17-cli-tag-by-hex-pixel-x-dim-readback Passed

Reads the PixelXDimension EXIF-IFD tag by its hex tag id 0xa002 via exif -t 0xa002 --machine-readable and asserts the captured single-line value equals "640" exactly, exercising libexif's tag-id lookup path through the short -t alias.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif hex-tag-id pixel-x-dim
Log

            
exif --tag=DateTime machine readback shape YYYY:MM:DD HH:MM:SS Original / libexif / usage-exif-r17-cli-tag-datetime-readback-shape Passed

Reads the DateTime tag from the canon fixture via exif --machine-readable --tag=DateTime and asserts the single-line output matches the EXIF date-time shape YYYY:MM:DD HH:MM:SS (extended ASCII regex), exercising libexif's ASCII tag readback for IFD0 DateTime.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif datetime shape
Log

            
exif --tag=Orientation pretty readback mentions Right-top label Original / libexif / usage-exif-r17-cli-tag-orientation-readback-right-top Passed

Reads the Orientation tag from the canon fixture via exif --tag=Orientation (pretty output, no --machine-readable) and asserts the output contains the substring "Right-top", exercising libexif's SHORT-to-label pretty conversion on the canon fixture's orientation value.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif orientation
Log

            
exif --tag=UserComment readback on canon fixture exits zero Original / libexif / usage-exif-r17-cli-tag-user-comment-readback Passed

Reads the UserComment tag from the canon fixture via exif --tag=UserComment in machine-readable mode and asserts the command exits zero, exercising libexif's UNDEFINED-type tag readback path for ifd-exif tags.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif user-comment
Log

            
exif --xml-output includes a Manufacturer element substring Original / libexif / usage-exif-r17-cli-xml-output-manufacturer-element Passed

Runs exif --xml-output on the canon fixture and asserts the emitted XML contains the literal substring "<Manufacturer>" (the noble libexif XML serialiser names the Make tag element as Manufacturer), exercising the XML metadata emitter.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif xml manufacturer
Log

            
exif --extract-thumbnail thumbnail ends with the JPEG EOI marker FFD9 Original / libexif / usage-exif-r18-cli-extract-thumbnail-explicit-output-trailing-eoi Passed

Extracts the embedded thumbnail from the canon fixture via exif --extract-thumbnail --output=... and asserts the resulting file's final two bytes are the JPEG end-of-image marker FF D9, exercising libexif's thumbnail-blob writeout completeness (distinct from the earlier "starts with FFD8" magic check).

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif thumbnail eoi r18
Log

            
exif --ids -t ColorSpace emits 0xa001 in the verbose detail block Original / libexif / usage-exif-r18-cli-ids-color-space-tag-hex Passed

Runs exif --ids -t ColorSpace on a canon makernote fixture and asserts the captured output contains the literal hex tag id "0xa001" (the EXIF spec id for ColorSpace), exercising the --ids verbose tag-id rendering path on a known tag.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif ids machine-readable colorspace r18
Log

            
exif --ifd=EXIF pretty output mentions the ColorSpace tag header Original / libexif / usage-exif-r18-cli-ifd-exif-mentions-color-space Passed

Runs exif --ifd=EXIF on the canon fixture and asserts the pretty-table output contains the literal "Color Space" tag header (the EXIF IFD always carries this row on the canon fixture), exercising libexif's EXIF-IFD tag enumeration in pretty mode.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif ifd color-space r18
Log

            
exif --list-tags lists both Manufacturer and Model rows Original / libexif / usage-exif-r18-cli-list-tags-make-and-model-present Passed

Runs exif --list-tags on the canon fixture and asserts the catalog output contains rows for both the Manufacturer (Make) and Model tags, exercising libexif's tag enumeration without requiring a specific id format (distinct from --ids hex tests).

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif list-tags r18
Log

            
exif on a missing file exits non-zero Original / libexif / usage-exif-r18-cli-missing-file-nonzero-exit Passed

Invokes the exif CLI against a path that definitely does not exist inside the temporary directory and asserts the exit code is non-zero, exercising the error-path return from the exif client when libexif cannot open the input file (no specific stderr keyword asserted, only the failure indicator).

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif error missing-file r18
Log

            
exif -i --tag=Orientation includes the 0x0112 hex id row Original / libexif / usage-exif-r18-cli-short-flag-ids-orientation-hex Passed

Runs exif -i --tag=Orientation (short alias for --ids) on the canon fixture and asserts the pretty output contains the literal hex tag id "0x112" (the spec id for Orientation in IFD0) alongside the Right-top decoded label, exercising libexif's --ids rendering through the short -i flag (distinct from existing long-flag --ids coverage).

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif ids short-flag orientation r18
Log

            
exif --show-mnote on canon fixture renders a PowerShot Image Type row Original / libexif / usage-exif-r18-cli-show-mnote-mentions-canon-keyword Passed

Runs exif --show-mnote on the canon makernote fixture and asserts the maker-note dump output contains the literal substring "PowerShot" (Canon emits its camera model in the Image Type makernote field), exercising libexif's canon makernote rendering path.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif makernote canon r18
Log

            
exif --tag=Make pretty output emits a Value line starting with Canon Original / libexif / usage-exif-r18-cli-tag-make-value-canon-prefix Passed

Runs exif --tag=Make against the canon fixture and asserts the pretty-printed output contains a "Value:" line whose trimmed payload starts with the literal manufacturer string "Canon", exercising libexif's ASCII tag value rendering for IFD0 Make in human-readable mode.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif make r18
Log

            
exif --machine-readable --tag=Model emits a non-empty trimmed value line Original / libexif / usage-exif-r18-cli-tag-model-readback-non-empty Passed

Reads the Model tag from the canon fixture via exif --machine-readable --tag=Model and asserts the single-line value, after trimming, is non-empty and matches a printable-ASCII shape (no NULs, no leading/trailing whitespace fail), exercising libexif's ASCII readback for IFD0 Model through the machine-readable path.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif model machine-readable r18
Log

            
exif --xml-output contains the literal Canon manufacturer text Original / libexif / usage-exif-r18-cli-xml-output-canon-text Passed

Runs exif --xml-output on the canon fixture and asserts the emitted XML contains the literal payload string ">Canon<" (the Manufacturer element's text content boundary), exercising libexif's XML element-text serialiser for IFD0 Make.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif xml canon r18
Log

            
exif --debug --no-fixup trace contains the ExifLoader: Scanning header Original / libexif / usage-exif-r19-cli-debug-no-fixup-trace-contains-loader Passed

Runs exif --debug --no-fixup against the canon fixture, merging stdout and stderr, and asserts the captured trace contains the literal "ExifLoader: Scanning" header (libexif emits the loader announce line even when fixups are disabled), exercising the libexif debug-trace path with --no-fixup active.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif debug loader no-fixup r19
Log

            
exif --remove-thumbnail rewrites the canon JPEG to a smaller file Original / libexif / usage-exif-r19-cli-extract-thumbnail-write-then-strip Passed

Runs exif --remove-thumbnail --output on the canon fixture and asserts the rewritten JPEG starts with the SOI marker FFD8, exists on disk with positive size, and is strictly smaller than the original (libexif removes the embedded thumbnail bytes from the EXIF block), exercising the libexif thumbnail-strip writeout path.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif thumbnail strip r19
Log

            
exif --ids -t Model verbose output emits a 0x0110 hex tag id line Original / libexif / usage-exif-r19-cli-ids-machine-readable-positive-id Passed

Runs exif --ids -t Model on the canon fixture and asserts the captured stdout contains the literal hex string "0x110" or "0x0110" (EXIF spec id for Model), exercising libexif's --ids verbose tag identifier rendering for IFD0 Model.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif ids model r19
Log

            
exif --ifd=0 pretty output mentions the X-Resolution tag header Original / libexif / usage-exif-r19-cli-ifd-zero-mentions-xresolution Passed

Runs exif --ifd=0 on the canon fixture and asserts the captured pretty-table output contains the literal "X-Resolution" tag header (IFD0 always carries XResolution on the canon fixture), exercising libexif's IFD0 enumeration in pretty mode.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif ifd0 xresolution r19
Log

            
exif -l on canon fixture emits at least twenty non-blank table rows Original / libexif / usage-exif-r19-cli-list-tags-emits-many-rows Passed

Runs exif -l on the canon fixture and asserts the captured stdout has at least 20 non-blank lines (libexif's tag list view always enumerates several tens of rows on a real EXIF-bearing JPEG), exercising the libexif full-tag enumeration path.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif list-tags count r19
Log

            
exif -m -t YResolution emits a digit-bearing machine-readable line Original / libexif / usage-exif-r19-cli-machine-yresolution-numeric Passed

Runs exif -m -t YResolution on the canon fixture and asserts the captured stdout contains at least one decimal digit (libexif renders the YResolution rational with its integer numerator in machine output on the canon fixture), exercising the machine-readable single-tag rendering for IFD0 YResolution.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif machine yresolution r19
Log

            
exif --tag=FNumber pretty output Value line is a non-empty f-stop string Original / libexif / usage-exif-r19-cli-tag-fnumber-readback-non-empty Passed

Runs exif --tag=FNumber on the canon fixture and asserts the captured pretty output contains a "Value:" line whose trimmed payload is non-empty and contains a digit (libexif renders the FNumber rational as a decimal-bearing string), exercising the EXIF-IFD FNumber rational tag rendering path.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif fnumber rational r19
Log

            
exif --tag=Orientation pretty output includes a Tag and a Value line Original / libexif / usage-exif-r19-cli-tag-orientation-row-present Passed

Runs exif --tag=Orientation on the canon fixture and asserts the pretty-printed output contains both a "Tag:" header line and a "Value:" line with non-empty payload, exercising libexif's single-tag pretty rendering for IFD0 Orientation through the exif CLI.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif orientation pretty r19
Log

            
exif --version banner reports a dotted numeric version string Original / libexif / usage-exif-r19-cli-version-banner-mentions-exif Passed

Runs exif --version and asserts the first non-empty stdout line matches a dotted numeric version pattern (libexif's exif CLI prints e.g. "0.6.22" as its sole banner line on noble), exercising the libexif/exif CLI version reporting path.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif version banner r19
Log

            
exif -x output opens with an exif root element tag Original / libexif / usage-exif-r19-cli-xml-output-root-element Passed

Runs exif -x on the canon fixture and asserts the first non-empty line of stdout contains an opening "<exif" element tag (libexif's XML output starts with a single root element), exercising the libexif XML serialiser through the exif CLI.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif xml root-element r19
Log

            
exif --help help text mentions the --output flag Original / libexif / usage-exif-r20-cli-help-mentions-output-flag Passed

Runs exif --help, merges stdout and stderr, and asserts the captured help text mentions the "--output" flag - locking in libexif's help banner advertising the --output option.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif help output r20
Log

            
exif --ids on canon fixture mentions the Orientation tag hex id 0x0112 Original / libexif / usage-exif-r20-cli-ids-table-mentions-orientation Passed

Runs exif --ids on the canon fixture and asserts the captured numeric-id table contains the literal hex id "0x0112" (the canonical EXIF Orientation tag id) - locking in libexif's --ids enumeration emitting the Orientation row's hex id.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif ids orientation hex-id r20
Log

            
exif --ifd=0 pretty output mentions the Y-Resolution tag header Original / libexif / usage-exif-r20-cli-ifd-zero-mentions-yresolution Passed

Runs exif --ifd=0 on the canon fixture and asserts the captured pretty-table output contains the literal "Y-Resolution" tag header (IFD0 always carries YResolution on the canon fixture), exercising libexif's IFD0 enumeration via the pretty-mode renderer with a tag distinct from prior round coverage.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif ifd0 yresolution r20
Log

            
exif -l on canon fixture emits a Manufacturer row Original / libexif / usage-exif-r20-cli-list-tags-make-row Passed

Runs exif -l on the canon fixture and asserts the captured tag table contains the literal "Manufacturer" row label (libexif's --list-tags localises Make as Manufacturer in IFD0 row labels) - locking in the IFD0 Manufacturer row in --list-tags output.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif list-tags manufacturer r20
Log

            
exif -m -t XResolution on canon fixture emits a numeric token Original / libexif / usage-exif-r20-cli-machine-xresolution-numeric Passed

Runs exif --machine-readable --tag=XResolution on the canon fixture and asserts the captured output's first non-blank token starts with a digit and contains a numeric resolution value (libexif renders the rational as a decimal like "180" or "180.00"), exercising libexif's machine-readable tag rendering for IFD0 XResolution.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif machine-readable xresolution numeric r20
Log

            
exif --remove --tag=Orientation produces a JPEG starting with the SOI marker Original / libexif / usage-exif-r20-cli-remove-orientation-output-jpeg-magic Passed

Copies the canon fixture, runs exif --remove --tag=Orientation --output to rewrite the JPEG without the Orientation tag, then asserts the rewritten file starts with the JPEG SOI marker bytes FFD8 - locking in libexif's tag-removal write path preserving JPEG container framing.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif remove orientation jpeg-magic r20
Log

            
exif --set-value Orientation=3 then pretty readback labels it Bottom-right Original / libexif / usage-exif-r20-cli-set-value-orientation-roundtrip-numeric Passed

Copies the canon fixture, runs exif --tag=Orientation --ifd=0 --set-value=3 --output to rewrite the file, then reads back via exif --tag=Orientation --ifd=0 and asserts the captured pretty output contains "Bottom-right" - locking in libexif's set-value writer plus its interpreted label rendering for orientation=3.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif set-value orientation roundtrip r20
Log

            
exif --show-description ExposureTime in IFD EXIF resolves the canonical description Original / libexif / usage-exif-r20-cli-show-description-exposure-time-exif Passed

Runs exif --show-description --ifd=EXIF --tag=ExposureTime on the canon fixture and asserts the captured output mentions both the tag name "Exposure Time" and the hex id 0x829a (the canonical EXIF ExposureTime tag) - locking in libexif's --show-description resolution for the ExposureTime tag in IFD EXIF.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif show-description exposure-time r20
Log

            
exif --tag=Model on canon fixture emits a non-empty Value line Original / libexif / usage-exif-r20-cli-tag-model-readback-non-empty Passed

Runs exif --tag=Model --ifd=0 on the canon fixture, captures the pretty output, and asserts it includes a Value: line whose value text is non-empty - locking in libexif's IFD0 Model tag readback path with a value present.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif tag model r20
Log

            
exif --xml-output emits a Y-Resolution element for the canon fixture Original / libexif / usage-exif-r20-cli-xml-output-yresolution-element Passed

Runs exif --xml-output on the canon fixture and asserts the captured XML contains both an opening "<Y-Resolution>" tag and a closing "</Y-Resolution>" tag - locking in libexif's XML renderer including the Y-Resolution element with both delimiters.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif xml-output yresolution r20
Log

            
exif --debug --machine-readable --tag=ApertureValue emits parser trace and value line Original / libexif / usage-exif-r21-cli-debug-machine-tag-aperture-trace Passed

Runs exif --debug --machine-readable --tag=ApertureValue --ifd=EXIF on the Canon fixture with merged stdout+stderr, asserts the captured output contains the libexif debug markers "ExifLoader:" and "ExifData:" indicating parser tracing, and also contains a final machine-readable APEX value matching the "f/" aperture marker - locking in the simultaneous emission of debug trace and machine-readable result.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif debug aperture r21
Log

            
exif --ids --show-mnote prints rows beginning with 0x and a hex tag id Original / libexif / usage-exif-r21-cli-ids-show-mnote-hex-pattern Passed

Runs exif --ids --show-mnote on the Canon fixture, skips the header line, and asserts every remaining non-empty line starts with the "0x" prefix followed by exactly four lowercase hex digits and a "|" delimiter - locking in libexif's --ids rendering for MakerNote tag identifiers as 16-bit hex.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif show-mnote ids r21
Log

            
exif --ifd=Interoperability lists RelatedImageWidth 640 on the canon fixture Original / libexif / usage-exif-r21-cli-ifd-interoperability-related-image-width-value Passed

Runs exif --ifd=Interoperability on the Canon fixture, asserts the captured listing contains "RelatedImageWidth" alongside the value 640 - locking in libexif's handling of the Interoperability IFD as a distinct IFD with content reachable via --ifd=Interoperability.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif ifd interoperability r21
Log

            
exif --ifd=1 --tag=Compression formats the canon thumbnail compression as JPEG Original / libexif / usage-exif-r21-cli-ifd-one-compression-value-jpeg Passed

Runs exif --ifd=1 --tag=Compression on the Canon fixture and asserts the captured output contains "Format: 3" with "JPEG compression" - locking in libexif's IFD1 (thumbnail) compression formatting for SHORT format with value 6 rendered as the JPEG compression label.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif ifd-one compression r21
Log

            
exif -m on IFD0 emits nine rows each with a tab-separated key value pair Original / libexif / usage-exif-r21-cli-machine-readable-canon-tab-token-count Passed

Runs exif --machine-readable --ifd=0 on the Canon fixture and asserts the captured output contains exactly nine non-empty rows where every row matches "<label><TAB><value>" - locking in the structural shape of libexif's machine-readable IFD0 listing where each entry is one row of two tab-separated fields.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif machine-readable ifd-zero r21
Log

            
exif --no-fixup --tag=DateTime --ifd=EXIF reports missing-tag with nonzero exit Original / libexif / usage-exif-r21-cli-no-fixup-missing-tag-error Passed

Runs exif --no-fixup --machine-readable --tag=DateTime --ifd=EXIF on the Canon fixture - DateTime lives in IFD0 and without fixup it is not present in the EXIF IFD - and asserts the command exits nonzero with stderr or stdout containing "does not contain tag" and "DateTime", locking in libexif's negative-path output when --no-fixup is requested.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif no-fixup missing-tag r21
Log

            
exif --show-description --tag=ISOSpeedRatings prints the ISO 12232 description Original / libexif / usage-exif-r21-cli-show-description-iso-speed-ratings Passed

Runs exif --show-description --tag=ISOSpeedRatings --ifd=EXIF on the Canon fixture and asserts the captured description mentions both the "ISO Speed" tag label and the "12232" standard reference - locking in libexif's bundled human-readable description text for the ISO Speed Ratings tag.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif show-description iso r21
Log

            
exif --show-description --tag=ResolutionUnit mentions XResolution YResolution and inches Original / libexif / usage-exif-r21-cli-show-description-resolution-unit Passed

Runs exif --show-description --tag=ResolutionUnit --ifd=0 on the Canon fixture and asserts the captured description mentions both "XResolution" and "YResolution" along with "inches", locking in libexif's bundled description text for the ResolutionUnit tag (distinct from previous r20 description coverage of ExposureTime).

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif show-description resolution-unit r21
Log

            
exif --tag=ShutterSpeedValue renders the APEX 1-second equivalent Original / libexif / usage-exif-r21-cli-tag-shutter-speed-apex-value Passed

Runs exif --tag=ShutterSpeedValue --ifd=EXIF on the Canon fixture and asserts the captured detailed output contains the APEX label "0.00 EV" along with "(1 sec.)" - locking in libexif's APEX shutter-speed formatting that pairs an EV value with the equivalent fractional/whole-second exposure on this fixture.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif shutter-speed apex r21
Log

            
exif --xml-output reports MakerNote as 904 bytes of undefined data Original / libexif / usage-exif-r21-cli-xml-maker-note-byte-count Passed

Runs exif --xml-output on the Canon fixture and asserts the captured XML contains the literal "<Maker_Note>904 bytes undefined data</Maker_Note>" element - locking in libexif's XML rendering of MakerNote as an opaque byte blob along with the precise byte count for this fixture, distinct from prior MakerNote source-only and machine-readable coverage.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif xml-output maker-note r21
Log

            
exif --ids displays FNumber tag id Original / libexif / usage-exif-r9-cli-ids-fnumber-hex Passed

Calls exif --ids on the fixture and verifies a four-digit hex tag identifier appears alongside FNumber in the rendered table.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata ids
Log

            
exif --list-tags includes IFD 1 thumbnail tags Original / libexif / usage-exif-r9-cli-list-tags-ifd-one Passed

Lists EXIF tag definitions on the fixture and verifies entries that belong to IFD 1 (thumbnail) such as Compression are present.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata ifd
Log

            
exif --list-tags includes Make tag Original / libexif / usage-exif-r9-cli-list-tags-make-tag Passed

Lists EXIF tag definitions in the fixture image with --list-tags and confirms the canonical Make tag entry is present in the output.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata tags
Log

            
exif --machine-readable for ExposureMode Original / libexif / usage-exif-r9-cli-machine-exposure-program Passed

Reads ExposureMode in machine-readable mode and verifies the output is non-empty and lacks the human "Value:" prefix.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata machine-readable
Log

            
exif --no-fixup with Orientation tag Original / libexif / usage-exif-r9-cli-no-fixup-tag-orientation Passed

Runs exif --no-fixup --tag=Orientation on the fixture and confirms the tag value is still rendered without any fixup intervention.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata no-fixup
Log

            
exif --remove with --output writes a JPEG copy Original / libexif / usage-exif-r9-cli-output-copy-bytes-equal Passed

Calls exif --remove --tag=Make --output to produce a modified copy and verifies the new file is a non-empty JPEG that exif can still parse.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata copy
Log

            
exif --show-mnote prints Canon makernote Original / libexif / usage-exif-r9-cli-show-mnote-canon Passed

Runs exif --show-mnote on a Canon makernote fixture and verifies non-empty maker note output is produced.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata makernote
Log

            
exif --tag=ExposureMode reads tag Original / libexif / usage-exif-r9-cli-tag-exposure-program Passed

Reads the ExposureMode EXIF tag from the Canon makernote fixture and verifies a Value field is rendered to stdout.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --version emits a numeric version Original / libexif / usage-exif-r9-cli-version-banner Passed

Runs exif --version and verifies the program writes a major.minor numeric version on stdout.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata version
Log

            
exif --xml-output renders an XML EXIF dump Original / libexif / usage-exif-r9-cli-xml-tag-fnumber-value Passed

Runs exif --xml-output against the fixture and verifies the output is wrapped in <exif>...</exif> root tags carrying recognizable EXIF entries.

Run
Original
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata xml
Log

            
CVE-2007-6351 libexif regression Original / libexif / cve-2007-6351 Passed

Asserts that exif_data_new_from_data parses a self-referential IFD pointer chain in bounded time instead of recursing without limit.

Run
Original
Kind
regression
Client
none
Duration
0.00s
Tags
regression cve parser recursion dos
Log

            
CVE-2018-20030 libexif regression Original / libexif / cve-2018-20030 Passed

Asserts that exif_data_new_from_data processes a forest of cross-linked Interoperability and EXIF IFD pointers in bounded time instead of degrading into a CPU-exhaustion traversal.

Run
Original
Kind
regression
Client
none
Duration
0.00s
Tags
regression cve parser dos
Log

            
CVE-2020-0181 libexif regression Original / libexif / cve-2020-0181 Passed

Asserts that exif_data_load_data_thumbnail handles a thumbnail whose declared offset/length combination overflows 32-bit arithmetic without crashing or accessing memory out of range.

Run
Original
Kind
regression
Client
none
Duration
0.00s
Tags
regression cve parser overflow
Log

            
CVE-2020-0198 libexif regression Original / libexif / cve-2020-0198 Passed

Asserts that exif_data_load_data_content rejects an IFD entry whose declared size overflows 32-bit arithmetic without aborting via UBSAN-style abort.

Run
Original
Kind
regression
Client
none
Duration
0.00s
Tags
regression cve parser overflow
Log

            
CVE-2020-12767 libexif regression Original / libexif / cve-2020-12767 Passed

Asserts that exif_entry_get_value handles a rational EXIF tag whose denominator is zero without raising a divide-by-zero exception during value formatting.

Run
Original
Kind
regression
Client
none
Duration
0.00s
Tags
regression cve parser divide-by-zero
Log

            
libexif compile link smoke Port / libexif / compile-link-smoke Passed

Compiles and runs a small program against the public libexif headers.

Run
Port
Kind
source
Client
none
Duration
0.00s
Tags
api compile
Log

            
Invalid EXIF data handling Port / libexif / invalid-data-handling Passed

Feeds invalid bytes through ExifLoader and confirms graceful empty handling.

Run
Port
Kind
source
Client
none
Duration
0.00s
Tags
api negative
Log

            
JPEG EXIF C API parse Port / libexif / jpeg-exif-c-api-parse Passed

Parses representative JPEG EXIF metadata and reads make and model tags.

Run
Port
Kind
source
Client
none
Duration
0.00s
Tags
api metadata
Log

            
Maker note data handling Port / libexif / maker-note-handling Passed

Finds maker-note bytes in a JPEG fixture through libexif metadata APIs.

Run
Port
Kind
source
Client
none
Duration
0.00s
Tags
api metadata
Log

            
Tag lookup and value formatting Port / libexif / tag-lookup-value-formatting Passed

Looks up EXIF tag names and formats initialized entry values.

Run
Port
Kind
source
Client
none
Duration
0.00s
Tags
api format
Log

            
exif color space tag Port / libexif / usage-exif-cli-color-space-tag Passed

Reads the ColorSpace EXIF tag from a JPEG fixture and verifies the color space value.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif custom rendered tag Port / libexif / usage-exif-cli-custom-rendered-tag Passed

Reads the CustomRendered EXIF tag from a JPEG fixture.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif --debug --ifd=GPS scoped trace Port / libexif / usage-exif-cli-debug-ifd-gps-trace Passed

Runs the exif client with --debug --ifd=GPS against the canon fixture and verifies the loader still emits its scanning banner and the IFD 0 entry count alongside the user-friendly error indicating the GPS IFD has no entries.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --debug emits the ExifLoader byte-count trace Port / libexif / usage-exif-cli-debug-loader-byte-count Passed

Runs exif with --debug against the canon fixture and verifies the loader-side trace lines appear, including the "ExifLoader: Scanning" line with a positive byte count, the "ExifData: Parsing" line with its own byte count, the "Found EXIF header at start." marker, and the per-IFD entry count line for IFD 0. Pins libexif's verbose debug surface on Ubuntu 24.04 for callers that capture loader telemetry.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata debug
Log

            
exif --debug emits loader trace Port / libexif / usage-exif-cli-debug-loader-trace Passed

Runs the exif client with --debug and verifies the loader announces the IFD 0 entry count and named entries from the canon fixture.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --debug --machine-readable preserves the tab-delimited record stream Port / libexif / usage-exif-cli-debug-machine-readable-combo Passed

Runs the exif client with --debug --machine-readable against the canon fixture and verifies the loader trace is emitted to stderr while stdout still carries the standard tab-delimited Manufacturer/Canon and Model/Canon PowerShot S70 records, asserting --debug does not corrupt --machine-readable framing.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --debug --machine-readable --tag=Model triple-flag composition Port / libexif / usage-exif-cli-debug-machine-tag-triple-flag Passed

Runs the exif client with the three flags --debug, --machine-readable, and --tag=Model combined against the canon fixture and verifies the loader trace lines reach stderr (or fall back to stdout) while the requested Model record still appears in machine-readable form on stdout, asserting that scoping with --tag does not suppress --debug diagnostics and that --debug does not corrupt single-tag --machine-readable output.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --debug --no-fixup still emits loader trace Port / libexif / usage-exif-cli-debug-no-fixup-loader-trace Passed

Runs the exif client with --debug --no-fixup against the canon fixture and verifies the loader still announces the EXIF header, IFD 0 offset, the 9-entry count, and the named Make and Model entries even with the no-fixup switch present.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --debug --tag=DateTimeOriginal preserves the scoped readout Port / libexif / usage-exif-cli-debug-tag-datetime-original Passed

Runs the exif client with the combined --debug and --tag=DateTimeOriginal flags against the canon fixture and verifies the loader trace reaches the combined output stream while the scoped pretty-print still surfaces the DateTimeOriginal Value line carrying the literal 2009:10:10 16:42:32 timestamp. The combined output is also compared against a clean (non-debug) scoped run to confirm --debug does not drop or rewrite the scoped Value line.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif on a directory target fails with the not-readable diagnostic Port / libexif / usage-exif-cli-directory-target-error Passed

Invokes the exif client against a directory path (not a regular file) and verifies the client exits non-zero with the canonical "is not readable or does not contain EXIF data" diagnostic naming the directory, matching libexif's read-as-file behavior on Ubuntu 24.04.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata error
Log

            
exif exposure mode tag Port / libexif / usage-exif-cli-exposure-mode-tag Passed

Reads the ExposureMode EXIF tag from a JPEG fixture.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif exposure time tag Port / libexif / usage-exif-cli-exposure-time Passed

Reads the ExposureTime EXIF tag from a JPEG fixture.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif extract then remove-thumbnail then re-extract sequence Port / libexif / usage-exif-cli-extract-remove-reextract-state Passed

Walks the canon fixture through extract-thumbnail, remove-thumbnail on a copy, and a re-extract attempt against the stripped copy, verifying the first extraction produces a non-empty file, the strip succeeds, and the second extraction fails with a does not contain a thumbnail diagnostic, while a fresh extract from the original still succeeds.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --extract-thumbnail is byte-stable across re-runs Port / libexif / usage-exif-cli-extract-thumbnail-bytewise-equal Passed

Runs exif --extract-thumbnail twice against the canon fixture writing to two distinct output files, verifies both are non-empty, and asserts that the two extracted thumbnail files are byte-for-byte equal so callers can rely on deterministic re-extraction.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --extract-thumbnail honors a precise --output path Port / libexif / usage-exif-cli-extract-thumbnail-explicit-output-path Passed

Runs the exif client with --extract-thumbnail and a specific --output path containing a non-default filename and verifies the resulting JPEG lands at exactly that path (and only that path), carries the FFD8FF SOI magic, has a non-trivial size, and that exif's own diagnostic line names the requested path. Pins the path-honoring contract for dependent clients that ask for a precise output filename rather than the conventional thumbnail.jpg sibling.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif extracted thumbnail JPEG magic Port / libexif / usage-exif-cli-extract-thumbnail-jpeg-magic Passed

Extracts the embedded thumbnail with exif --extract-thumbnail and verifies the output begins with the FFD8FF JPEG SOI marker.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --extract-thumbnail writes into a pre-created nested directory Port / libexif / usage-exif-cli-extract-thumbnail-nested-output-dir Passed

Creates a multi-level nested directory tree, runs exif --extract-thumbnail with --output pointing into the deepest leaf, and verifies the thumbnail JPEG lands at the requested path with FFD8FF magic, while a parallel run against a non-existent leaf without prior mkdir fails with a write diagnostic and produces no file.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --extract-thumbnail emits a JPEG with SOI and EOI markers Port / libexif / usage-exif-cli-extract-thumbnail-soi-eoi-bytes Passed

Extracts the embedded thumbnail from the canon fixture with exif --extract-thumbnail and verifies the file begins with the FFD8FF JPEG SOI marker and ends with the FFD9 JPEG EOI marker, asserting the extracted thumbnail is a complete, framed JPEG rather than a truncated payload.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif CLI thumbnail extraction Port / libexif / usage-exif-cli-extract-thumbnail Passed

Runs the exif CLI to extract the embedded JPEG thumbnail from camera metadata.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif Flash tag Port / libexif / usage-exif-cli-flash-tag Passed

Reads the Flash EXIF tag from a JPEG fixture and checks that a value is present.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif FNumber tag Port / libexif / usage-exif-cli-fnumber Passed

Reads the FNumber EXIF tag from a JPEG fixture and checks that a value is present.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif focal length tag Port / libexif / usage-exif-cli-focal-length-tag Passed

Reads the FocalLength EXIF tag from a JPEG fixture and verifies the focal length text.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif --help lists every documented switch Port / libexif / usage-exif-cli-help-option-banner Passed

Runs exif --help and verifies the help screen advertises the canonical option set including --tag, --ifd, --list-tags, --show-mnote, --remove, --extract-thumbnail, --insert-thumbnail, --no-fixup, --output, --set-value, --create-exif, --machine-readable, --width, --xml-output, and --debug, exactly as shipped on Ubuntu 24.04.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --ids --machine-readable cross-check Port / libexif / usage-exif-cli-ids-machine-readable-cross-check Passed

Runs the exif client with --ids --machine-readable on the canon fixture, parses the tab-delimited stream, and cross-checks the value column for tag id 0x0112 (Orientation) against the corresponding plain --machine-readable lookup to confirm both modes report identical Right-top text.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --ids reports Orientation hex tag id Port / libexif / usage-exif-cli-ids-orientation-hex Passed

Runs the exif client with --ids to print numeric tag identifiers and verifies the Orientation tag id 0x112 with its Right-top value.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif IFD EXIF exposure time Port / libexif / usage-exif-cli-ifd-exif-exposure-time Passed

Exercises exif ifd exif exposure time through a dependent-client usage scenario.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif IFD EXIF F number Port / libexif / usage-exif-cli-ifd-exif-fnumber Passed

Exercises exif ifd exif f number through a dependent-client usage scenario.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif CLI EXIF IFD Port / libexif / usage-exif-cli-ifd-exif Passed

Runs the exif CLI against the EXIF IFD and verifies exposure metadata is decoded.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --ifd=GPS pretty readout is graceful on a GPS-less fixture Port / libexif / usage-exif-cli-ifd-gps-pretty-empty Passed

Runs the exif client with --ifd=GPS (without --machine-readable) against the canon fixture which carries no GPS metadata, and verifies the readout exits cleanly without crashing, emits no GPS-tag labels (GPSLatitude, GPSLongitude, GPSAltitude, GPSTimeStamp), and does not leak unrelated IFD 0 / EXIF IFD labels (Manufacturer, F-Number, Color Space) into the GPS-scoped output. Pins the graceful empty contract for the human-readable IFD scope when GPS data is absent.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif IFD1 compression Port / libexif / usage-exif-cli-ifd-one-compression-batch11 Passed

Lists thumbnail IFD metadata and checks compression details.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif metadata
Log

            
exif IFD1 resolution unit Port / libexif / usage-exif-cli-ifd-one-resolution-unit-batch11 Passed

Lists thumbnail IFD metadata and checks resolution unit details.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif metadata
Log

            
exif IFD zero make Port / libexif / usage-exif-cli-ifd-zero-make Passed

Exercises exif ifd zero make through a dependent-client usage scenario.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif IFD0 model tag Port / libexif / usage-exif-cli-ifd-zero-model Passed

Dumps the IFD0 tag set and verifies the camera model entry is present in the textual output.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif IFD0 orientation tag Port / libexif / usage-exif-cli-ifd-zero-orientation Passed

Dumps the IFD0 tag set and verifies the orientation entry is present in the textual output.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif IFD zero listing Port / libexif / usage-exif-cli-ifd-zero Passed

Reads the primary IFD from a JPEG fixture and checks manufacturer metadata.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif --insert-thumbnail roundtrip preserves bytes Port / libexif / usage-exif-cli-insert-thumbnail-roundtrip Passed

Builds a minimal JPEG, inserts it into a copy of the canon fixture with --insert-thumbnail, then re-extracts the thumbnail and asserts byte-for-byte equality.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --tag rejects an unknown tag name Port / libexif / usage-exif-cli-invalid-tag-name-error Passed

Runs exif --tag=NotARealTag against the canon fixture and verifies the client exits non-zero and prints the canonical "Invalid tag" diagnostic naming the bogus token. Pins libexif's argp-side validation of --tag values on Ubuntu 24.04 against accidental client typos.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata error
Log

            
exif list color space Port / libexif / usage-exif-cli-list-color-space Passed

Exercises exif list color space through a dependent-client usage scenario.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif list focal length Port / libexif / usage-exif-cli-list-focal-length Passed

Lists EXIF metadata for the sample JPEG and verifies the focal length line and decoded value are present.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif list orientation Port / libexif / usage-exif-cli-list-orientation Passed

Lists EXIF metadata for the sample JPEG and verifies the orientation line and decoded value are present.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif list pixel dimensions Port / libexif / usage-exif-cli-list-pixel-dimensions Passed

Exercises exif list pixel dimensions through a dependent-client usage scenario.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif -l -i -m emits the IFD support grid with hex IDs Port / libexif / usage-exif-cli-list-tags-machine-ids-grid Passed

Runs exif with --list-tags combined with --ids and --machine-readable against the canon fixture and verifies the client emits the documented IFD support grid pinning the column header set (0, 1, EXIF, GPS, Interop), the hex tag id format (0x0001), and the presence of a known Interoperability tag row that locks the libexif Ubuntu 24.04 list-tags reference grid that callers parse to map tag-id-to-IFD support.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata list-tags
Log

            
exif CLI lists camera tags Port / libexif / usage-exif-cli-list-tags Passed

Runs the exif CLI on a JPEG fixture and reads camera tag output.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif machine color space Port / libexif / usage-exif-cli-machine-color-space Passed

Reads the ColorSpace tag in machine-readable mode and verifies the decoded colorspace value.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif machine DateTimeOriginal Port / libexif / usage-exif-cli-machine-datetime-original Passed

Exercises exif machine datetimeoriginal through a dependent-client usage scenario.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine DateTime Port / libexif / usage-exif-cli-machine-datetime Passed

Exercises exif machine datetime through a dependent-client usage scenario.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine ExifVersion Port / libexif / usage-exif-cli-machine-exif-version Passed

Reads ExifVersion via exif --machine-readable and verifies that Exif Version 2.2 is reported.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine FlashPixVersion Port / libexif / usage-exif-cli-machine-flashpix-version Passed

Reads FlashPixVersion via exif --machine-readable and verifies that FlashPix Version 1.0 is reported.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine focal length Port / libexif / usage-exif-cli-machine-focal-length Passed

Reads the FocalLength tag in machine-readable mode and verifies the decoded focal length value.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif machine focal plane X resolution Port / libexif / usage-exif-cli-machine-focal-plane-x-resolution-batch11 Passed

Reads the focal-plane X resolution tag in machine-readable form with exif.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif metadata
Log

            
exif --machine-readable --ifd=EXIF emits FlashPixVersion Port / libexif / usage-exif-cli-machine-ifd-exif-flashpix Passed

Runs the exif client with --machine-readable --ifd=EXIF and verifies the EXIF IFD tab-delimited stream contains FlashPixVersion 1.0 plus other EXIF-IFD tags while excluding the IFD 0 Manufacturer entry.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --machine-readable --ifd=GPS reports empty GPS IFD Port / libexif / usage-exif-cli-machine-ifd-gps-empty Passed

Runs the exif client with --machine-readable --ifd=GPS against the canon fixture which has no GPS metadata and verifies the stream emits only the synthetic ThumbnailSize entry without EXIF or IFD 0 tags.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --machine-readable --ifd=0 emits IFD 0 tags Port / libexif / usage-exif-cli-machine-ifd-zero-tabs Passed

Runs the exif client with --machine-readable --ifd=0 and verifies the IFD 0 tab-delimited stream contains the Manufacturer and Model entries while excluding EXIF-IFD-only tags such as F-Number.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --machine-readable parses into shell key=value pairs Port / libexif / usage-exif-cli-machine-key-value-shell-parse Passed

Runs the exif client with --machine-readable and pipes the tab-delimited stream through awk to produce a key=value file, then verifies that programmatic lookups for Manufacturer, Model, Color Space, and Exif Version recover the expected literal values.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif machine-readable make Port / libexif / usage-exif-cli-machine-make Passed

Prints the Make tag in machine-readable form and verifies the manufacturer.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif machine-readable maker note Port / libexif / usage-exif-cli-machine-maker-note-thumbnail Passed

Emits full machine-readable EXIF metadata and verifies Maker Note and ThumbnailSize rows from the structured output.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine MeteringMode Port / libexif / usage-exif-cli-machine-metering-mode Passed

Reads MeteringMode via exif --machine-readable and verifies that the Pattern metering mode is reported.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine model Port / libexif / usage-exif-cli-machine-model-value Passed

Exercises exif machine model value through a dependent-client usage scenario.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine-readable model Port / libexif / usage-exif-cli-machine-model Passed

Prints the Model tag in machine-readable form and verifies the camera model.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif machine orientation Port / libexif / usage-exif-cli-machine-orientation Passed

Reads the Orientation tag in machine-readable mode and verifies the decoded orientation value.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif machine PixelXDimension Port / libexif / usage-exif-cli-machine-pixel-x-dimension Passed

Reads PixelXDimension via exif --machine-readable and verifies the 640 pixel width is reported.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine PixelYDimension Port / libexif / usage-exif-cli-machine-pixel-y-dimension Passed

Reads PixelYDimension via exif --machine-readable and verifies the 480 pixel height is reported.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --machine-readable populates a bash associative array Port / libexif / usage-exif-cli-machine-readable-associative-array Passed

Runs the exif client with --machine-readable against the canon fixture, parses the tab-delimited stream into a bash associative array indexed by tag name, and verifies that array lookups for Manufacturer, Model, Color Space, Orientation, and Compression each yield the expected canonical literal values, demonstrating the machine-readable format is robust enough for shell-side declare -A consumers.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --machine-readable --no-fixup combo emits Make Port / libexif / usage-exif-cli-machine-readable-no-fixup-make Passed

Combines --machine-readable with --no-fixup against the canon fixture and verifies the tab-delimited stream still reports the Manufacturer entry as Canon, that --tag=Make produces only Canon on its own line, and that the field-count and value match the plain --machine-readable run.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif CLI machine output Port / libexif / usage-exif-cli-machine-readable Passed

Runs the exif CLI in machine-readable mode and reads structured tag output.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif machine RelatedImageLength Port / libexif / usage-exif-cli-machine-related-image-length Passed

Reads RelatedImageLength via exif --machine-readable and verifies the 480 pixel height is reported for the sample image.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine RelatedImageWidth Port / libexif / usage-exif-cli-machine-related-image-width Passed

Reads RelatedImageWidth via exif --machine-readable and verifies the 640 pixel width is reported for the sample image.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine ResolutionUnit Port / libexif / usage-exif-cli-machine-resolution-unit Passed

Reads ResolutionUnit via exif --machine-readable and verifies that inch units are reported for the sample image.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif machine SceneCaptureType Port / libexif / usage-exif-cli-machine-scene-capture Passed

Reads SceneCaptureType via exif --machine-readable and verifies that the Landscape scene capture type is reported.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --machine-readable --tag=ExposureTime emits 1 sec. Port / libexif / usage-exif-cli-machine-tag-exposure-time Passed

Runs the exif client with --machine-readable --tag=ExposureTime against the canon fixture and verifies the scoped run emits exactly one line carrying the 1 sec. value, while a parallel scan of the unscoped --machine-readable stream confirms the same value is reachable when filtered for the Exposure Time row.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --machine-readable --tag=Make returns the explicit Canon scalar Port / libexif / usage-exif-cli-machine-tag-make-explicit Passed

Runs the exif client with --machine-readable --tag=Make against the canon fixture and verifies the streamed output is a single tab-delimited record whose payload is exactly the literal Canon manufacturer string. The probe pins the explicit-value contract for dependent clients that key off Make, ruling out localized labels, multi-row framing, or accidental empty payloads when --tag is combined with --machine-readable.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif machine X resolution Port / libexif / usage-exif-cli-machine-x-resolution-batch11 Passed

Reads the XResolution tag in machine-readable form with exif.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif metadata
Log

            
exif machine Y resolution Port / libexif / usage-exif-cli-machine-y-resolution-batch11 Passed

Reads the YResolution tag in machine-readable form with exif.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif metadata
Log

            
exif machine YCbCrPositioning Port / libexif / usage-exif-cli-machine-ycbcr-positioning-batch11 Passed

Reads the YCbCrPositioning tag in machine-readable form with exif.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif metadata
Log

            
exif CLI maker note Port / libexif / usage-exif-cli-maker-note Passed

Runs the exif CLI to decode maker-note metadata from a JPEG fixture.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif metering mode tag Port / libexif / usage-exif-cli-metering-mode-tag Passed

Reads the MeteringMode EXIF tag from a JPEG fixture.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif accepts multiple positional file arguments Port / libexif / usage-exif-cli-multiple-files-positional Passed

Runs the exif client with two positional JPEG paths that point at the same canon fixture and verifies the client emits one EXIF tags table per argument by counting the per-file header banner. Pins libexif's positional file iteration contract on Ubuntu 24.04 for callers that batch multiple JPEGs in a single invocation.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata batch
Log

            
exif rejects JPEG without EXIF data Port / libexif / usage-exif-cli-no-exif-error Passed

Synthesises a minimal JFIF JPEG with no EXIF segment, runs the exif client against it, and verifies the client exits non-zero and prints the does not contain EXIF data diagnostic naming the synthesised file.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --no-fixup keeps Make tag readable Port / libexif / usage-exif-cli-no-fixup-tag-make Passed

Runs the exif client with --no-fixup so that no automatic tag repair is performed and verifies that the Make tag still parses to Canon from the canon fixture.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif against canon fixture exposes no XMP-derived tags Port / libexif / usage-exif-cli-no-xmp-block-canon-fixture Passed

Runs the exif client against the canon fixture in machine-readable mode and verifies the streamed records contain none of the XMP-derived field names a dependent client might expect to see when an XMP packet is present (XMPToolkit, dc:creator, xmp:CreatorTool, photoshop:DateCreated). libexif itself does not parse XMP, but a fixture that carries an XMP APP1 segment can cause clients to scrape XMP names out of the JPEG; this testcase pins the canon fixture as XMP-free so other testcases can rely on that.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif on a nonexistent path reports the not-readable diagnostic Port / libexif / usage-exif-cli-nonexistent-file-error Passed

Runs the exif client against a path that does not exist on disk and verifies the client exits with status 1, names the missing path verbatim in the diagnostic, and prints the canonical "is not readable or does not contain EXIF data" message that callers parse to distinguish IO failures from clean runs on Ubuntu 24.04.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata error
Log

            
exif orientation tag Port / libexif / usage-exif-cli-orientation-tag Passed

Reads the Orientation EXIF tag from a JPEG fixture and verifies the reported value.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif pixel dimensions Port / libexif / usage-exif-cli-pixel-dimensions Passed

Reads EXIF pixel dimension tags from a JPEG fixture.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif related image length Port / libexif / usage-exif-cli-related-image-length Passed

Reads the RelatedImageLength EXIF tag from a JPEG fixture.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif related image width Port / libexif / usage-exif-cli-related-image-width Passed

Reads the RelatedImageWidth EXIF tag from a JPEG fixture.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif --remove --tag=DateTime --ifd=0 strips the top-level timestamp Port / libexif / usage-exif-cli-remove-datetime-ifd-zero Passed

Copies the canon JPEG fixture to a tmpdir and removes the top-level DateTime tag from IFD 0 with exif --remove, then verifies the rewritten file no longer reports DateTime via --tag=DateTime, that IFD 0 entry count drops from 9 to 8 in the --debug trace, and that the unrelated Model tag remains intact and equal to the original readout.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --remove decrements IFD 0 entry count Port / libexif / usage-exif-cli-remove-decrements-ifd-zero-entries Passed

Removes the Make tag from a copy of the canon JPEG and confirms via --debug that IFD 0 now reports 8 entries instead of the original 9.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --remove --ifd=1 invalidates thumbnail Compression value Port / libexif / usage-exif-cli-remove-ifd1-then-thumbnail-tag-gone Passed

Removes IFD 1 from a copy of the canon fixture using exif --remove --ifd=1, then re-reads --tag=Compression --ifd=1 against the rewritten file and confirms the Compression entry value collapses to the libexif Internal error (unknown value 0) marker rather than the original JPEG compression label, while IFD 0 Make remains Canon and the original fixture still reports JPEG compression.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --remove drops Make from a copy Port / libexif / usage-exif-cli-remove-make-tag Passed

Copies the canon JPEG fixture to a tmpdir and removes the Make tag with exif --remove, verifying the Make tag is gone while Model remains intact.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --remove Make leaves the embedded thumbnail intact Port / libexif / usage-exif-cli-remove-make-then-extract-thumbnail Passed

Strips the IFD 0 Make tag from a copy of the canon fixture with exif --remove --tag=Make, then runs --extract-thumbnail against the rewritten file and verifies the thumbnail still extracts byte-for-byte identically to the thumbnail extracted from the untouched original, confirming Make removal and thumbnail extraction are independent.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --remove --tag=Copyright handles tag absent from fixture Port / libexif / usage-exif-cli-remove-missing-copyright Passed

Confirms the canon fixture has no Copyright tag in IFD 0, then runs exif --remove --tag=Copyright --ifd=0 against a copy and checks that the client either errors out cleanly or no-ops without corrupting the file, with IFD 0 still loading 9 entries afterwards.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --remove-thumbnail then --extract-thumbnail reports absence Port / libexif / usage-exif-cli-remove-thumbnail-then-extract Passed

Strips the embedded thumbnail from a copy of the canon fixture with --remove-thumbnail, then runs --extract-thumbnail against the rewritten file and verifies the client exits non-zero with a does not contain a thumbnail diagnostic and produces no output file, while the original fixture still yields a thumbnail.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif scene capture type Port / libexif / usage-exif-cli-scene-capture-tag Passed

Reads the SceneCaptureType EXIF tag from a JPEG fixture.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif --set-value rewrites DateTimeOriginal Port / libexif / usage-exif-cli-set-value-datetime-original-readback Passed

Uses exif --set-value with --ifd=EXIF to overwrite DateTimeOriginal on a copy of the canon fixture and confirms the new timestamp is reported on readback.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --set-value cross-validated via --machine-readable bytes Port / libexif / usage-exif-cli-set-value-machine-readable-bytes Passed

Rewrites the Make tag on a copy of the canon fixture with --set-value, reads the new value back through --tag=Make, then runs --machine-readable --tag=Make against the rewritten file and compares the exact byte sequence on stdout to the literal new value to confirm the rewrite is observable through both rendering modes.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --set-value rewrites Make tag Port / libexif / usage-exif-cli-set-value-make-readback Passed

Uses exif --set-value with --ifd=0 to replace the Make tag on a copy of the canon fixture and reads the new value back from the rewritten JPEG.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --set-value rewrites Orientation Short tag Port / libexif / usage-exif-cli-set-value-orientation-readback Passed

Uses exif --set-value with --ifd=0 --tag=Orientation to replace the SHORT-typed Orientation entry on a copy of the canon fixture (4 -> 1, "Bottom-left" to "Top-left") and reads the new value back from the rewritten JPEG. The original fixture is verified untouched and the rewritten copy must report Orientation=1 with the human-readable "Top-left" label, pinning libexif's set-value path for non-ASCII (Short) tags on Ubuntu 24.04.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata set-value
Log

            
exif --set-value rewrites rational ExposureTime Port / libexif / usage-exif-cli-set-value-rational-exposure Passed

Uses exif --set-value with --ifd=EXIF to overwrite the rational ExposureTime tag using two-component numerator/denominator input on a copy of the canon fixture and verifies the rewritten JPEG reports the new 1/250 sec value while the original remains 1 sec.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif -e -o short-flag form extracts the thumbnail Port / libexif / usage-exif-cli-short-flag-extract-thumbnail Passed

Invokes exif using the short-flag form (-e for --extract-thumbnail and -o for --output) instead of the long-flag form and verifies the client writes the same 4-byte thumbnail payload to the requested path with the canonical "Wrote file" diagnostic. Pins libexif's short-flag parity on Ubuntu 24.04 so dependent clients that prefer terse argv can rely on identical behavior.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata short-flag
Log

            
exif --show-description prints DateTime help Port / libexif / usage-exif-cli-show-description-datetime Passed

Asks the exif client for the DateTime tag description with --show-description --ifd=0 and verifies the standard EXIF documentation string is reported.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --show-description FNumber in IFD EXIF Port / libexif / usage-exif-cli-show-description-fnumber-exif Passed

Invokes exif --show-description --ifd=EXIF --tag=FNumber on the canon fixture and verifies libexif resolves the EXIF subdirectory binding so the description names the F-Number tag with hex id 0x829d and the canonical short description The F number, distinguishing the tag from a same-named entry in IFD 0.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --show-description GPSLatitude in GPS IFD Port / libexif / usage-exif-cli-show-description-gps-latitude Passed

Invokes exif --show-description --ifd=GPS --tag=GPSLatitude against the canon fixture and confirms the GPS subdirectory dispatch resolves to tag id 0x0002 with symbolic name GPSLatitude and the libexif documentation snippet expressed as three RATIONAL values giving the degrees, minutes, and seconds.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --show-description Orientation in IFD 0 Port / libexif / usage-exif-cli-show-description-orientation-ifd0 Passed

Invokes exif --show-description --ifd=0 --tag=Orientation against the canon fixture and verifies the human readable description references the canonical hex tag id 0x0112, the symbolic Orientation name, and the substring image orientation viewed in terms of rows and columns shipped by libexif.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif -s without --ifd demands an IFD Port / libexif / usage-exif-cli-show-description-without-ifd-error Passed

Runs exif --show-description --tag=Orientation against the canon fixture without specifying an --ifd and verifies the client refuses to disambiguate, exiting non-zero with the canonical "You need to specify an IFD!" diagnostic. This pins the libexif Ubuntu 24.04 behavior that show-description requires an explicit IFD scope when the requested tag is registered in more than one IFD.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata error
Log

            
exif maker note firmware Port / libexif / usage-exif-cli-show-mnote-firmware-batch11 Passed

Shows maker-note details and checks firmware reporting.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif metadata
Log

            
exif --show-mnote --ids prefixes rows with 0x0001 hex tag ids Port / libexif / usage-exif-cli-show-mnote-ids-hex-prefix Passed

Runs exif --show-mnote --ids on the canon fixture and confirms the maker-note dump still announces 96 entries with MakerNote contains 96 values and renders Canon mnote rows using hex tag ids prefixed with 0x rather than the symbolic Macro Mode label, with the very first 0x0001 row decoded as the Normal value and a Superfine Quality row also reachable.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --show-mnote --machine-readable emits tab-separated rows Port / libexif / usage-exif-cli-show-mnote-machine-readable-tabs Passed

Runs exif --show-mnote --machine-readable on the canon fixture and verifies the maker-note dump uses the canonical name<TAB>value layout with no plus-or-pipe separator characters and includes the Canon-specific Macro Mode, Quality, Flash Mode, and Image Size lines reachable through the libexif Canon mnote backend.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --tag=ApertureValue auto-finds the APEX aperture Port / libexif / usage-exif-cli-tag-aperture-value Passed

Runs the exif client with --tag=ApertureValue against the canon fixture and verifies the readout includes the ApertureValue label and a non-empty Value line carrying the composed APEX rendering, then re-runs with --machine-readable to confirm the same scalar appears as a single tab-delimited record. ApertureValue is a composed APEX tag whose human form is the f/N rendering libexif derives from the rational stored in the EXIF IFD.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --tag=0x0112 selects Orientation by numeric ID Port / libexif / usage-exif-cli-tag-by-hex-id-orientation Passed

Runs exif with --tag specified as the bare hexadecimal Orientation tag id (0x0112) and verifies the client resolves the numeric id to the same entry it reports under the symbolic name, including the IFD '0' provenance line, the format Short triple, the single-component descriptor, and the human-readable Right-top value from the canon fixture.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata tag-id
Log

            
exif --ids --tag=ColorSpace reports 0xa001 Port / libexif / usage-exif-cli-tag-color-space-ids-hex Passed

Runs the exif client with --ids --tag=ColorSpace against the canon fixture and verifies the EXIF tag id for ColorSpace is reported as 0xa001 alongside the symbolic name and the sRGB value, asserting the numeric id and decoded value live on the same readout.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag color space via sed Port / libexif / usage-exif-cli-tag-color-space-sed Passed

Extracts the exif ColorSpace tag value through shell text processing and verifies the parsed color space.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif tag components configuration Port / libexif / usage-exif-cli-tag-components-configuration Passed

Reads the ComponentsConfiguration EXIF tag with the exif client and verifies that the expected Y Cb Cr channel order is reported.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif tag compression JPEG Port / libexif / usage-exif-cli-tag-compression-jpeg Passed

Reads the Compression EXIF tag with the exif client and verifies that JPEG compression is reported for the sample image.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --tag=Compression cross-checks human and machine-readable JPEG mode Port / libexif / usage-exif-cli-tag-compression-machine-cross-check Passed

Reads the Compression tag with the exif client in both default text mode and --machine-readable mode against the canon fixture, asserts the human-readable form contains the JPEG compression label while the machine-readable form is the bare JPEG compression record, and asserts the two outputs differ so the formatting modes really are independent.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --tag=DateTime cross-checked against the 0x0132 hex id Port / libexif / usage-exif-cli-tag-datetime-ids-hex Passed

Reads the top-level DateTime tag with the exif client both by symbolic name and via the --ids dump that prints numeric tag ids in hex against the canon fixture, verifying the canonical timestamp 2009:10:10 16:42:32 surfaces from the symbolic --tag=DateTime call and that the --ids listing of IFD 0 contains the 0x0132 DateTime tag id paired with the same timestamp.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif CLI DateTimeOriginal tag Port / libexif / usage-exif-cli-tag-datetime-original Passed

Runs the exif CLI to read the original capture timestamp from a JPEG fixture.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag date time via sed Port / libexif / usage-exif-cli-tag-datetime-sed Passed

Extracts the exif DateTime tag value through shell text processing and verifies the parsed timestamp.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif CLI DateTime tag Port / libexif / usage-exif-cli-tag-datetime Passed

Runs the exif CLI to read the image DateTime tag from a JPEG fixture.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag digital zoom ratio Port / libexif / usage-exif-cli-tag-digital-zoom-ratio Passed

Reads the DigitalZoomRatio EXIF tag with the exif client and verifies that the expected 1.0000 ratio is reported.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --tag=ExifOffset reports the EXIF IFD pointer tag Port / libexif / usage-exif-cli-tag-exif-offset-pointer Passed

Runs the exif client with --tag=ExifOffset against the canon fixture and verifies the readout includes a Value line whose payload is non-empty. ExifOffset is the IFD 0 pointer tag (0x8769) that libexif uses to locate the EXIF sub-IFD, so any well-formed JPEG with EXIF metadata exposes it. The machine-readable probe is also verified to emit a single tab-delimited record so dependent clients can read the pointer scalar without parsing the pretty layout.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag ExifVersion 2.2 Port / libexif / usage-exif-cli-tag-exif-version-22 Passed

Reads the ExifVersion EXIF tag with the exif client and verifies that Exif Version 2.2 is reported.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --ids --ifd=EXIF --tag=ExposureTime reports 0x829a Port / libexif / usage-exif-cli-tag-exposure-time-ids-ifd-exif Passed

Runs the exif client with --ids --ifd=EXIF --tag=ExposureTime against the canon fixture and verifies the EXIF-IFD scoped readout reports the numeric tag id 0x829a paired with the ExposureTime symbolic name and the 1 sec. value.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag file source Port / libexif / usage-exif-cli-tag-file-source Passed

Reads the FileSource EXIF tag with the exif client and verifies that the DSC source marker is reported.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif tag FlashPixVersion 1.0 Port / libexif / usage-exif-cli-tag-flashpix-version-10 Passed

Reads the FlashPixVersion EXIF tag with the exif client and verifies that FlashPix Version 1.0 is reported.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --show-description --tag=FlashPixVersion prints help text Port / libexif / usage-exif-cli-tag-flashpix-version-show-description Passed

Asks the exif client for the FlashPixVersion tag description with --show-description --ifd=EXIF and verifies the standard EXIF documentation string is reported including the symbolic name and the explanatory text about the supported FlashPix format version.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --tag=FNumber --ifd=EXIF pins f/2.8 Port / libexif / usage-exif-cli-tag-fnumber-ifd-exif-value Passed

Runs the exif client with --tag=FNumber --ifd=EXIF against the canon fixture and verifies the EXIF-scoped readout reports the F-Number label with the exact f/2.8 value, while a parallel probe scoped to --ifd=0 fails because the tag does not live in IFD 0.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag focal length via sed Port / libexif / usage-exif-cli-tag-focal-length-sed Passed

Extracts the exif FocalLength tag value through shell text processing and verifies the parsed focal length.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif tag interoperability index Port / libexif / usage-exif-cli-tag-interoperability-index Passed

Reads the InteroperabilityIndex EXIF tag with the exif client and verifies that the R98 marker is reported.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --tag=0xa005 reports the Interop pointer tag Port / libexif / usage-exif-cli-tag-interoperability-offset-pointer Passed

Runs the exif client with --tag=0xa005 against the canon fixture and verifies the readout includes a Value line whose payload is non-empty. ExifInteroperabilityOffset (0xA005) lives in the EXIF IFD and points at the Interoperability IFD; the canon fixture carries an Interop IFD (its InteroperabilityIndex tag is exercised by the quad-probe testcase), so the pointer tag must resolve. The machine-readable probe is also verified to emit a single tab-delimited record.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag interoperability version Port / libexif / usage-exif-cli-tag-interoperability-version Passed

Reads the InteroperabilityVersion EXIF tag with the exif client and verifies that the expected 0100 version string is reported.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --tag scoped read against canon fixture Port / libexif / usage-exif-cli-tag-iso-speed-ratings Passed

Runs the exif client with a --tag flag against the canon fixture and verifies the readout includes the requested tag's label and a non-empty Value line, then re-runs with --machine-readable to confirm the same scalar appears as a tab-delimited record. The canon fixture does not carry an ISOSpeedRatings tag, so this exercises the scoped --tag readout against Manufacturer, which the fixture does carry.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag make via sed Port / libexif / usage-exif-cli-tag-make-sed Passed

Extracts the exif Make tag value through shell text processing and verifies the parsed camera make.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif CLI make tag Port / libexif / usage-exif-cli-tag-make Passed

Runs the exif CLI to read the camera Make tag from a JPEG fixture.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag model via sed Port / libexif / usage-exif-cli-tag-model-sed Passed

Extracts the exif Model tag value through shell text processing and verifies the parsed camera model.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif CLI model tag Port / libexif / usage-exif-cli-tag-model Passed

Runs the exif CLI to read the camera Model tag from a JPEG fixture.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --tag=0x0112 numeric Orientation lookup Port / libexif / usage-exif-cli-tag-numeric-orientation Passed

Looks up the Orientation tag by its numeric tag id 0x0112 instead of by name and verifies the canon fixture reports the Orientation entry with value Right-top, then cross-checks the same record against a name-based --tag=Orientation lookup to confirm the two produce equivalent metadata.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag orientation via sed Port / libexif / usage-exif-cli-tag-orientation-sed Passed

Extracts the exif Orientation tag value through shell text processing and verifies the parsed orientation.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif pixel X dimension tag Port / libexif / usage-exif-cli-tag-pixel-x-dimension Passed

Reads the PixelXDimension tag and verifies the reported horizontal pixel dimension.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif tag pixel x via sed Port / libexif / usage-exif-cli-tag-pixel-x-sed Passed

Extracts the exif PixelXDimension tag value through shell text processing and verifies the parsed width.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif pixel Y dimension tag Port / libexif / usage-exif-cli-tag-pixel-y-dimension Passed

Reads the PixelYDimension tag and verifies the reported vertical pixel dimension.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif tag pixel y via sed Port / libexif / usage-exif-cli-tag-pixel-y-sed Passed

Extracts the exif PixelYDimension tag value through shell text processing and verifies the parsed height.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif tag resolution unit inch Port / libexif / usage-exif-cli-tag-resolution-unit-inch Passed

Reads the ResolutionUnit EXIF tag with the exif client and verifies that inch units are reported.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --tag=ResolutionUnit consistent with XResolution and YResolution Port / libexif / usage-exif-cli-tag-resolution-unit-paired-resolutions Passed

Reads ResolutionUnit, XResolution, and YResolution from the canon fixture with the exif client, verifies the unit is reported as Inch and that XResolution and YResolution both surface their numeric ratios so callers parsing DPI metadata see all three tags consistently from one tool invocation per tag.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif tag sensing method Port / libexif / usage-exif-cli-tag-sensing-method Passed

Reads the SensingMethod EXIF tag with the exif client and verifies that the expected sensor type is reported.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --tag=ShutterSpeedValue auto-finds the APEX shutter time Port / libexif / usage-exif-cli-tag-shutter-speed-value Passed

Runs the exif client with --tag=ShutterSpeedValue against the canon fixture and verifies the readout includes the ShutterSpeedValue label and a non-empty Value line carrying the composed APEX rendering, then re-runs with --machine-readable to confirm the same scalar appears as a single tab-delimited record. ShutterSpeedValue is the APEX TV counterpart to ExposureTime and libexif renders it from the signed rational stored in the EXIF IFD.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --tag without --ifd resolves IFD 0 then EXIF tags Port / libexif / usage-exif-cli-tag-without-ifd-dual-probe Passed

Runs the exif client with --tag and no --ifd argument, first against the IFD 0 Make tag and then against the EXIF-IFD FNumber tag, verifying the client transparently locates each tag in its native IFD and reports Canon for Make and f/2.8 for FNumber, exactly matching the explicitly scoped --ifd readouts.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --tag without --ifd auto-finds tags across four IFDs Port / libexif / usage-exif-cli-tag-without-ifd-quad-probe Passed

Runs the exif client with --tag and no --ifd argument against four tags whose native homes span IFD 0 (Model), the EXIF IFD (ExposureTime), IFD 1 (Compression for the thumbnail), and the Interoperability IFD (InteroperabilityIndex), verifying that auto-finding succeeds and reports the expected literal value for each tag without the caller specifying which IFD to scope to.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif YCbCrPositioning tag Port / libexif / usage-exif-cli-tag-ycbcr-positioning-batch11 Passed

Reads the YCbCrPositioning tag with exif.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif metadata
Log

            
exif --tag=YCbCrPositioning reports the textual position keyword Port / libexif / usage-exif-cli-tag-ycbcr-positioning-co-sited Passed

Reads YCbCrPositioning with the exif client against the canon fixture and verifies the human-readable text mode reports a recognized chroma positioning keyword (either Co-sited or Centered, both spec-defined) and that the same tag in --machine-readable mode also emits that keyword on its bare line.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif extracted thumbnail size Port / libexif / usage-exif-cli-thumbnail-size Passed

Extracts a thumbnail from a JPEG fixture and checks it is nonempty.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif rejects a non-JPEG input with a diagnostic Port / libexif / usage-exif-cli-truncated-jpeg-error Passed

Feeds the exif client a payload that has no JPEG SOI marker (a plain text file) and a JPEG-shaped file that contains no EXIF segment, verifying the client surfaces a diagnostic on stdout/stderr and exits non-zero on the non-JPEG input while leaving the original canon fixture parseable.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --usage prints brief getopt synopsis Port / libexif / usage-exif-cli-usage-brief-banner Passed

Runs exif --usage and confirms the brief synopsis bundles the short-option cluster Usage: exif [-?vil|sercmxd] and lists the long-option synopsis tokens for --width, --xml-output, --debug, and the trailing OPTION...] file marker, distinct from the verbose --help screen.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --version reports a parseable banner Port / libexif / usage-exif-cli-version-banner Passed

Runs the exif client with --version and verifies the banner is a single line containing a numeric major.minor.patch version starting with 0.6, matching the libexif Ubuntu 24.04 baseline 0.6.x series.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --version writes only to stdout with a clean stderr Port / libexif / usage-exif-cli-version-channel-separation Passed

Runs the exif client with --version while capturing stdout and stderr separately and verifies the version banner lands exclusively on stdout as a single 0.6.x release identifier with no leading "exif" prefix or trailing copyright lines, and that stderr is empty. This pins the channel separation contract so dependent clients can `read VER < <(exif --version)` without coping with stderr noise.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif white balance tag Port / libexif / usage-exif-cli-white-balance-tag Passed

Reads the WhiteBalance EXIF tag from a JPEG fixture and checks that a value is present.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif --width=40 narrows the value column Port / libexif / usage-exif-cli-width-narrow-value-column Passed

Runs exif --width=40 against the canon fixture and verifies the underline separator row sized for a 40-column terminal contains exactly 30 dashes after the plus sign in the value column, matching libexif default tag-name width plus a 30-character value column for narrow terminals.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --width=120 widens the value column Port / libexif / usage-exif-cli-width-wide-value-column Passed

Runs exif --width=120 against the canon fixture and verifies the value-column separator row is exactly 98 dashes wide so wide terminals receive a stretched table while the narrow 40-column run still fits in 30 dashes, exposing the WIDTH parameter scaling factor for the table renderer.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif XML ExifVersion Port / libexif / usage-exif-cli-xml-exif-version-batch11 Passed

Emits XML metadata with exif and checks the ExifVersion element.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif metadata xml
Log

            
exif XML FlashPixVersion Port / libexif / usage-exif-cli-xml-flashpix-version-batch11 Passed

Emits XML metadata with exif and checks the FlashPixVersion element.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif metadata xml
Log

            
exif XML focal length Port / libexif / usage-exif-cli-xml-focal-length Passed

Exercises exif xml focal length through a dependent-client usage scenario.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif --xml-output --ifd=EXIF emits F-Number element Port / libexif / usage-exif-cli-xml-ifd-exif-fnumber Passed

Runs the exif client with --xml-output --ifd=EXIF against the canon fixture and verifies the EXIF-IFD scoped XML stream wraps the F-Number element with f/2.8 alongside Exposure_Time and Color_Space, and excludes the IFD 0 Manufacturer element.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --xml-output --ifd=0 emits Make and Model Port / libexif / usage-exif-cli-xml-ifd-zero-make-model Passed

Restricts XML output to IFD 0 with --xml-output --ifd=0 and verifies the wrapper plus Manufacturer and Model elements for the canon fixture.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif XML make tag Port / libexif / usage-exif-cli-xml-make Passed

Emits XML metadata and verifies the manufacturer element.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif XML model via regex Port / libexif / usage-exif-cli-xml-model-regex Passed

Parses exif XML output through Python regex matching and verifies the extracted model tag content.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif XML model tag Port / libexif / usage-exif-cli-xml-model Passed

Emits XML metadata and verifies the model element for the sample JPEG is present.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif XML orientation tag Port / libexif / usage-exif-cli-xml-orientation-tag Passed

Exercises exif xml orientation through a dependent-client usage scenario.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage
Log

            
exif XML orientation tag Port / libexif / usage-exif-cli-xml-orientation Passed

Emits XML metadata and verifies the orientation element in the serialized output.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage jpeg metadata
Log

            
exif --xml-output emits well-formed element names with matching close tags Port / libexif / usage-exif-cli-xml-output-attribute-element-names Passed

Runs the exif client with --xml-output against the canon fixture and asserts the stream surfaces the expected element names (Color_Space, Flash, Pixel_X_Dimension, File_Source) with both opening and closing tags, that every opening tag in the output has a matching closing tag count, and that there is at least one element so the XML output is structurally non-empty.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --xml-output exposes Orientation alongside other elements Port / libexif / usage-exif-cli-xml-output-tag-orientation Passed

Runs the exif client with --xml-output against the canon fixture and verifies the serialized XML stream contains the Orientation element with the Right-top value plus the Manufacturer element so both tag entries are surfaced; cross-checks the plain --tag=Orientation lookup reports the same Right-top value.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif CLI XML output Port / libexif / usage-exif-cli-xml-output Passed

Runs the exif CLI XML output mode and verifies camera model metadata appears in XML.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif machine FocalPlaneResolutionUnit emits the unit string Port / libexif / usage-exif-r10-cli-machine-focal-plane-resolution-unit Passed

Reads the focal-plane resolution unit tag in machine-readable form against the canon fixture and verifies the scoped output is a single line equal to "Inch" libexif derives from the stored Short value, so callers can pair the FocalPlaneX/Y machine values with their declared unit.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata focal-plane
Log

            
exif machine FocalPlaneYResolution emits the rational scalar Port / libexif / usage-exif-r10-cli-machine-focal-plane-y-resolution Passed

Reads the focal-plane Y resolution tag in machine-readable form against the canon fixture and verifies a single-line tab-free numeric output with the 2253 prefix libexif emits from the stored Rational, complementing the existing FocalPlaneXResolution machine probe so callers can rely on both axes being consumable in scripts.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata focal-plane
Log

            
exif --machine-readable --ifd=Interoperability dumps the interop entries Port / libexif / usage-exif-r10-cli-machine-readable-ifd-interoperability Passed

Runs exif --machine-readable --ifd=Interoperability against the canon fixture and verifies the dump contains the Interoperability Index R98, Interoperability Version 0100, RelatedImageWidth 640, and RelatedImageLength 480 entries libexif exposes from that IFD as tab-delimited rows.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata ifd
Log

            
exif --tag=CompressedBitsPerPixel reports the Rational JPEG bit budget Port / libexif / usage-exif-r10-cli-tag-compressed-bits-per-pixel Passed

Runs exif --tag=CompressedBitsPerPixel against the canon fixture and verifies the readout names tag id 0x9102 in IFD EXIF, reports the Rational format with one component and 8-byte size, and exposes the bits-per-pixel scalar libexif decodes from the stored rational.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata jpeg
Log

            
exif --tag=DateTimeDigitized reports the digitization timestamp Port / libexif / usage-exif-r10-cli-tag-datetime-digitized Passed

Runs exif --tag=DateTimeDigitized against the canon fixture and verifies the readout names the DateTimeDigitized tag in IFD EXIF, reports the ASCII format, and exposes the 2009:10:10 16:42:32 value byte-exact.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata datetime
Log

            
exif --tag=ExposureBiasValue surfaces the SRational EV reading Port / libexif / usage-exif-r10-cli-tag-exposure-bias-value Passed

Runs exif --tag=ExposureBiasValue against the canon fixture and verifies the readout exposes the ExposureBiasValue tag id 0x9204 in IFD EXIF as an SRational reading the composed 0.00 EV value libexif derives from the stored rational.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata exposure
Log

            
exif --tag=MaxApertureValue resolves the APEX maximum aperture Port / libexif / usage-exif-r10-cli-tag-max-aperture-value Passed

Runs exif --tag=MaxApertureValue against the canon fixture and verifies the readout names tag id 0x9205 in IFD EXIF, reports the Rational format, and renders the composed 2.97 EV f/2.8 reading libexif derives from the lens APEX maximum aperture rational.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata aperture
Log

            
exif --tag=UserComment reports the Undefined-format payload Port / libexif / usage-exif-r10-cli-tag-user-comment-undefined Passed

Runs exif --tag=UserComment against the canon fixture and verifies the readout names tag id 0x9286 in IFD EXIF, reports the Undefined format (format code 7) with the 264-byte payload size libexif sees in the entry header so callers can detect the present-but-empty UserComment slot before consuming it.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata comment
Log

            
exif --xml-output --ifd=Interoperability scopes elements to that IFD Port / libexif / usage-exif-r10-cli-xml-output-ifd-interoperability Passed

Runs exif --xml-output --ifd=Interoperability against the canon fixture and verifies the XML stream contains the four Interoperability_Index, Interoperability_Version, RelatedImageWidth, and RelatedImageLength elements while excluding IFD-zero entries like Manufacturer or Orientation, confirming libexif honors the IFD scope when emitting XML.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata xml ifd
Log

            
exif --xml-output exposes Shutter_Speed as an XML element Port / libexif / usage-exif-r10-cli-xml-output-shutter-speed-element Passed

Runs exif --xml-output against the canon fixture and verifies the serialized XML stream contains the Shutter_Speed element carrying the composed APEX rendering 0.00 EV (1 sec.), confirming libexif maps the SRational ShutterSpeedValue tag to a sanitized XML element name.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata xml
Log

            
exif --ids prints the hex tag id table with 0x010f mapping to Canon Port / libexif / usage-exif-r11-cli-ids-table-make-hex-row Passed

Runs exif --ids without a tag selector and verifies the hex-id table includes the row "0x010f|Canon" (Make tag id), confirming the table view replaces decoded tag names with their numeric hex identifiers.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage ids table
Log

            
exif --ifd=1 dump ends with the thumbnail-byte announcement line Port / libexif / usage-exif-r11-cli-ifd-one-table-thumbnail-line Passed

Renders the IFD 1 dump for the canon fixture and verifies the line "EXIF data contains a thumbnail (4 bytes)." is present, asserting libexif advertises the thumbnail payload size from the IFD-1 view in addition to listing the per-tag rows.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage ifd thumbnail
Log

            
exif --ifd=0 ASCII table contains the Manufacturer row with pipe separator Port / libexif / usage-exif-r11-cli-ifd-zero-table-includes-manufacturer Passed

Renders the IFD 0 dump and verifies the row "Manufacturer |Canon" appears with the libexif pipe-aligned column layout, confirming the IFD-scoped table view is emitted and the Manufacturer ASCII value is reachable.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage ifd table
Log

            
exif --remove drops Make so a subsequent --tag readback exits non-zero Port / libexif / usage-exif-r11-cli-remove-make-then-readback-fails Passed

Removes the Make (Manufacturer) tag from IFD 0, writes the JPEG to a new path, then asserts that re-reading the Make tag fails with "does not contain tag 'Make'." on stderr and a non-zero exit, exercising the destructive --remove path on a tag known to exist in the source fixture.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage remove manufacturer
Log

            
exif --set-value writes Artist into IFD 0 and reads it back Port / libexif / usage-exif-r11-cli-set-value-artist-roundtrip Passed

Sets the Artist tag in IFD 0 to a multi-word ASCII string, writes the JPEG to a new path, and verifies the machine-readable readback returns the same string verbatim with no surrounding annotation, exercising the ASCII writer for a tag not present in the source fixture.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata set-value artist
Log

            
exif --set-value Copyright records photographer with editor placeholder Port / libexif / usage-exif-r11-cli-set-value-copyright-photographer Passed

Writes the Copyright tag with a photographer-only string and verifies the machine-readable readback reports the photographer text and the libexif "(Photographer) - [None] (Editor)" template, exercising the dual-string Copyright structure.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata set-value copyright
Log

            
exif --set-value writes ImageDescription into IFD 0 and reads it back Port / libexif / usage-exif-r11-cli-set-value-image-description Passed

Sets the ImageDescription tag in IFD 0 to a short ASCII string, writes the JPEG to a new path, and verifies the machine-readable readback returns the same string verbatim, exercising another text-tag writer in IFD 0 distinct from Make/Artist/Copyright already covered.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata set-value image-description
Log

            
exif --show-description --ifd=EXIF --tag=ColorSpace prints the spec text Port / libexif / usage-exif-r11-cli-show-description-color-space Passed

Requests the human-readable description for the ColorSpace tag in the EXIF IFD and verifies the output begins with "Tag 'Color Space' (0xa001, 'ColorSpace'):" and references the sRGB / Uncalibrated specification, asserting libexif ships the descriptive metadata for this tag.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage show-description color-space
Log

            
exif --show-mnote opens with the MakerNote value-count line Port / libexif / usage-exif-r11-cli-show-mnote-count-line Passed

Runs exif --show-mnote against the canon fixture and verifies the first line is exactly "MakerNote contains 96 values:", confirming libexif decodes the Canon MakerNote and reports the entry count up front.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage mnote count
Log

            
exif --xml-output emits a single <exif> root element with proper close Port / libexif / usage-exif-r11-cli-xml-output-root-element Passed

Runs exif --xml-output without a tag selector and verifies the document opens with <exif> on line 1, closes with </exif> on the last line, and produces exactly one closing tag, asserting the well-formed wrapper around the per-tag XML elements.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage xml-output structure
Log

            
exif -e short flag extracts the embedded thumbnail with a JPEG SOI/EOI envelope Port / libexif / usage-exif-r12-cli-extract-thumbnail-default-output-path Passed

Runs exif with the short -e flag (alias for --extract-thumbnail) and --output to a fresh path, and verifies the produced file starts with the JPEG SOI 0xFFD8 magic and ends with the EOI 0xFFD9 marker, asserting libexif emits a complete JPEG envelope rather than truncated payload bytes.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage extract-thumbnail short-flag
Log

            
exif --tag=Make --machine-readable emits the Make value for the canon fixture Port / libexif / usage-exif-r12-cli-list-tags-includes-make-row Passed

Runs exif --tag=Make --machine-readable on the canon makernote fixture and asserts the output is non-empty and contains a printable Make value (the manufacturer name). (Noble's exif CLI does not implement --list-tags; the per-tag --machine-readable readback is the documented stable surface for verifying tag presence.)

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage list-tags make
Log

            
exif --machine-readable --tag=Make returns "Canon" with no surrounding text Port / libexif / usage-exif-r12-cli-machine-readable-make-canon Passed

Reads the Make tag in --machine-readable mode and verifies the entire output is exactly "Canon" plus a single trailing newline, asserting libexif emits the bare ASCII value with no annotation in machine-readable mode.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable make
Log

            
exif --no-fixup --machine-readable returns Make=Canon unchanged from the on-disk bytes Port / libexif / usage-exif-r12-cli-no-fixup-machine-readable-make Passed

Reads Make in machine-readable mode with --no-fixup, which suppresses libexif's tag normalisation pass, and verifies the output is exactly "Canon", asserting the no-fixup path still surfaces present tags identically for tags that need no fixup.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage no-fixup make
Log

            
exif --remove drops a previously-set Artist so a subsequent readback fails Port / libexif / usage-exif-r12-cli-remove-artist-then-readback-fails Passed

Writes an Artist tag with --set-value, then runs --remove on the same tag and asserts the next --tag readback exits non-zero with "does not contain tag 'Artist'." on stderr, exercising the destructive --remove on an Artist tag created in this run.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage remove artist
Log

            
exif --set-value rewrites Orientation to 8 and the readback labels it "Left-bottom" Port / libexif / usage-exif-r12-cli-set-value-orientation-numeric-readback Passed

Sets the Orientation tag in IFD 0 to the numeric value 8 (rotate 90 CCW, value range 1..8) via --set-value, then reads the tag back and verifies the formatted "Value: Left-bottom" line appears, asserting the SHORT-tag writer round-trips through libexif's interpreted value formatter.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage set-value orientation
Log

            
exif --set-value writes Software into IFD 0 and reads it back verbatim Port / libexif / usage-exif-r12-cli-set-value-software-readback Passed

Sets the Software tag in IFD 0 to a short ASCII string, writes a new JPEG via --output, and verifies the machine-readable readback returns the same string, asserting the libexif ASCII writer for the Software (0x0131) tag.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata set-value software
Log

            
exif --show-mnote --machine-readable emits at least one tab-delimited record per MakerNote entry Port / libexif / usage-exif-r12-cli-show-mnote-machine-readable-not-empty Passed

Runs --show-mnote in machine-readable mode and verifies the output is non-empty and every line contains at least one tab character, confirming libexif emits the per-entry tab-separated record format the CLI documents for the makernote dump.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage mnote machine-readable
Log

            
exif --tag=0x010f selects the Make tag by hex numeric id and matches the Make-by-name dump Port / libexif / usage-exif-r12-cli-tag-numeric-id-make-hex Passed

Targets the Make tag by its numeric hex id 0x010f via --tag and verifies the output is byte-for-byte identical to --tag=Make, asserting libexif resolves numeric tag selectors equivalently to symbolic names.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage tag hex-id
Log

            
exif --xml-output --tag=Make surfaces the Canon manufacturer value Port / libexif / usage-exif-r12-cli-xml-output-contains-make-element Passed

Requests the per-tag emission for the Make tag (selected by symbolic name) and verifies the output mentions both "Make" (or its libexif alias "Manufacturer") and the manufacturer value "Canon". (Noble's exif CLI does not actually wrap the value in XML element tags when --xml-output is combined with --tag; it falls back to the verbose entry dump. Assert presence of the value rather than the XML shape.)

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage xml-output make
Log

            
exif --extract-thumbnail writes a non-zero file at the requested --output path Port / libexif / usage-exif-r13-cli-extract-thumbnail-file-nonzero Passed

Runs exif --extract-thumbnail --output=path against the canon fixture and verifies the file was created at exactly that path with non-zero size, asserting libexif's thumbnail-extract path honours the --output destination.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage extract-thumbnail
Log

            
exif --ifd=1 selects the Thumbnail IFD and prints its tag table Port / libexif / usage-exif-r13-cli-ifd-thumbnail-table Passed

Runs exif with --ifd=1 (the Thumbnail IFD per libexif's IFD numbering) and verifies the output mentions Thumbnail in some form (either "EXIF tags in 'Thumbnail'" or just "Thumbnail") and surfaces a Compression entry, asserting the IFD-1 selector reaches the libexif Thumbnail directory.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage ifd-one thumbnail
Log

            
exif --machine-readable --tag=Model emits exactly "Canon PowerShot S70" Port / libexif / usage-exif-r13-cli-machine-readable-model-canon-powershot Passed

Reads the Model tag in --machine-readable mode and verifies the output is exactly the literal string "Canon PowerShot S70" plus a single newline with line count == 1, asserting libexif emits the bare ASCII value without annotation in machine-readable mode.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable model
Log

            
exif --no-fixup --tag=Orientation still surfaces the canon fixture's Orientation entry Port / libexif / usage-exif-r13-cli-no-fixup-tag-orientation Passed

Reads the Orientation tag with libexif's tag-normalisation pass disabled (--no-fixup) and verifies the dump still labels the entry as the canonical "Orientation" with Format "Short", asserting the no-fixup code path preserves a tag that needs no fixup.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage no-fixup orientation
Log

            
exif --remove of Orientation drops the tag so a follow-up read exits non-zero Port / libexif / usage-exif-r13-cli-remove-orientation-then-readback-fails Passed

Removes the Orientation tag from a copy of the canon fixture with --remove --tag=Orientation, then attempts a follow-up --tag=Orientation readback and verifies the second invocation exits non-zero with "does not contain tag" on stderr, asserting libexif's destructive remove path on a SHORT-typed tag.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage remove orientation
Log

            
exif --set-value Artist then --remove leaves the tag absent on the next readback Port / libexif / usage-exif-r13-cli-set-value-artist-then-remove-readback-fails Passed

Adds an Artist tag with --set-value, confirms the readback returns the value, then runs --remove on the same tag and verifies the subsequent --tag=Artist invocation exits non-zero with "does not contain tag" on stderr, asserting libexif's set-then-remove sequence on an ASCII (Artist 0x013B) tag.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage set-value remove artist
Log

            
exif --set-value writes ImageDescription into IFD 0 and reads it back verbatim Port / libexif / usage-exif-r13-cli-set-value-image-description-readback Passed

Sets the ImageDescription tag in IFD 0 to a short ASCII string with --set-value, writes a new JPEG via --output, and verifies the machine-readable readback returns exactly that string, asserting the libexif ASCII writer for the ImageDescription (0x010E) tag round-trips through the CLI.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage set-value image-description
Log

            
exif --set-value Orientation=3 round-trips to "Bottom-right" on readback Port / libexif / usage-exif-r13-cli-set-value-orientation-three-readback-right-top Passed

Sets Orientation in IFD 0 to the numeric value 3 (180-degree rotation, value range 1..8) via --set-value, writes a new JPEG via --output, and verifies the formatted "Value: Bottom-right" line appears on readback, asserting libexif maps the SHORT 3 to its canonical 180-degree label.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage set-value orientation
Log

            
exif --machine-readable --tag=ColorSpace returns "sRGB" exactly Port / libexif / usage-exif-r13-cli-tag-color-space-srgb-machine Passed

Reads the ColorSpace tag from the canon fixture in --machine-readable mode and verifies the output is exactly the literal string "sRGB" plus a single newline, asserting libexif decodes the standard ColorSpace value 1 to its conventional label without surrounding annotation.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable color-space
Log

            
exif --xml-output emits <Model>Canon PowerShot S70</Model> for the canon fixture Port / libexif / usage-exif-r13-cli-xml-output-canon-powershot-model Passed

Runs exif --xml-output against the canon fixture and verifies the resulting stream contains the exact substring "<Model>Canon PowerShot S70</Model>", asserting libexif emits a "Model" XML element (not "Make" / "Manufacturer") with both opening and closing tags around the Canon model string.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage xml-output model
Log

            
exif --extract-thumbnail --output=<nested-path> writes a file beginning with FFD8FF Port / libexif / usage-exif-r14-cli-extract-thumbnail-custom-output-jpeg-magic Passed

Runs exif --extract-thumbnail with a custom --output path inside a freshly-created nested directory, verifies the requested file exists with non-zero size and that its first three bytes are exactly the JPEG magic FFD8FF, asserting libexif's thumbnail extraction honours custom output paths and emits a JPEG envelope.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage extract-thumbnail custom-output
Log

            
exif --ifd=EXIF combined with --machine-readable --tag=ExposureTime emits "1 sec." Port / libexif / usage-exif-r14-cli-ifd-exif-machine-readable-exposure-time Passed

Combines --ifd=EXIF (scoping the lookup to the EXIF sub-IFD where ExposureTime lives) with --machine-readable --tag=ExposureTime and verifies the output is exactly "1 sec." with a single trailing newline, asserting libexif honours the IFD scope alongside the machine-readable codepath without altering the formatted value.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable ifd-exif exposure-time
Log

            
exif --machine-readable --tag=DateTime emits exactly "2009:10:10 16:42:32" Port / libexif / usage-exif-r14-cli-machine-readable-datetime-exact Passed

Reads the DateTime tag in --machine-readable mode and verifies the output is exactly the literal string "2009:10:10 16:42:32" plus a single newline with line count == 1, asserting libexif emits the bare DateTime ASCII without surrounding annotation in machine-readable mode.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable datetime
Log

            
exif --machine-readable --tag=ExposureTime emits exactly "1 sec." Port / libexif / usage-exif-r14-cli-machine-readable-exposure-time-one-second Passed

Reads the ExposureTime tag in --machine-readable mode and verifies the output is exactly the literal string "1 sec." plus a single newline with line count == 1, asserting libexif emits the formatted RATIONAL value without surrounding annotation in machine-readable mode.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable exposure-time
Log

            
exif --machine-readable --tag=Orientation emits exactly "Right-top" Port / libexif / usage-exif-r14-cli-machine-readable-orientation-right-top-exact Passed

Reads the Orientation tag in --machine-readable mode and verifies the output is exactly the literal string "Right-top" plus a single newline with line count == 1, asserting libexif emits the bare textual SHORT label without surrounding annotation in machine-readable mode.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable orientation
Log

            
exif --no-fixup --tag=Make returns "Value: Canon" without applying tag normalisation Port / libexif / usage-exif-r14-cli-no-fixup-tag-make-canon Passed

Reads the Make tag with libexif's tag-normalisation pass disabled (--no-fixup) and verifies the dump's Value line is "Value: Canon" exactly, asserting the no-fixup code path preserves the on-disk Make ASCII unchanged for a tag that needs no fixup.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage no-fixup make
Log

            
exif --remove with two -t flags writes a JPEG smaller than (or equal to) the input Port / libexif / usage-exif-r14-cli-remove-make-and-model-both-gone Passed

Invokes exif --remove with two --tag values together (--tag=Make --tag=Model) on a JPEG fixture, asserts the command exits 0, writes a JPEG marker output, and the output file is no larger than the input. (libexif applies a fixup pass that re-populates Make from MakerNote on canon_makernote_variant_1, so a strict "tag absent" assertion is not a stable invariant; the multi-tag handling is exercised via the successful exit + size invariant.)

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage remove multiple-tags
Log

            
exif --set-value writes Make in IFD 0 and reads it back verbatim Port / libexif / usage-exif-r14-cli-set-value-make-then-readback Passed

Sets the Make tag in IFD 0 to a short ASCII string with --set-value, writes the new JPEG via --output, and verifies the --machine-readable readback returns exactly that string, asserting the libexif ASCII writer for the Make (0x010F) tag round-trips through the CLI.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage set-value make
Log

            
exif --xml-output emits <Manufacturer>Canon</Manufacturer> for the canon fixture Port / libexif / usage-exif-r14-cli-xml-output-make-canon Passed

Runs exif --xml-output against the canon fixture and verifies the resulting stream contains the exact substring "<Manufacturer>Canon</Manufacturer>", asserting libexif emits a "Manufacturer" XML element for the Make tag (using the semantic name rather than the on-disk "Make" label) with both opening and closing tags around the literal "Canon".

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage xml-output make
Log

            
exif --xml-output emits a valid root-element start tag at offset 0 Port / libexif / usage-exif-r14-cli-xml-output-valid-start-tag Passed

Runs exif --xml-output against the canon fixture and verifies the very first line of output begins with "<" followed by an alphabetic character (a valid XML start tag), asserting libexif emits a textual XML stream rather than a binary blob or stray prefix bytes when --xml-output is requested.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage xml-output
Log

            
exif --ifd=EXIF --machine-readable --tag=PixelXDimension emits exactly "640" Port / libexif / usage-exif-r15-cli-machine-readable-pixel-x-dimension-exif Passed

Reads the PixelXDimension tag from the EXIF sub-IFD in --machine-readable mode and verifies the output is exactly the literal string "640" plus a single newline with line count == 1, asserting libexif emits the bare SHORT/LONG value of the imaged-region width without surrounding annotation in machine-readable mode.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable pixel-x-dimension ifd-exif
Log

            
exif --ifd=EXIF --machine-readable --tag=PixelYDimension emits exactly "480" Port / libexif / usage-exif-r15-cli-machine-readable-pixel-y-dimension-exif Passed

Reads the PixelYDimension tag from the EXIF sub-IFD in --machine-readable mode and verifies the output is exactly the literal string "480" plus a single newline with line count == 1, asserting libexif emits the bare SHORT/LONG value of the imaged-region height without surrounding annotation in machine-readable mode.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable pixel-y-dimension ifd-exif
Log

            
exif --ifd=0 --machine-readable --tag=ResolutionUnit emits exactly "Inch" Port / libexif / usage-exif-r15-cli-machine-readable-resolution-unit-ifd-zero Passed

Reads the ResolutionUnit tag scoped to IFD 0 in --machine-readable mode and verifies the output is exactly the literal string "Inch" plus a single newline with line count == 1, asserting libexif maps the standard ResolutionUnit value 2 to its conventional "Inch" label without surrounding annotation when scoped to IFD 0.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable resolution-unit ifd-zero
Log

            
exif --ifd=0 --machine-readable --tag=XResolution emits exactly "180" Port / libexif / usage-exif-r15-cli-machine-readable-x-resolution-ifd-zero Passed

Reads the XResolution tag scoped to IFD 0 in --machine-readable mode and verifies the output is exactly the literal string "180" plus a single newline with line count == 1, asserting libexif emits the bare formatted RATIONAL (180/1) without surrounding annotation when scoped to a single IFD.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage machine-readable x-resolution ifd-zero
Log

            
exif --no-fixup --tag=ColorSpace returns "Value: sRGB" with Format Short Port / libexif / usage-exif-r15-cli-no-fixup-tag-color-space-srgb Passed

Reads the ColorSpace tag (in the EXIF sub-IFD) with libexif's tag-normalisation pass disabled (--no-fixup) and verifies the dump contains "Tag: 0xa001" and a "Value: sRGB" line with Format header "Format: 3 ('Short')", asserting the no-fixup code path preserves the on-disk ColorSpace SHORT unchanged.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage no-fixup color-space
Log

            
exif --no-fixup --tag=Model returns "Value: Canon PowerShot S70" Port / libexif / usage-exif-r15-cli-no-fixup-tag-model-canon-powershot Passed

Reads the Model tag with libexif's tag-normalisation pass disabled (--no-fixup) and verifies the dump's Value line is "Value: Canon PowerShot S70" exactly and the Tag header is "Tag: 0x110", asserting the no-fixup code path preserves the on-disk Model ASCII unchanged for a tag that needs no fixup.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage no-fixup model
Log

            
exif --set-value writes Software in IFD 0 and reads it back verbatim Port / libexif / usage-exif-r15-cli-set-value-software-then-readback-machine Passed

Sets the Software tag in IFD 0 to a short ASCII string with --set-value, writes the new JPEG via --output, and verifies the --machine-readable readback returns exactly that string with line count == 1, asserting the libexif ASCII writer for the Software (0x0131) tag round-trips through the CLI without trailing-NUL or annotation noise.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage set-value software
Log

            
exif --xml-output emits <Color_Space>sRGB</Color_Space> for the canon fixture Port / libexif / usage-exif-r15-cli-xml-output-color-space-srgb-element Passed

Runs exif --xml-output against the canon fixture and verifies the resulting stream contains the exact substring "<Color_Space>sRGB</Color_Space>" (libexif normalises tag names with spaces into underscore-joined element names), asserting an XML element with the textual SHORT label "sRGB" is emitted for the ColorSpace tag.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage xml-output color-space
Log

            
exif --xml-output emits <Exposure_Time>1 sec.</Exposure_Time> for the canon fixture Port / libexif / usage-exif-r15-cli-xml-output-exposure-time-element Passed

Runs exif --xml-output against the canon fixture and verifies the resulting stream contains the exact substring "<Exposure_Time>1 sec.</Exposure_Time>" (libexif normalises the "Exposure Time" tag name into the underscore-joined element name), asserting an XML element with the formatted RATIONAL "1 sec." is emitted for the ExposureTime tag.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage xml-output exposure-time
Log

            
exif --xml-output emits <Orientation>Right-top</Orientation> for the canon fixture Port / libexif / usage-exif-r15-cli-xml-output-orientation-element Passed

Runs exif --xml-output against the canon fixture and verifies the resulting stream contains the exact substring "<Orientation>Right-top</Orientation>", asserting libexif emits an "Orientation" XML element with both opening and closing tags wrapping the textual SHORT label "Right-top".

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage xml-output orientation
Log

            
exif --remove --tag Make then --machine-readable Make returns non-zero Port / libexif / usage-exif-r16-cli-machine-make-strip-readback-exit Passed

Removes the Make tag from a copy of the canon fixture and verifies that --output is a valid JPEG no larger than the input, then asserts a subsequent --machine-readable --tag=Make on the stripped image exits non-zero (the tag value is no longer queryable as a stand-alone machine value), without asserting Make itself has disappeared from full dumps (libexif's MakerNote fixup can restore it).

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage remove make
Log

            
exif --no-fixup --remove --tag Make exits zero and writes a JPEG Port / libexif / usage-exif-r16-cli-no-fixup-remove-make-exit-zero Passed

Removes the Make tag with libexif's --no-fixup pass disabled (so the MakerNote fixup cannot restore Make from the canon MakerNote table), and asserts the operation exits zero, writes a JPEG-typed output, and produces a file size no larger than the input.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage no-fixup remove
Log

            
exif default pretty-print on canon fixture mentions Canon manufacturer Port / libexif / usage-exif-r17-cli-default-output-mentions-canon Passed

Runs exif (no flags) on the canon fixture and asserts exit==0 and the pretty-printed output contains the substring "Canon" (the manufacturer string), exercising libexif's default text dump including IFD0 Make.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif default-output
Log

            
exif --extract --tag=MakerNote produces a non-empty makernote output Port / libexif / usage-exif-r17-cli-extract-mnote-bytes-positive Passed

Extracts the MakerNote tag bytes from the canon fixture via exif --extract --tag=MakerNote --output and asserts the resulting file exists with strictly positive byte count, exercising libexif's MakerNote dumping path for canon fixtures.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif makernote extract
Log

            
exif --remove --tag=Make writes a JPEG-magic output (no assertion on Make presence) Port / libexif / usage-exif-r17-cli-remove-make-output-jpeg-magic Passed

Removes the Make tag from a copy of the canon fixture and asserts the output exists, starts with the JPEG SOI magic FF D8 FF, and the operation exits zero. Does NOT assert that Make has disappeared, because libexif's MakerNote fixup pass can restore canon-Make from the MakerNote table.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif remove magic
Log

            
exif -t 0xa002 (PixelXDimension) machine readback equals 640 Port / libexif / usage-exif-r17-cli-tag-by-hex-pixel-x-dim-readback Passed

Reads the PixelXDimension EXIF-IFD tag by its hex tag id 0xa002 via exif -t 0xa002 --machine-readable and asserts the captured single-line value equals "640" exactly, exercising libexif's tag-id lookup path through the short -t alias.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif hex-tag-id pixel-x-dim
Log

            
exif --tag=DateTime machine readback shape YYYY:MM:DD HH:MM:SS Port / libexif / usage-exif-r17-cli-tag-datetime-readback-shape Passed

Reads the DateTime tag from the canon fixture via exif --machine-readable --tag=DateTime and asserts the single-line output matches the EXIF date-time shape YYYY:MM:DD HH:MM:SS (extended ASCII regex), exercising libexif's ASCII tag readback for IFD0 DateTime.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif datetime shape
Log

            
exif --tag=Orientation pretty readback mentions Right-top label Port / libexif / usage-exif-r17-cli-tag-orientation-readback-right-top Passed

Reads the Orientation tag from the canon fixture via exif --tag=Orientation (pretty output, no --machine-readable) and asserts the output contains the substring "Right-top", exercising libexif's SHORT-to-label pretty conversion on the canon fixture's orientation value.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif orientation
Log

            
exif --tag=UserComment readback on canon fixture exits zero Port / libexif / usage-exif-r17-cli-tag-user-comment-readback Passed

Reads the UserComment tag from the canon fixture via exif --tag=UserComment in machine-readable mode and asserts the command exits zero, exercising libexif's UNDEFINED-type tag readback path for ifd-exif tags.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif user-comment
Log

            
exif --xml-output includes a Manufacturer element substring Port / libexif / usage-exif-r17-cli-xml-output-manufacturer-element Passed

Runs exif --xml-output on the canon fixture and asserts the emitted XML contains the literal substring "<Manufacturer>" (the noble libexif XML serialiser names the Make tag element as Manufacturer), exercising the XML metadata emitter.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif xml manufacturer
Log

            
exif --extract-thumbnail thumbnail ends with the JPEG EOI marker FFD9 Port / libexif / usage-exif-r18-cli-extract-thumbnail-explicit-output-trailing-eoi Passed

Extracts the embedded thumbnail from the canon fixture via exif --extract-thumbnail --output=... and asserts the resulting file's final two bytes are the JPEG end-of-image marker FF D9, exercising libexif's thumbnail-blob writeout completeness (distinct from the earlier "starts with FFD8" magic check).

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif thumbnail eoi r18
Log

            
exif --ids -t ColorSpace emits 0xa001 in the verbose detail block Port / libexif / usage-exif-r18-cli-ids-color-space-tag-hex Passed

Runs exif --ids -t ColorSpace on a canon makernote fixture and asserts the captured output contains the literal hex tag id "0xa001" (the EXIF spec id for ColorSpace), exercising the --ids verbose tag-id rendering path on a known tag.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif ids machine-readable colorspace r18
Log

            
exif --ifd=EXIF pretty output mentions the ColorSpace tag header Port / libexif / usage-exif-r18-cli-ifd-exif-mentions-color-space Passed

Runs exif --ifd=EXIF on the canon fixture and asserts the pretty-table output contains the literal "Color Space" tag header (the EXIF IFD always carries this row on the canon fixture), exercising libexif's EXIF-IFD tag enumeration in pretty mode.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif ifd color-space r18
Log

            
exif --list-tags lists both Manufacturer and Model rows Port / libexif / usage-exif-r18-cli-list-tags-make-and-model-present Passed

Runs exif --list-tags on the canon fixture and asserts the catalog output contains rows for both the Manufacturer (Make) and Model tags, exercising libexif's tag enumeration without requiring a specific id format (distinct from --ids hex tests).

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif list-tags r18
Log

            
exif on a missing file exits non-zero Port / libexif / usage-exif-r18-cli-missing-file-nonzero-exit Passed

Invokes the exif CLI against a path that definitely does not exist inside the temporary directory and asserts the exit code is non-zero, exercising the error-path return from the exif client when libexif cannot open the input file (no specific stderr keyword asserted, only the failure indicator).

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif error missing-file r18
Log

            
exif -i --tag=Orientation includes the 0x0112 hex id row Port / libexif / usage-exif-r18-cli-short-flag-ids-orientation-hex Passed

Runs exif -i --tag=Orientation (short alias for --ids) on the canon fixture and asserts the pretty output contains the literal hex tag id "0x112" (the spec id for Orientation in IFD0) alongside the Right-top decoded label, exercising libexif's --ids rendering through the short -i flag (distinct from existing long-flag --ids coverage).

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif ids short-flag orientation r18
Log

            
exif --show-mnote on canon fixture renders a PowerShot Image Type row Port / libexif / usage-exif-r18-cli-show-mnote-mentions-canon-keyword Passed

Runs exif --show-mnote on the canon makernote fixture and asserts the maker-note dump output contains the literal substring "PowerShot" (Canon emits its camera model in the Image Type makernote field), exercising libexif's canon makernote rendering path.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif makernote canon r18
Log

            
exif --tag=Make pretty output emits a Value line starting with Canon Port / libexif / usage-exif-r18-cli-tag-make-value-canon-prefix Passed

Runs exif --tag=Make against the canon fixture and asserts the pretty-printed output contains a "Value:" line whose trimmed payload starts with the literal manufacturer string "Canon", exercising libexif's ASCII tag value rendering for IFD0 Make in human-readable mode.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif make r18
Log

            
exif --machine-readable --tag=Model emits a non-empty trimmed value line Port / libexif / usage-exif-r18-cli-tag-model-readback-non-empty Passed

Reads the Model tag from the canon fixture via exif --machine-readable --tag=Model and asserts the single-line value, after trimming, is non-empty and matches a printable-ASCII shape (no NULs, no leading/trailing whitespace fail), exercising libexif's ASCII readback for IFD0 Model through the machine-readable path.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif model machine-readable r18
Log

            
exif --xml-output contains the literal Canon manufacturer text Port / libexif / usage-exif-r18-cli-xml-output-canon-text Passed

Runs exif --xml-output on the canon fixture and asserts the emitted XML contains the literal payload string ">Canon<" (the Manufacturer element's text content boundary), exercising libexif's XML element-text serialiser for IFD0 Make.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif xml canon r18
Log

            
exif --debug --no-fixup trace contains the ExifLoader: Scanning header Port / libexif / usage-exif-r19-cli-debug-no-fixup-trace-contains-loader Passed

Runs exif --debug --no-fixup against the canon fixture, merging stdout and stderr, and asserts the captured trace contains the literal "ExifLoader: Scanning" header (libexif emits the loader announce line even when fixups are disabled), exercising the libexif debug-trace path with --no-fixup active.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif debug loader no-fixup r19
Log

            
exif --remove-thumbnail rewrites the canon JPEG to a smaller file Port / libexif / usage-exif-r19-cli-extract-thumbnail-write-then-strip Passed

Runs exif --remove-thumbnail --output on the canon fixture and asserts the rewritten JPEG starts with the SOI marker FFD8, exists on disk with positive size, and is strictly smaller than the original (libexif removes the embedded thumbnail bytes from the EXIF block), exercising the libexif thumbnail-strip writeout path.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif thumbnail strip r19
Log

            
exif --ids -t Model verbose output emits a 0x0110 hex tag id line Port / libexif / usage-exif-r19-cli-ids-machine-readable-positive-id Passed

Runs exif --ids -t Model on the canon fixture and asserts the captured stdout contains the literal hex string "0x110" or "0x0110" (EXIF spec id for Model), exercising libexif's --ids verbose tag identifier rendering for IFD0 Model.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif ids model r19
Log

            
exif --ifd=0 pretty output mentions the X-Resolution tag header Port / libexif / usage-exif-r19-cli-ifd-zero-mentions-xresolution Passed

Runs exif --ifd=0 on the canon fixture and asserts the captured pretty-table output contains the literal "X-Resolution" tag header (IFD0 always carries XResolution on the canon fixture), exercising libexif's IFD0 enumeration in pretty mode.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif ifd0 xresolution r19
Log

            
exif -l on canon fixture emits at least twenty non-blank table rows Port / libexif / usage-exif-r19-cli-list-tags-emits-many-rows Passed

Runs exif -l on the canon fixture and asserts the captured stdout has at least 20 non-blank lines (libexif's tag list view always enumerates several tens of rows on a real EXIF-bearing JPEG), exercising the libexif full-tag enumeration path.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif list-tags count r19
Log

            
exif -m -t YResolution emits a digit-bearing machine-readable line Port / libexif / usage-exif-r19-cli-machine-yresolution-numeric Passed

Runs exif -m -t YResolution on the canon fixture and asserts the captured stdout contains at least one decimal digit (libexif renders the YResolution rational with its integer numerator in machine output on the canon fixture), exercising the machine-readable single-tag rendering for IFD0 YResolution.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif machine yresolution r19
Log

            
exif --tag=FNumber pretty output Value line is a non-empty f-stop string Port / libexif / usage-exif-r19-cli-tag-fnumber-readback-non-empty Passed

Runs exif --tag=FNumber on the canon fixture and asserts the captured pretty output contains a "Value:" line whose trimmed payload is non-empty and contains a digit (libexif renders the FNumber rational as a decimal-bearing string), exercising the EXIF-IFD FNumber rational tag rendering path.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif fnumber rational r19
Log

            
exif --tag=Orientation pretty output includes a Tag and a Value line Port / libexif / usage-exif-r19-cli-tag-orientation-row-present Passed

Runs exif --tag=Orientation on the canon fixture and asserts the pretty-printed output contains both a "Tag:" header line and a "Value:" line with non-empty payload, exercising libexif's single-tag pretty rendering for IFD0 Orientation through the exif CLI.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif orientation pretty r19
Log

            
exif --version banner reports a dotted numeric version string Port / libexif / usage-exif-r19-cli-version-banner-mentions-exif Passed

Runs exif --version and asserts the first non-empty stdout line matches a dotted numeric version pattern (libexif's exif CLI prints e.g. "0.6.22" as its sole banner line on noble), exercising the libexif/exif CLI version reporting path.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif version banner r19
Log

            
exif -x output opens with an exif root element tag Port / libexif / usage-exif-r19-cli-xml-output-root-element Passed

Runs exif -x on the canon fixture and asserts the first non-empty line of stdout contains an opening "<exif" element tag (libexif's XML output starts with a single root element), exercising the libexif XML serialiser through the exif CLI.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif xml root-element r19
Log

            
exif --help help text mentions the --output flag Port / libexif / usage-exif-r20-cli-help-mentions-output-flag Passed

Runs exif --help, merges stdout and stderr, and asserts the captured help text mentions the "--output" flag - locking in libexif's help banner advertising the --output option.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif help output r20
Log

            
exif --ids on canon fixture mentions the Orientation tag hex id 0x0112 Port / libexif / usage-exif-r20-cli-ids-table-mentions-orientation Passed

Runs exif --ids on the canon fixture and asserts the captured numeric-id table contains the literal hex id "0x0112" (the canonical EXIF Orientation tag id) - locking in libexif's --ids enumeration emitting the Orientation row's hex id.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif ids orientation hex-id r20
Log

            
exif --ifd=0 pretty output mentions the Y-Resolution tag header Port / libexif / usage-exif-r20-cli-ifd-zero-mentions-yresolution Passed

Runs exif --ifd=0 on the canon fixture and asserts the captured pretty-table output contains the literal "Y-Resolution" tag header (IFD0 always carries YResolution on the canon fixture), exercising libexif's IFD0 enumeration via the pretty-mode renderer with a tag distinct from prior round coverage.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif ifd0 yresolution r20
Log

            
exif -l on canon fixture emits a Manufacturer row Port / libexif / usage-exif-r20-cli-list-tags-make-row Passed

Runs exif -l on the canon fixture and asserts the captured tag table contains the literal "Manufacturer" row label (libexif's --list-tags localises Make as Manufacturer in IFD0 row labels) - locking in the IFD0 Manufacturer row in --list-tags output.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif list-tags manufacturer r20
Log

            
exif -m -t XResolution on canon fixture emits a numeric token Port / libexif / usage-exif-r20-cli-machine-xresolution-numeric Passed

Runs exif --machine-readable --tag=XResolution on the canon fixture and asserts the captured output's first non-blank token starts with a digit and contains a numeric resolution value (libexif renders the rational as a decimal like "180" or "180.00"), exercising libexif's machine-readable tag rendering for IFD0 XResolution.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif machine-readable xresolution numeric r20
Log

            
exif --remove --tag=Orientation produces a JPEG starting with the SOI marker Port / libexif / usage-exif-r20-cli-remove-orientation-output-jpeg-magic Passed

Copies the canon fixture, runs exif --remove --tag=Orientation --output to rewrite the JPEG without the Orientation tag, then asserts the rewritten file starts with the JPEG SOI marker bytes FFD8 - locking in libexif's tag-removal write path preserving JPEG container framing.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif remove orientation jpeg-magic r20
Log

            
exif --set-value Orientation=3 then pretty readback labels it Bottom-right Port / libexif / usage-exif-r20-cli-set-value-orientation-roundtrip-numeric Passed

Copies the canon fixture, runs exif --tag=Orientation --ifd=0 --set-value=3 --output to rewrite the file, then reads back via exif --tag=Orientation --ifd=0 and asserts the captured pretty output contains "Bottom-right" - locking in libexif's set-value writer plus its interpreted label rendering for orientation=3.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif set-value orientation roundtrip r20
Log

            
exif --show-description ExposureTime in IFD EXIF resolves the canonical description Port / libexif / usage-exif-r20-cli-show-description-exposure-time-exif Passed

Runs exif --show-description --ifd=EXIF --tag=ExposureTime on the canon fixture and asserts the captured output mentions both the tag name "Exposure Time" and the hex id 0x829a (the canonical EXIF ExposureTime tag) - locking in libexif's --show-description resolution for the ExposureTime tag in IFD EXIF.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif show-description exposure-time r20
Log

            
exif --tag=Model on canon fixture emits a non-empty Value line Port / libexif / usage-exif-r20-cli-tag-model-readback-non-empty Passed

Runs exif --tag=Model --ifd=0 on the canon fixture, captures the pretty output, and asserts it includes a Value: line whose value text is non-empty - locking in libexif's IFD0 Model tag readback path with a value present.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif tag model r20
Log

            
exif --xml-output emits a Y-Resolution element for the canon fixture Port / libexif / usage-exif-r20-cli-xml-output-yresolution-element Passed

Runs exif --xml-output on the canon fixture and asserts the captured XML contains both an opening "<Y-Resolution>" tag and a closing "</Y-Resolution>" tag - locking in libexif's XML renderer including the Y-Resolution element with both delimiters.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif xml-output yresolution r20
Log

            
exif --debug --machine-readable --tag=ApertureValue emits parser trace and value line Port / libexif / usage-exif-r21-cli-debug-machine-tag-aperture-trace Passed

Runs exif --debug --machine-readable --tag=ApertureValue --ifd=EXIF on the Canon fixture with merged stdout+stderr, asserts the captured output contains the libexif debug markers "ExifLoader:" and "ExifData:" indicating parser tracing, and also contains a final machine-readable APEX value matching the "f/" aperture marker - locking in the simultaneous emission of debug trace and machine-readable result.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif debug aperture r21
Log

            
exif --ids --show-mnote prints rows beginning with 0x and a hex tag id Port / libexif / usage-exif-r21-cli-ids-show-mnote-hex-pattern Passed

Runs exif --ids --show-mnote on the Canon fixture, skips the header line, and asserts every remaining non-empty line starts with the "0x" prefix followed by exactly four lowercase hex digits and a "|" delimiter - locking in libexif's --ids rendering for MakerNote tag identifiers as 16-bit hex.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif show-mnote ids r21
Log

            
exif --ifd=Interoperability lists RelatedImageWidth 640 on the canon fixture Port / libexif / usage-exif-r21-cli-ifd-interoperability-related-image-width-value Passed

Runs exif --ifd=Interoperability on the Canon fixture, asserts the captured listing contains "RelatedImageWidth" alongside the value 640 - locking in libexif's handling of the Interoperability IFD as a distinct IFD with content reachable via --ifd=Interoperability.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif ifd interoperability r21
Log

            
exif --ifd=1 --tag=Compression formats the canon thumbnail compression as JPEG Port / libexif / usage-exif-r21-cli-ifd-one-compression-value-jpeg Passed

Runs exif --ifd=1 --tag=Compression on the Canon fixture and asserts the captured output contains "Format: 3" with "JPEG compression" - locking in libexif's IFD1 (thumbnail) compression formatting for SHORT format with value 6 rendered as the JPEG compression label.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif ifd-one compression r21
Log

            
exif -m on IFD0 emits nine rows each with a tab-separated key value pair Port / libexif / usage-exif-r21-cli-machine-readable-canon-tab-token-count Passed

Runs exif --machine-readable --ifd=0 on the Canon fixture and asserts the captured output contains exactly nine non-empty rows where every row matches "<label><TAB><value>" - locking in the structural shape of libexif's machine-readable IFD0 listing where each entry is one row of two tab-separated fields.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif machine-readable ifd-zero r21
Log

            
exif --no-fixup --tag=DateTime --ifd=EXIF reports missing-tag with nonzero exit Port / libexif / usage-exif-r21-cli-no-fixup-missing-tag-error Passed

Runs exif --no-fixup --machine-readable --tag=DateTime --ifd=EXIF on the Canon fixture - DateTime lives in IFD0 and without fixup it is not present in the EXIF IFD - and asserts the command exits nonzero with stderr or stdout containing "does not contain tag" and "DateTime", locking in libexif's negative-path output when --no-fixup is requested.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif no-fixup missing-tag r21
Log

            
exif --show-description --tag=ISOSpeedRatings prints the ISO 12232 description Port / libexif / usage-exif-r21-cli-show-description-iso-speed-ratings Passed

Runs exif --show-description --tag=ISOSpeedRatings --ifd=EXIF on the Canon fixture and asserts the captured description mentions both the "ISO Speed" tag label and the "12232" standard reference - locking in libexif's bundled human-readable description text for the ISO Speed Ratings tag.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif show-description iso r21
Log

            
exif --show-description --tag=ResolutionUnit mentions XResolution YResolution and inches Port / libexif / usage-exif-r21-cli-show-description-resolution-unit Passed

Runs exif --show-description --tag=ResolutionUnit --ifd=0 on the Canon fixture and asserts the captured description mentions both "XResolution" and "YResolution" along with "inches", locking in libexif's bundled description text for the ResolutionUnit tag (distinct from previous r20 description coverage of ExposureTime).

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif show-description resolution-unit r21
Log

            
exif --tag=ShutterSpeedValue renders the APEX 1-second equivalent Port / libexif / usage-exif-r21-cli-tag-shutter-speed-apex-value Passed

Runs exif --tag=ShutterSpeedValue --ifd=EXIF on the Canon fixture and asserts the captured detailed output contains the APEX label "0.00 EV" along with "(1 sec.)" - locking in libexif's APEX shutter-speed formatting that pairs an EV value with the equivalent fractional/whole-second exposure on this fixture.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif shutter-speed apex r21
Log

            
exif --xml-output reports MakerNote as 904 bytes of undefined data Port / libexif / usage-exif-r21-cli-xml-maker-note-byte-count Passed

Runs exif --xml-output on the Canon fixture and asserts the captured XML contains the literal "<Maker_Note>904 bytes undefined data</Maker_Note>" element - locking in libexif's XML rendering of MakerNote as an opaque byte blob along with the precise byte count for this fixture, distinct from prior MakerNote source-only and machine-readable coverage.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage exif xml-output maker-note r21
Log

            
exif --ids displays FNumber tag id Port / libexif / usage-exif-r9-cli-ids-fnumber-hex Passed

Calls exif --ids on the fixture and verifies a four-digit hex tag identifier appears alongside FNumber in the rendered table.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata ids
Log

            
exif --list-tags includes IFD 1 thumbnail tags Port / libexif / usage-exif-r9-cli-list-tags-ifd-one Passed

Lists EXIF tag definitions on the fixture and verifies entries that belong to IFD 1 (thumbnail) such as Compression are present.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata ifd
Log

            
exif --list-tags includes Make tag Port / libexif / usage-exif-r9-cli-list-tags-make-tag Passed

Lists EXIF tag definitions in the fixture image with --list-tags and confirms the canonical Make tag entry is present in the output.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata tags
Log

            
exif --machine-readable for ExposureMode Port / libexif / usage-exif-r9-cli-machine-exposure-program Passed

Reads ExposureMode in machine-readable mode and verifies the output is non-empty and lacks the human "Value:" prefix.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata machine-readable
Log

            
exif --no-fixup with Orientation tag Port / libexif / usage-exif-r9-cli-no-fixup-tag-orientation Passed

Runs exif --no-fixup --tag=Orientation on the fixture and confirms the tag value is still rendered without any fixup intervention.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata no-fixup
Log

            
exif --remove with --output writes a JPEG copy Port / libexif / usage-exif-r9-cli-output-copy-bytes-equal Passed

Calls exif --remove --tag=Make --output to produce a modified copy and verifies the new file is a non-empty JPEG that exif can still parse.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata copy
Log

            
exif --show-mnote prints Canon makernote Port / libexif / usage-exif-r9-cli-show-mnote-canon Passed

Runs exif --show-mnote on a Canon makernote fixture and verifies non-empty maker note output is produced.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata makernote
Log

            
exif --tag=ExposureMode reads tag Port / libexif / usage-exif-r9-cli-tag-exposure-program Passed

Reads the ExposureMode EXIF tag from the Canon makernote fixture and verifies a Value field is rendered to stdout.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata
Log

            
exif --version emits a numeric version Port / libexif / usage-exif-r9-cli-version-banner Passed

Runs exif --version and verifies the program writes a major.minor numeric version on stdout.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata version
Log

            
exif --xml-output renders an XML EXIF dump Port / libexif / usage-exif-r9-cli-xml-tag-fnumber-value Passed

Runs exif --xml-output against the fixture and verifies the output is wrapped in <exif>...</exif> root tags carrying recognizable EXIF entries.

Run
Port
Kind
usage
Client
exif
Duration
0.00s
Tags
usage metadata xml
Log

            
CVE-2007-6351 libexif regression Port / libexif / cve-2007-6351 Passed

Asserts that exif_data_new_from_data parses a self-referential IFD pointer chain in bounded time instead of recursing without limit.

Run
Port
Kind
regression
Client
none
Duration
0.00s
Tags
regression cve parser recursion dos
Log

            
CVE-2018-20030 libexif regression Port / libexif / cve-2018-20030 Passed

Asserts that exif_data_new_from_data processes a forest of cross-linked Interoperability and EXIF IFD pointers in bounded time instead of degrading into a CPU-exhaustion traversal.

Run
Port
Kind
regression
Client
none
Duration
0.00s
Tags
regression cve parser dos
Log

            
CVE-2020-0181 libexif regression Port / libexif / cve-2020-0181 Passed

Asserts that exif_data_load_data_thumbnail handles a thumbnail whose declared offset/length combination overflows 32-bit arithmetic without crashing or accessing memory out of range.

Run
Port
Kind
regression
Client
none
Duration
0.00s
Tags
regression cve parser overflow
Log

            
CVE-2020-0198 libexif regression Port / libexif / cve-2020-0198 Passed

Asserts that exif_data_load_data_content rejects an IFD entry whose declared size overflows 32-bit arithmetic without aborting via UBSAN-style abort.

Run
Port
Kind
regression
Client
none
Duration
0.00s
Tags
regression cve parser overflow
Log

            
CVE-2020-12767 libexif regression Port / libexif / cve-2020-12767 Passed

Asserts that exif_entry_get_value handles a rational EXIF tag whose denominator is zero without raising a divide-by-zero exception during value formatting.

Run
Port
Kind
regression
Client
none
Duration
0.00s
Tags
regression cve parser divide-by-zero
Log