Skip to content

Commit 8845190

Browse files
authored
Merge branch 'main' into issue-3409-size-guardrails
2 parents 9623884 + 22bae97 commit 8845190

551 files changed

Lines changed: 51115 additions & 7844 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 222 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,171 @@ jobs:
142142
shell: bash
143143
run: python ./ci/run_ci.py java --version windows_java21
144144

145+
csharp:
146+
name: C# CI
147+
runs-on: ubuntu-latest
148+
steps:
149+
- uses: actions/checkout@v5
150+
- name: Set up .NET 8
151+
uses: actions/setup-dotnet@v4
152+
with:
153+
dotnet-version: "8.0.x"
154+
cache: true
155+
cache-dependency-path: |
156+
csharp/**/*.csproj
157+
csharp/Fory.sln
158+
- name: Restore C# dependencies
159+
run: |
160+
cd csharp
161+
dotnet restore Fory.sln
162+
- name: Build C# solution
163+
run: |
164+
cd csharp
165+
dotnet build Fory.sln -c Release --no-restore
166+
- name: Run C# tests
167+
run: |
168+
cd csharp
169+
dotnet test tests/Fory.Tests/Fory.Tests.csproj -c Release --no-build
170+
- name: Verify C# format
171+
run: |
172+
cd csharp
173+
dotnet format Fory.sln --verify-no-changes \
174+
--exclude src/Fory.Generator/AnalyzerReleases.Shipped.md \
175+
--exclude src/Fory.Generator/AnalyzerReleases.Unshipped.md
176+
177+
csharp_xlang:
178+
name: C# Xlang Test
179+
runs-on: ubuntu-latest
180+
steps:
181+
- uses: actions/checkout@v5
182+
- name: Set up Python 3.11
183+
uses: actions/setup-python@v5
184+
with:
185+
python-version: 3.11
186+
- name: Set up .NET 8
187+
uses: actions/setup-dotnet@v4
188+
with:
189+
dotnet-version: "8.0.x"
190+
cache: true
191+
cache-dependency-path: |
192+
csharp/**/*.csproj
193+
csharp/Fory.sln
194+
- name: Set up JDK 21
195+
uses: actions/setup-java@v4
196+
with:
197+
java-version: 21
198+
distribution: "temurin"
199+
- name: Cache Maven local repository
200+
uses: actions/cache@v4
201+
with:
202+
path: ~/.m2/repository
203+
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
204+
restore-keys: |
205+
${{ runner.os }}-maven-
206+
- name: Restore and build C# xlang peer
207+
run: |
208+
cd csharp
209+
dotnet restore tests/Fory.XlangPeer/Fory.XlangPeer.csproj
210+
dotnet build tests/Fory.XlangPeer/Fory.XlangPeer.csproj -c Debug --no-restore
211+
- name: Run C# Xlang Test
212+
env:
213+
FORY_CSHARP_JAVA_CI: "1"
214+
ENABLE_FORY_DEBUG_OUTPUT: "1"
215+
run: |
216+
cd java
217+
mvn -T16 --no-transfer-progress clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true
218+
cd fory-core
219+
mvn -T16 --no-transfer-progress test -Dtest=org.apache.fory.xlang.CSharpXlangTest
220+
- name: Run C# IDL Tests
221+
run: ./integration_tests/idl_tests/run_csharp_tests.sh
222+
223+
swift:
224+
name: Swift CI
225+
runs-on: macos-latest
226+
steps:
227+
- uses: actions/checkout@v5
228+
- name: Run Swift unit tests
229+
run: |
230+
cd swift
231+
swift test
232+
- name: Run SwiftLint check
233+
run: |
234+
if ! command -v swiftlint >/dev/null; then
235+
brew install swiftlint
236+
fi
237+
cd swift
238+
swiftlint lint --config .swiftlint.yml
239+
240+
swift_xlang:
241+
name: Swift Xlang Test
242+
runs-on: macos-latest
243+
steps:
244+
- uses: actions/checkout@v5
245+
- name: Set up Python 3.11
246+
uses: actions/setup-python@v5
247+
with:
248+
python-version: 3.11
249+
- name: Set up JDK 21
250+
uses: actions/setup-java@v4
251+
with:
252+
java-version: 21
253+
distribution: "temurin"
254+
- name: Cache Maven local repository
255+
uses: actions/cache@v4
256+
with:
257+
path: ~/.m2/repository
258+
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
259+
restore-keys: |
260+
${{ runner.os }}-maven-
261+
- name: Cache Swift package dependencies and build artifacts
262+
uses: actions/cache@v4
263+
with:
264+
path: |
265+
~/.swiftpm
266+
~/Library/Caches/org.swift.swiftpm
267+
swift/.build
268+
key: ${{ runner.os }}-${{ runner.arch }}-swiftpm-${{ hashFiles('swift/Package.resolved', 'swift/Package.swift', 'swift/Sources/**') }}
269+
restore-keys: |
270+
${{ runner.os }}-${{ runner.arch }}-swiftpm-
271+
- name: Prebuild Swift xlang peer for cache reuse
272+
run: |
273+
cd swift
274+
swift build -c release --disable-automatic-resolution --product ForyXlangTests
275+
- name: Run Swift Xlang Test
276+
env:
277+
ENABLE_FORY_DEBUG_OUTPUT: "1"
278+
FORY_SWIFT_JAVA_CI: "1"
279+
run: |
280+
cd java
281+
mvn -T16 --no-transfer-progress clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true
282+
cd fory-core
283+
mvn -T16 --no-transfer-progress test -Dtest=org.apache.fory.xlang.SwiftXlangTest
284+
- name: Generate Swift IDL test code
285+
run: python ./integration_tests/idl_tests/generate_idl.py --lang swift
286+
- name: Cache Swift IDL package build artifacts
287+
uses: actions/cache@v4
288+
with:
289+
path: |
290+
integration_tests/idl_tests/swift/idl_package/.build
291+
integration_tests/idl_tests/swift/idl_package/.swiftpm
292+
key: ${{ runner.os }}-${{ runner.arch }}-swift-idl-package-${{ hashFiles('integration_tests/idl_tests/swift/idl_package/Package.swift', 'integration_tests/idl_tests/swift/idl_package/Package.resolved', 'swift/Package.swift', 'swift/Package.resolved', 'swift/Sources/ForyMacro/**') }}
293+
restore-keys: |
294+
${{ runner.os }}-${{ runner.arch }}-swift-idl-package-
295+
- name: Prebuild Swift IDL package
296+
run: |
297+
cd integration_tests/idl_tests/swift/idl_package
298+
swift build --disable-automatic-resolution --build-tests
299+
- name: Run Swift IDL package tests
300+
env:
301+
ENABLE_FORY_DEBUG_OUTPUT: "1"
302+
run: |
303+
cd integration_tests/idl_tests/swift/idl_package
304+
swift test --disable-automatic-resolution --skip-build
305+
- name: Run Java IDL tests against Swift peer
306+
env:
307+
IDL_PEER_LANG: "swift"
308+
run: ./integration_tests/idl_tests/run_java_tests.sh
309+
145310
graalvm:
146311
name: GraalVM CI
147312
runs-on: ubuntu-latest
@@ -220,9 +385,9 @@ jobs:
220385
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
221386
restore-keys: |
222387
${{ runner.os }}-maven-
223-
- uses: sbt/setup-sbt@v1
388+
- uses: sbt/setup-sbt@1cad58d595b729a71ca2254cdf5b43dd6f42d4bb # v1.1.18
224389
- name: Install fory java
225-
run: cd java && mvn -T10 --no-transfer-progress clean install -DskipTests && cd -
390+
run: cd java && mvn -T10 --no-transfer-progress clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true && cd -
226391
- name: Test
227392
run: |
228393
cd scala && sbt +test && cd -
@@ -255,7 +420,7 @@ jobs:
255420
name: JavaScript CI
256421
strategy:
257422
matrix:
258-
node-version: [18, 20, 24]
423+
node-version: [18, 24]
259424
os: [ubuntu-latest, macos-latest, windows-latest]
260425
runs-on: ${{ matrix.os }}
261426
steps:
@@ -281,6 +446,47 @@ jobs:
281446
- name: Run CI with NodeJS
282447
run: python ./ci/run_ci.py javascript
283448

449+
javascript_xlang:
450+
name: JavaScript Xlang Test
451+
runs-on: ubuntu-latest
452+
steps:
453+
- uses: actions/checkout@v5
454+
- name: Use Node.js 20.x
455+
uses: actions/setup-node@v4
456+
with:
457+
node-version: 20.x
458+
- name: Set up JDK 21
459+
uses: actions/setup-java@v4
460+
with:
461+
java-version: 21
462+
distribution: "temurin"
463+
- name: Cache Maven local repository
464+
uses: actions/cache@v4
465+
with:
466+
path: ~/.m2/repository
467+
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
468+
restore-keys: |
469+
${{ runner.os }}-maven-
470+
- name: Cache npm local repository
471+
uses: actions/cache@v4
472+
with:
473+
path: ~/.npm
474+
key: ${{ runner.os }}-npm-${{ hashFiles('javascript/package-lock.json') }}
475+
restore-keys: |
476+
${{ runner.os }}-npm-
477+
- name: Install JavaScript dependencies
478+
run: |
479+
cd javascript
480+
npm install
481+
- name: Run JavaScript Xlang Test
482+
env:
483+
FORY_JAVASCRIPT_JAVA_CI: "1"
484+
run: |
485+
cd java
486+
mvn -T16 --no-transfer-progress clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true
487+
cd fory-core
488+
mvn --no-transfer-progress test -Dtest=org.apache.fory.xlang.JavaScriptXlangTest -DforkCount=0
489+
284490
rust:
285491
name: Rust CI
286492
strategy:
@@ -336,7 +542,7 @@ jobs:
336542
ENABLE_FORY_DEBUG_OUTPUT: "1"
337543
run: |
338544
cd java
339-
mvn -T16 --no-transfer-progress clean install -DskipTests
545+
mvn -T16 --no-transfer-progress clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true
340546
cd fory-core
341547
mvn -T16 --no-transfer-progress test -Dtest=org.apache.fory.xlang.RustXlangTest
342548
- name: Run Rust IDL Tests
@@ -434,44 +640,12 @@ jobs:
434640
ENABLE_FORY_DEBUG_OUTPUT: "1"
435641
run: |
436642
cd java
437-
mvn -T16 --no-transfer-progress clean install -DskipTests
643+
mvn -T16 --no-transfer-progress clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true
438644
cd fory-core
439645
mvn -T16 --no-transfer-progress test -Dtest=org.apache.fory.xlang.CPPXlangTest
440646
- name: Run C++ IDL Tests
441647
run: ./integration_tests/idl_tests/run_cpp_tests.sh
442648

443-
javascript_xlang:
444-
name: JavaScript Xlang Test
445-
runs-on: ubuntu-latest
446-
steps:
447-
- uses: actions/checkout@v5
448-
- name: Use Node.js 20.x
449-
uses: actions/setup-node@v4
450-
with:
451-
node-version: 20.x
452-
- name: Set up JDK 21
453-
uses: actions/setup-java@v4
454-
with:
455-
java-version: 21
456-
distribution: "temurin"
457-
- name: Cache Maven local repository
458-
uses: actions/cache@v4
459-
with:
460-
path: ~/.m2/repository
461-
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
462-
restore-keys: |
463-
${{ runner.os }}-maven-
464-
- name: Run JavaScript Xlang Test
465-
env:
466-
FORY_JAVASCRIPT_JAVA_CI: "0"
467-
run: |
468-
cd javascript
469-
npm install
470-
cd ../java
471-
mvn -T16 --no-transfer-progress clean install -DskipTests
472-
cd fory-core
473-
mvn -T16 --no-transfer-progress test -Dtest=org.apache.fory.xlang.JavaScriptXlangTest
474-
475649
cpp_examples:
476650
name: C++ Examples
477651
runs-on: ubuntu-latest
@@ -598,7 +772,7 @@ jobs:
598772
ENABLE_FORY_DEBUG_OUTPUT: "1"
599773
run: |
600774
cd java
601-
mvn -T16 --no-transfer-progress clean install -DskipTests
775+
mvn -T16 --no-transfer-progress clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true
602776
cd fory-core
603777
mvn -T16 --no-transfer-progress test -Dtest=org.apache.fory.xlang.PythonXlangTest
604778
mvn -T16 --no-transfer-progress test -Dtest=org.apache.fory.xlang.PyCrossLanguageTest
@@ -673,7 +847,7 @@ jobs:
673847
ENABLE_FORY_DEBUG_OUTPUT: "1"
674848
run: |
675849
cd java
676-
mvn -T16 --no-transfer-progress clean install -DskipTests
850+
mvn -T16 --no-transfer-progress clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true
677851
cd fory-core
678852
mvn -T16 --no-transfer-progress test -Dtest=org.apache.fory.xlang.GoXlangTest
679853
- name: Run Go IDL Tests
@@ -708,13 +882,17 @@ jobs:
708882
run: |
709883
cd dart
710884
dart pub get
885+
- name: Generate Dart code
886+
run: |
887+
cd dart/packages/fory-test
888+
dart run build_runner build --delete-conflicting-outputs
711889
- name: Run Dart Xlang Test
712890
env:
713891
FORY_DART_JAVA_CI: "1"
714892
ENABLE_FORY_DEBUG_OUTPUT: "1"
715893
run: |
716894
cd java
717-
mvn -T16 --no-transfer-progress clean install -DskipTests
895+
mvn -T16 --no-transfer-progress clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true
718896
cd fory-core
719897
mvn -T16 --no-transfer-progress test -Dtest=org.apache.fory.xlang.DartXlangTest
720898
@@ -770,6 +948,10 @@ jobs:
770948
uses: actions/setup-python@v5
771949
with:
772950
python-version: 3.8
951+
- name: Set up .NET 8
952+
uses: actions/setup-dotnet@v4
953+
with:
954+
dotnet-version: "8.0.x"
773955
- name: Use Node.js 20.x
774956
uses: actions/setup-node@v4
775957
with:

.gitignore

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,4 +105,18 @@ examples/cpp/cmake_example/build
105105
benchmarks/**/report/
106106
ignored/**
107107
ci-logs/**
108-
**/*.log
108+
**/*.log
109+
swift/.build
110+
integration_tests/idl_tests/swift/.build
111+
integration_tests/idl_tests/swift/idl_package/.build
112+
113+
csharp/src/Fory.Generator/bin/
114+
csharp/src/Fory.Generator/obj/
115+
csharp/src/Fory/bin/
116+
csharp/src/Fory/obj/
117+
csharp/tests/Fory.Tests/bin/
118+
csharp/tests/Fory.Tests/obj/
119+
csharp/tests/Fory.XlangPeer/bin/
120+
csharp/tests/Fory.XlangPeer/obj/
121+
122+
tasks/

0 commit comments

Comments
 (0)