Files
buzz/crates/buzz-media/tests/fixtures/ios
cls 9dfa06ffee
Docker image / Build (linux/amd64) (push) Has been cancelled
Docker image / Build (linux/arm64) (push) Has been cancelled
Docker image / Merge release multi-arch manifest (push) Has been cancelled
Docker image / Merge debug multi-arch manifest (push) Has been cancelled
Docker image / Build public push gateway (linux/amd64) (push) Has been cancelled
Docker image / Build public push gateway (linux/arm64) (push) Has been cancelled
Docker image / Publish public push gateway image (push) Has been cancelled
Sprig image / Build (linux/amd64) (push) Has been cancelled
Sprig image / Build (linux/arm64) (push) Has been cancelled
Sprig image / Merge multi-arch manifest (push) Has been cancelled
Harbor Buzz Orchestra / Python tests and lint (push) Has been cancelled
CI / Detect Changed Paths (push) Has been cancelled
CI / Rust Lint (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Desktop Core (push) Has been cancelled
CI / Desktop Smoke E2E (1) (push) Has been cancelled
CI / Desktop Smoke E2E (2) (push) Has been cancelled
CI / Desktop Smoke E2E (3) (push) Has been cancelled
CI / Desktop Smoke E2E (4) (push) Has been cancelled
CI / Desktop (push) Has been cancelled
CI / Desktop E2E Relay (push) Has been cancelled
CI / Desktop E2E Integration (1/2) (push) Has been cancelled
CI / Desktop E2E Integration (2/2) (push) Has been cancelled
CI / Desktop E2E Integration (push) Has been cancelled
CI / Backend Integration (relay e2e) (push) Has been cancelled
CI / Relay E2E (push) Has been cancelled
CI / Web (push) Has been cancelled
CI / Mobile (push) Has been cancelled
CI / Security (push) Has been cancelled
CI / Dead Token Reference Guard (push) Has been cancelled
CI / Server Cross-Compile (aarch64-unknown-linux-musl) (push) Has been cancelled
CI / Server Cross-Compile (x86_64-unknown-linux-musl) (push) Has been cancelled
CI / Windows Rust (x86_64-pc-windows-msvc) (push) Has been cancelled
CI / Desktop Build (macOS) (push) Has been cancelled
helm chart / lint + unittest + render matrix (push) Has been cancelled
helm chart / install on kind (gated) (push) Has been cancelled
helm chart / publish chart to GHCR (push) Has been cancelled
Mesh Lifecycle / Relay-Driven Mesh Lifecycle Smoke (push) Has been cancelled
Sprig / Build (aarch64-unknown-linux-musl) (push) Has been cancelled
Sprig / Build (x86_64-unknown-linux-musl) (push) Has been cancelled
Sprig / Publish rolling release (push) Has been cancelled
Sprig / Publish tagged release (push) Has been cancelled
feat: import Chinese-localized Buzz source snapshot
Signed-off-by: cls_宁波本机 <908705107@qq.com>
2026-08-13 18:34:25 +08:00
..

UIKit media fixtures

These 2 x 2 fixtures were produced on an iOS simulator with UIKit, not by a generic image encoder.

Regeneration

  1. 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
    
  2. 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/
    
  3. Add a temporary Runner test that loads UIKitEncoded.png and UIKitEncoded.jpg, calls MediaSanitizer.scrubPng and MediaSanitizer.scrubJpeg, and writes those outputs to uikit-sanitized.png and uikit-sanitized.jpg. Run it once, copy the files here, then remove the temporary test.

  4. Run cmp on each encoded copy to confirm that the Runner and Rust fixtures are byte-identical.

  5. Run cargo test -p buzz-media test_ios_uikit to 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.