{"id":20944245,"url":"https://github.com/hotkit/test-ios","last_synced_at":"2026-04-30T05:38:02.718Z","repository":{"id":142377505,"uuid":"179244051","full_name":"hotkit/test-ios","owner":"hotkit","description":"Fost iOS test runner","archived":false,"fork":false,"pushed_at":"2020-07-08T06:02:27.000Z","size":552,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-13T04:16:05.649Z","etag":null,"topics":["cpp17","fost","ios","tests"],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hotkit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE_1_0.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-04-03T08:22:22.000Z","updated_at":"2023-11-09T16:30:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"ad6c2fe9-a4fd-4fbb-b6c7-2010e906469e","html_url":"https://github.com/hotkit/test-ios","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hotkit/test-ios","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hotkit%2Ftest-ios","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hotkit%2Ftest-ios/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hotkit%2Ftest-ios/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hotkit%2Ftest-ios/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hotkit","download_url":"https://codeload.github.com/hotkit/test-ios/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hotkit%2Ftest-ios/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32456167,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T22:27:22.272Z","status":"online","status_checked_at":"2026-04-30T02:00:05.929Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp17","fost","ios","tests"],"created_at":"2024-11-18T23:39:48.970Z","updated_at":"2026-04-30T05:38:02.692Z","avatar_url":"https://github.com/hotkit.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# iOS Test Runner\n\nThis iOS application is intended to run the Fost unit tests. It is similar to the [Android version](https://github.com/KayEss/test-android) that does the same thing.\n\n\n    git clone --recursive git@github.com:KayEss/test-ios.git\n    ./test-ios/cpp/refresh\n\nOpening the project in Xcode and it should build. You will have to set a team if you're building for a real device rather than the simulator.\n\n\n## How it works\n\nThe application is a standard Swift application that makes use of a separate project for building the C++ code which is created by CMake.\n\n\n### Bridging header\n\nThere is a bridging header in the iOS application. This contains the definitions of the API usable by Swift from the C++ code. The bridging header needs to be both C and C++ compatible (on the Swift side it'll be treated as C code). Because there's no way to give memory to the Swift run time from C++ the implementation of the bridging code sits in an Objective-C++ file, `native.mm`, because we can give the Swift run time an `NSString`.\n\n\n### Build phases\n\nAll libraries are built statically. This is because Xcode and CMake don't agree on where libraries need to be. If we try to make the native library a shared library then CMake will try to link the archive files from the wrong path and the link fails. By setting the link up on the iOS application side Xcode is used to find the archives and it knows where they are.\n\nThis also means that all of the libraries need to be configured by hand in the Xcode configuration. Thankfully only the native target needs to be added to the \"Target Dependencies\" because the CMake build will produce the right set of libraries as it understands the library dependency graph.\n\n\n## Troubleshooting\n\n* If you get \"unkown project reference\" errors on the _iOS Test Runner_ project then:\n    1. From the _Product_ menu choose _Clean Build Folder_\n    2. Exit Xcode\n    3. `git stash` or `git reset --hard` to get the project back into a known state\n    4. Re-run `./cpp/refresh`\n    5. Open Xcode again\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhotkit%2Ftest-ios","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhotkit%2Ftest-ios","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhotkit%2Ftest-ios/lists"}