Skip to content
Merged
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
4c8292f
:sparkles: add DecodeKind enum to distinguish key and value decoding …
techouse Aug 24, 2025
5e70a47
:sparkles: add Objective-C bridge for DecodeKind enum
techouse Aug 24, 2025
78ec2b4
:sparkles: unify key and value decoding with ScalarDecoder; deprecate…
techouse Aug 24, 2025
2527692
:sparkles: add legacyDecoderBlock to ObjC bridge; update dot-in-keys …
techouse Aug 24, 2025
4e315d5
:bug: fix dot-in-keys decoding to handle top-level dots and bracket d…
techouse Aug 24, 2025
4957840
:white_check_mark: add comprehensive tests for dot-in-keys decoding, …
techouse Aug 24, 2025
665a0fb
:white_check_mark: update charset custom decoder mock to use ScalarDe…
techouse Aug 24, 2025
4be6dfa
:sparkles: add KEY/VALUE-aware decoderBlock to ObjC bridge; update Sw…
techouse Aug 24, 2025
aa9a6f2
:white_check_mark: add tests for decoderBlock invocation, dot-in-keys…
techouse Aug 24, 2025
ed2ca56
:white_check_mark: add comprehensive ObjC example tests for encoding …
techouse Aug 24, 2025
e11c6fa
:white_check_mark: add ObjC encode convenience tests for encodeOrNil …
techouse Aug 24, 2025
918898c
:white_check_mark: add ObjC decode convenience tests for decodeOrNil,…
techouse Aug 24, 2025
abecdda
:white_check_mark: add ObjC async encode tests for main/off-main thre…
techouse Aug 24, 2025
86b7b28
:recycle: refactor bridgeInputForEncode and bridgeUndefinedPreserving…
techouse Aug 24, 2025
9b8aa01
:construction_worker: add Objective-C E2E test workflow for Xcode wit…
techouse Aug 24, 2025
6bdc65e
:green_heart: remove code style check job from CI workflow and add sy…
techouse Aug 24, 2025
3085853
:white_check_mark: rename DecodeOptionsInterplayTests_Parity to Decod…
techouse Aug 24, 2025
70050ef
:bulb: update LegacyDecoderBlock comment to clarify preferred usage o…
techouse Aug 24, 2025
a442bb9
:green_heart: update ObjC E2E test workflow to use quiet xcodebuild a…
techouse Aug 24, 2025
a57f995
:bulb: update DecodeOptions docs to clarify dot decoding in keys and …
techouse Aug 24, 2025
431dd7f
:bulb: clarify dot decoding and depth handling in key segment parsing…
techouse Aug 24, 2025
0f5138f
:bug: fix cycle detection in NSDictionary bridging by ensuring path-l…
techouse Aug 24, 2025
01b1c21
:bug: fix key decoding in NSDictionary bridging to handle non-AnyHash…
techouse Aug 24, 2025
54af497
:white_check_mark: add assertion for error code in cyclic object enco…
techouse Aug 24, 2025
f0e8e52
:white_check_mark: update cyclic object encoding test to use error co…
techouse Aug 24, 2025
530edb3
:bug: make DecodeKindObjC.swift property 'swift' public to fix access…
techouse Aug 24, 2025
3f92e88
:white_check_mark: increase async test timeouts to 2s to improve reli…
techouse Aug 24, 2025
616aa52
:white_check_mark: use QsDecodeKind enum for kind value in decoder bl…
techouse Aug 24, 2025
61462af
:white_check_mark: remove unnecessary __unsafe_unretained qualifier f…
techouse Aug 24, 2025
fdfd551
:white_check_mark: update test comments to clarify disabled cases due…
techouse Aug 24, 2025
47c9171
:fire: remove unused legacy dot-notation regex from Decoder.swift
techouse Aug 24, 2025
338488a
:bug: fix query prefix stripping to only remove leading "?" before br…
techouse Aug 24, 2025
72f990a
:bug: treat empty bracket keys as "0" when list parsing is disabled o…
techouse Aug 24, 2025
601f404
:wastebasket: mark getDecoder(_:charset:) as deprecated in favor of d…
techouse Aug 24, 2025
2ed323a
:construction_worker: add Objective-C code coverage upload and summar…
techouse Aug 24, 2025
98bc59c
:bug: correctly detect bracketed empty keys with encoded brackets in …
techouse Aug 24, 2025
1bc1765
:white_check_mark: fix incorrect maxDepth assertion in depthExceeded …
techouse Aug 24, 2025
397322a
:bug: fix incorrect handling of seen set when encoding arrays with cy…
techouse Aug 24, 2025
94111c9
:bug: fix incorrect removal of seen set entries when decoding cyclic …
techouse Aug 24, 2025
22b731b
:bug: fix incorrect normalization of encoded brackets outside key sli…
techouse Aug 24, 2025
867bf2c
:bulb: clarify handling of '=' after closing bracket in key splitting…
techouse Aug 24, 2025
772fabe
:white_check_mark: add DecodeOptions parity tests for dot decoding an…
techouse Aug 24, 2025
c46aaea
:green_heart: update Codecov upload step to use absolute path and dis…
techouse Aug 24, 2025
4d3316b
:green_heart: grant write permissions to actions in test workflow
techouse Aug 24, 2025
294943f
:bug: fix list limit check to account for current list length when de…
techouse Aug 24, 2025
6c1556c
:green_heart: improve SwiftPM symlink creation and add SPM cache for …
techouse Aug 24, 2025
e2c1f73
:hammer: add script to collect recent macOS crash logs and unified lo…
techouse Aug 24, 2025
0f67a54
:green_heart: refactor CI crash log collection to use shared script f…
techouse Aug 24, 2025
0ee4cc9
:green_heart: set 45 minute timeout for Swift and Objective-C test jo…
techouse Aug 24, 2025
b90d629
:green_heart: remove disable_search flag from Codecov upload step in …
techouse Aug 24, 2025
e2c1e0f
:hammer: skip system crash log copy if non-interactive sudo is unavai…
techouse Aug 24, 2025
2bbbeeb
:hammer: limit crash log directory listing to last 200 entries and ex…
techouse Aug 24, 2025
8adf5d8
:green_heart: update test workflow permissions and improve version re…
techouse Aug 24, 2025
fed074d
:bug: fix list limit check to correctly throw error when limit is exc…
techouse Aug 24, 2025
247d662
:bug: ensure custom decoder preserves element-level nils as NSNull in…
techouse Aug 24, 2025
8768290
:bulb: clarify behavior of numeric entity interpretation for comma-jo…
techouse Aug 24, 2025
2d98abf
:green_heart: zip .xcresult directory and extract coverage JSON for i…
techouse Aug 24, 2025
a84b95e
:green_heart: remove verbose logging and file listing from Objective-…
techouse Aug 24, 2025
3a79386
:green_heart: use dedicated derived data path for Objective-C tests a…
techouse Aug 24, 2025
d7023b6
:green_heart: refresh symlink if target differs and improve artifact …
techouse Aug 24, 2025
7b5c6ab
:green_heart: remove unnecessary actions:write permission from test w…
techouse Aug 24, 2025
853a326
:green_heart: cache SwiftPM artifacts in CI and improve symlink remov…
techouse Aug 24, 2025
3c1b9df
:green_heart: remove unnecessary actions:read permission from test wo…
techouse Aug 24, 2025
9c87640
:green_heart: refuse to remove non-symlink test artifacts and disable…
techouse Aug 24, 2025
7f5197c
:green_heart: remove unnecessary ls command from Objective-C test wor…
techouse Aug 24, 2025
f78aa9a
:green_heart: set fetch-depth to 0 for full git history and cache add…
techouse Aug 24, 2025
3e89fb2
:green_heart: remove debug coverage summary step from Objective-C tes…
techouse Aug 24, 2025
08c384e
:green_heart: improve macOS test bundle signing and add automatic ret…
techouse Aug 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 93 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ on:

permissions:
contents: read
actions: write

concurrency:
group: test-${{ github.ref }}
Expand All @@ -30,7 +31,7 @@ jobs:
xcode: '15.4'
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Select Xcode ${{ matrix.xcode }}
uses: maxim-lobanov/setup-xcode@v1
with:
Expand All @@ -53,7 +54,7 @@ jobs:
xcode: '16.3'
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5

- name: Select Xcode ${{ matrix.xcode }}
uses: maxim-lobanov/setup-xcode@v1
Expand Down Expand Up @@ -123,3 +124,93 @@ jobs:
name: QsSwift-${{ matrix.os }}-swift-${{ matrix.swift }}
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

objc-tests:
name: Objective-C E2E tests (Xcode)
runs-on: ${{ matrix.os }}
needs: tests
strategy:
fail-fast: false
matrix:
include:
- os: macos-15
xcode: '16.3'

steps:
- name: Checkout
uses: actions/checkout@v5

- name: Select Xcode ${{ matrix.xcode }}
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: ${{ matrix.xcode }}

- name: Show Xcode & Swift versions
run: |
xcodebuild -version
swift --version

- name: Resolve SPM dependencies (ObjC test project)
run: |
set -euxo pipefail
xcodebuild \
-project ObjCE2ETests/ObjCE2ETests.xcodeproj \
-scheme ObjCE2ETests \
-resolvePackageDependencies

- name: Run Objective-C tests (macOS)
env:
NSUnbufferedIO: "YES"
run: |
set -euxo pipefail
xcodebuild \
-project ObjCE2ETests/ObjCE2ETests.xcodeproj \
-scheme ObjCE2ETests \
-configuration Debug \
-destination "platform=macOS" \
CODE_SIGNING_ALLOWED=NO \
-resultBundlePath ObjC-Tests.xcresult \
test

- name: Upload ObjC test result bundle
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: ObjC-Tests-xcode-${{ matrix.xcode }}
path: ObjC-Tests.xcresult

- name: Collect macOS crash logs (ObjC job)
if: ${{ failure() }}
run: |
set -euxo pipefail
mkdir -p crashlogs-objc
USER_DR="$HOME/Library/Logs/DiagnosticReports"
SYS_DR="/Library/Logs/DiagnosticReports"
for dir in "$USER_DR" "$SYS_DR"; do
if [ -d "$dir" ]; then
echo "=== Listing $dir ==="
ls -lah "$dir" || true
fi
done
for dir in "$USER_DR" "$SYS_DR"; do
if [ -d "$dir" ]; then
CP="cp"
if [ "$dir" = "$SYS_DR" ]; then CP="sudo cp"; fi
find "$dir" -type f \
\( -name '*.crash' -o -name '*.ips' -o -name '*.hang' -o -name '*.spin' \) \
-mmin -60 -print -exec $CP {} crashlogs-objc/ \; || true
fi
done
/usr/bin/log show --style syslog --last 30m \
--predicate 'eventMessage CONTAINS[c] "xctest" OR process CONTAINS[c] "xctest" OR process CONTAINS[c] "swift"' \
> crashlogs-objc/unified-log.txt 2>/dev/null || true
echo "Collected files:"
ls -lah crashlogs-objc || true

- name: Upload macOS crash logs (ObjC job, if any)
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: macOS-crashlogs-objc-xcode-${{ matrix.xcode }}
path: crashlogs-objc
if-no-files-found: ignore
Loading
Loading