blob: f1b25de37367f3ba35a718446397c9ddacae4098 [file] [view]
---
title: Build and Test
sidebar_position: 1
id: index
license: |
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
---
Contributor documentation covers repository setup, builds, tests, debugging, and release-oriented
workflows. It is separate from the user guides for released artifacts.
Clone the source tree from https://github.com/apache/fory.
## Java
```bash
cd java
mvn -T16 package
```
Requirements:
- JDK 17+
- Maven 3.6.3+
## Python
```bash
cd python
pip install -v -e .
# Optional: build Cython extension (replace X.Y with your Python version)
bazel build //:cp_fory_so --@rules_python//python/config_settings:python_version=X.Y
```
Requirements:
- CPython 3.8+
- Bazel 8+ (required when building Cython extensions)
## C++
```bash
cd cpp
bazel build //cpp/...
```
Requirements:
- C++17 compiler
- Bazel 8+
## Go
```bash
cd go/fory
go test -v ./...
```
Run Go xlang tests from the Java test module:
```bash
cd java
mvn -T16 install -DskipTests
cd fory-core
FORY_GO_JAVA_CI=1 ENABLE_FORY_DEBUG_OUTPUT=1 mvn test -Dtest=org.apache.fory.xlang.GoXlangTest
```
Requirement: Go 1.24+.
## Rust
```bash
cd rust
cargo build
cargo test --features tests
# Debug a specific test
RUST_BACKTRACE=1 FORY_PANIC_ON_ERROR=1 ENABLE_FORY_DEBUG_OUTPUT=1 \
cargo test --test mod $dir$::$test_file::$test_method -- --nocapture
```
Requirements:
- Rust toolchain via rustup
- `cargo-expand` (optional, for macro expansion debugging)
## JavaScript
```bash
cd javascript
npm install
npm run build
node ./node_modules/.bin/jest --ci --reporters=default --reporters=jest-junit
```
Requirements:
- Node.js (LTS)
- npm
## Markdown
```bash
cd docs
npx prettier --write "**/*.md"
```
Requirements:
- Node.js (LTS)
- npm
## Debugging
See [Debugging C++](cpp-debugging.md) for the repository's VS Code, Bazel, LLDB, and GDB setup.
Language-specific contributor instructions remain in each language's source tree and contributor
README when they are not part of the shared repository build.
## Contributing
For contribution details, see
[How to contribute to Apache Fory™](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).
For AI-assisted contributions, follow the
[AI Contribution Policy](https://github.com/apache/fory/blob/main/AI_POLICY.md), including the
required self-review, two-reviewer AI review loop, disclosure, and verification evidence for
substantial AI assistance.