mirror of
https://github.com/logos-messaging/libchat.git
synced 2026-03-26 22:23:14 +00:00
Add nim-bindings/tests/test_all_endpoints.nim which imports bindings directly and calls every FFI proc, forcing the linker to include all symbols. This catches link-time and runtime issues that the pingpong example missed because unused symbols were optimised out. Running the new test revealed an ABI mismatch in installation_name: the Rust function used an explicit out-parameter but ReprCString has only flat fields, so Nim emits it as a C return value. CI now runs nimble test next to nimble pingpong.
31 lines
722 B
Nim
31 lines
722 B
Nim
# Package
|
|
|
|
version = "0.1.0"
|
|
author = "libchat"
|
|
description = "Nim Bindings for LibChat"
|
|
license = "MIT"
|
|
srcDir = "src"
|
|
bin = @["libchat"]
|
|
|
|
|
|
# Dependencies
|
|
|
|
requires "nim >= 2.2.4"
|
|
requires "results"
|
|
|
|
proc buildRust() =
|
|
exec "cargo build --release --manifest-path ../Cargo.toml"
|
|
|
|
|
|
# Build Rust library before compiling Nim
|
|
before build:
|
|
buildRust()
|
|
|
|
task pingpong, "Run pingpong example":
|
|
buildRust()
|
|
exec "nim c -r --path:src --passL:../target/release/liblibchat.a --passL:-lm examples/pingpong.nim"
|
|
|
|
task test, "Run comprehensive all-endpoints test":
|
|
buildRust()
|
|
exec "nim c -r --path:src --passL:../target/release/liblibchat.a --passL:-lm tests/test_all_endpoints.nim"
|