Skip to content

Update test dependencies for Xcode 15+ compatibility#295

Closed
augiekim wants to merge 1 commit into
Squirrel:mainfrom
augiekim:chore/update-test-deps
Closed

Update test dependencies for Xcode 15+ compatibility#295
augiekim wants to merge 1 commit into
Squirrel:mainfrom
augiekim:chore/update-test-deps

Conversation

@augiekim
Copy link
Copy Markdown

@augiekim augiekim commented May 2, 2026

Quick 1.x and Nimble 6.x require Swift 3.0, which was dropped in Xcode 15. Update to Quick 5.0.1 + Nimble 9.2.1 — the last versions that maintain full backward compatibility with the Objective-C QuickSpec DSL used throughout the test suite (QuickSpecBegin/End, it, describe, beforeEach, etc.).

  • Cartfile.private: bump Quick ~> 5.0, Nimble ~> 9.0
  • Cartfile.resolved: pin Quick v5.0.1, Nimble v9.2.1
  • Squirrel.xcodeproj: set SWIFT_VERSION = 5.0 (was 3.0) so SwiftSpec.swift and the test target build cleanly under the modern Swift compiler

Quick 1.x and Nimble 6.x require Swift 3.0, which was dropped in Xcode 15.
Update to Quick 5.0.1 + Nimble 9.2.1 — the last versions that maintain full
backward compatibility with the Objective-C QuickSpec DSL used throughout
the test suite (QuickSpecBegin/End, it, describe, beforeEach, etc.).

- Cartfile.private: bump Quick ~> 5.0, Nimble ~> 9.0
- Cartfile.resolved: pin Quick v5.0.1, Nimble v9.2.1
- Squirrel.xcodeproj: set SWIFT_VERSION = 5.0 (was 3.0) so SwiftSpec.swift
  and the test target build cleanly under the modern Swift compiler

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
MarshallOfSound added a commit that referenced this pull request May 2, 2026
)

The test suite hasn't built in years (Swift 3, Quick 1.x, Xcode 9-era
deps). This gets it green on modern Xcode without touching anything in
`Squirrel/`.

#### Dependency / toolchain bumps
- Quick `1.1.0` → `5.0.1`, Nimble `6.1.0` → `9.2.1` — last versions that
keep the ObjC `QuickSpecBegin/End` DSL working (ref:
#295)
- `SWIFT_VERSION` `3.0` → `5.0`
- `MACOSX_DEPLOYMENT_TARGET` → `10.13` (libarclite no longer ships for
10.8/10.9)
- `GCC_TREAT_WARNINGS_AS_ERRORS = NO` at the project level — vendored
ReactiveCocoa 2.x trips `-Wimplicit-const-int-float-conversion` on
modern clang

#### Test fixtures
- TestApplication now ad-hoc signs instead of requiring the GitHub
`C4RRYD56A6` team cert
- New `script/sign-test-fixtures` build phase regenerates
`TestApplication 2.1.app` + `TestApplication.app.zip` from the
freshly-built TestApplication and signs both with an explicit designated
requirement so `SQRLCodeSignature` cross-validates on any host

#### Spec updates
- `QuickSpec+SQRLFixtures`: `Configuration` → `QCKConfiguration`,
`qck_beforeSuite`, `before/afterEachWithMetadata:` (Quick 5 ObjC API)
- `SQRLDirectoryManagerSpec`: derive expected identifier from the host
bundle (xctest has its own bundle id now)
- `SQRLUpdaterSpec`: write update zips to a per-test temp dir
(NSItemReplacementDirectory is sandboxed away from the launched
TestApplication on modern macOS), fix env-var typing for NSWorkspace,
swizzle `isRunningOnReadOnlyVolume` under the xctest CLI host, `xit` the
prune-after-update test (behavior intentionally removed in 7dffc4b /
#174)
- Disabled the manual `SQUIRREL_TEST_LOCAL_SERVER` / `_CDN` scheme env
vars by default — they swizzle `updateFromJSONData:` and never restore
it

#### CI
- New `.github/workflows/ci.yml`: checkout w/ recursive submodules →
build → `script/test`, piped through xcbeautify
- Dropped `.travis.yml`, `script/certs.p12`, and the keychain import
from `script/cibuild`

#### Result
56 tests, 0 failures.

> [!NOTE]
> The xcodebuild path here still links against ReactiveCocoa 2.5 /
Mantle 1.5, **not** the ReactiveObjC / Mantle 2.2 that Electron actually
builds via GN + patches. Aligning those is a separate (larger) job.
@MarshallOfSound
Copy link
Copy Markdown
Collaborator

I think superseded by #296

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants