Skip to content

Commit

Permalink
Add test on IOS
Browse files Browse the repository at this point in the history
  • Loading branch information
stormshield-gt committed Aug 23, 2024
1 parent 626e33c commit d23bbde
Show file tree
Hide file tree
Showing 4 changed files with 99 additions and 6 deletions.
15 changes: 14 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,20 @@ jobs:
./android/emulator.log
/Users/runner/work/rustls-platform-verifier/rustls-platform-verifier/android/rustls-platform-verifier/build/outputs/androidTest-results/connected/test-result.pb
# TODO: Test iOS in CI too.
test-ios-aarch64:
name: Test (iOS)
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
id: toolchain
with:
toolchain: stable
target: aarch64-apple-ios-sim
- name: Install bash
run: brew install bash
- name: iOS Simulator Runner
run: ./ci/ios-simulator-runner.sh

test-freebsd:
name: Test (FreeBSD)
Expand Down
83 changes: 83 additions & 0 deletions ci/ios-simulator-runner.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
#!/usr/bin/env bash
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0 OR ISC

set -e

REPO_ROOT=$(git rev-parse --show-toplevel)

SIM_IMAGE_LIST_PATH='/Library/Developer/CoreSimulator/Images/images.plist'
SIM_IMAGE_MOUNT_BASE='/Volumes'
SIM_IMAGE_PATTERN='iOS-17'

if [[ ! -r "${SIM_IMAGE_LIST_PATH}" ]]; then
echo ERROR: Image list not found: "${SIM_IMAGE_LIST_PATH}"
exit 1
fi

function plist_count_images() {
plutil -extract 'images' raw "${SIM_IMAGE_LIST_PATH}" -o -
}

function plist_image_id_for() {
plutil -extract "images.${1}.runtimeInfo.bundleIdentifier" raw "${SIM_IMAGE_LIST_PATH}" -o -
}

function plist_image_path_for() {
plutil -extract "images.${1}.path.relative" raw "${SIM_IMAGE_LIST_PATH}" -o - | sed -e 's/^file:\/\///'
}

function plist_image_build_for() {
plutil -extract "images.${1}.runtimeInfo.build" raw "${SIM_IMAGE_LIST_PATH}" -o -
}

function find_mount() {
hdiutil info | grep -s "${1}"
}

function find_runtime_root() {
find "${1}" -type d -name "RuntimeRoot" |head -n 1
}


IMAGE_LIST_SIZE=$(plist_count_images)
IMAGE_LIST_LAST_IDX=$(( "${IMAGE_LIST_SIZE}" - 1 ))
IMAGE_PATH=''
IMAGE_BUILD=''


for i in $(seq 0 "${IMAGE_LIST_LAST_IDX}"); do
if [[ $(plist_image_id_for "${i}") == *"${SIM_IMAGE_PATTERN}"* ]]; then
IMAGE_PATH=$(plist_image_path_for "${i}")
IMAGE_BUILD=$(plist_image_build_for "${i}")
fi
done

if [[ -z ${IMAGE_PATH} ]]; then
echo ERROR: ${SIM_IMAGE_PATTERN} image not found.
exit 1
fi

IMAGE_MOUNT_POINT="${SIM_IMAGE_MOUNT_BASE}/iOS_${IMAGE_BUILD}"

if ! find_mount "${IMAGE_MOUNT_POINT}"; then
sudo hdiutil attach "${IMAGE_PATH}" -mountpoint "${IMAGE_MOUNT_POINT}"
fi

if ! find_mount "${IMAGE_MOUNT_POINT}"; then
echo ERROR: Unable to mount runtime
exit 1
fi

DYLD_ROOT_PATH=''
DYLD_ROOT_PATH=$(find_runtime_root "${IMAGE_MOUNT_POINT}")

if [[ -z "${DYLD_ROOT_PATH}" ]]; then
echo ERROR: RuntimeRoot not found: "${IMAGE_MOUNT_POINT}"
exit 1
fi

export DYLD_ROOT_PATH
cd "${REPO_ROOT}"/rustls-platform-verifier

cargo test --target aarch64-apple-ios-sim -vv
1 change: 1 addition & 0 deletions rustls-platform-verifier/src/tests/ffi.rs
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ mod dummy {
windows,
target_os = "android",
target_os = "macos",
target_os = "ios",
target_os = "linux"
))]
let _ = tests::verification_mock::ALL_TEST_CASES;
Expand Down
6 changes: 1 addition & 5 deletions rustls-platform-verifier/src/tests/verification_mock/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,7 @@
//! any parts of the system outside of these tests. See the `#![cfg(...)]`
//! immediately below to see which platforms run these tests.
#![cfg(all(
any(windows, unix, target_os = "android"),
not(target_os = "ios"),
not(target_os = "tvos")
))]
#![cfg(all(any(windows, unix, target_os = "android"), not(target_os = "tvos")))]

use super::TestCase;
use crate::tests::{assert_cert_error_eq, ensure_global_state, verification_time};
Expand Down

0 comments on commit d23bbde

Please sign in to comment.