Signed-off-by: cls_宁波本机 <908705107@qq.com>
UIKit media fixtures
These 2 x 2 fixtures were produced on an iOS simulator with UIKit, not by a generic image encoder.
Regeneration
-
Create a small source image and run this program against the simulator SDK:
import Foundation import UIKit let arguments = CommandLine.arguments let source = try Data(contentsOf: URL(fileURLWithPath: arguments[1])) guard let image = UIImage(data: source), let png = image.pngData(), let jpeg = image.jpegData(compressionQuality: 1.0) else { fatalError("UIKit could not encode the source image") } try png.write(to: URL(fileURLWithPath: arguments[2])) try jpeg.write(to: URL(fileURLWithPath: arguments[3]))Compile and run it with the active Xcode toolchain:
SDK_PATH="$(xcrun --sdk iphonesimulator --show-sdk-path)" xcrun --sdk iphonesimulator swiftc \ -sdk "$SDK_PATH" \ -target arm64-apple-ios16.0-simulator \ reencode.swift -o reencode xcrun simctl spawn booted ./reencode \ source.png uikit-encoded.png uikit-encoded.jpg -
Copy the encoded files into both fixture directories:
cp uikit-encoded.png mobile/ios/RunnerTests/Fixtures/UIKitEncoded.png cp uikit-encoded.jpg mobile/ios/RunnerTests/Fixtures/UIKitEncoded.jpg cp uikit-encoded.png crates/buzz-media/tests/fixtures/ios/ cp uikit-encoded.jpg crates/buzz-media/tests/fixtures/ios/ -
Add a temporary Runner test that loads
UIKitEncoded.pngandUIKitEncoded.jpg, callsMediaSanitizer.scrubPngandMediaSanitizer.scrubJpeg, and writes those outputs touikit-sanitized.pnganduikit-sanitized.jpg. Run it once, copy the files here, then remove the temporary test. -
Run
cmpon each encoded copy to confirm that the Runner and Rust fixtures are byte-identical. -
Run
cargo test -p buzz-media test_ios_uikitto verify that UIKit's encoded output is rejected and the matching sanitizer output is accepted by the relay contract.
Regenerate both encoded and sanitized pairs whenever UIKit encoding or MediaSanitizer changes. Do not update only the sanitized files, because the test is intended to cover the exact encoder-to-sanitizer boundary.