fix(ci): Fix test type mismatches and remove cargo test --lib

- Fix attention/operators.rs tests: use to_json() for JsonB parameters
- Fix learning/operators.rs tests: correct parameter types for enable_learning, auto_tune, extract_patterns
- Remove cargo test --lib from CI: pg_test tests require pgrx runtime and cause linker errors (undefined PostgreSQL symbols) when compiled outside pgrx test harness

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
rUv 2025-12-26 20:35:35 +00:00
parent 47b6ab7556
commit 3ccd66b381
3 changed files with 18 additions and 13 deletions

View file

@ -179,9 +179,9 @@ jobs:
run: cargo build --no-default-features --features pg${{ matrix.pg_version }} --release
working-directory: crates/ruvector-postgres
- name: Run unit tests
run: cargo test --no-default-features --features pg${{ matrix.pg_version }} --lib -- --nocapture
working-directory: crates/ruvector-postgres
# Note: cargo test --lib is skipped because #[pg_test] tests require PostgreSQL runtime
# and cause linker errors (undefined symbols) when compiled outside pgrx test harness.
# All tests are run via cargo pgrx test instead.
- name: Run pgrx tests
run: cargo pgrx test pg${{ matrix.pg_version }} --no-default-features

View file

@ -332,6 +332,11 @@ pub fn ruvector_attention_scores(
mod tests {
use super::*;
// Helper to convert Vec<Vec<f32>> to JsonB for tests
fn to_json(data: Vec<Vec<f32>>) -> JsonB {
JsonB(serde_json::json!(data))
}
#[pg_test]
fn test_ruvector_attention_score() {
let query = vec![1.0, 0.0, 0.0];
@ -362,8 +367,8 @@ mod tests {
#[pg_test]
fn test_ruvector_multi_head_attention() {
let query = vec![1.0, 0.0, 0.0, 0.0];
let keys = vec![vec![1.0, 0.0, 0.0, 0.0], vec![0.0, 1.0, 0.0, 0.0]];
let values = vec![vec![1.0, 2.0], vec![3.0, 4.0]];
let keys = to_json(vec![vec![1.0, 0.0, 0.0, 0.0], vec![0.0, 1.0, 0.0, 0.0]]);
let values = to_json(vec![vec![1.0, 2.0], vec![3.0, 4.0]]);
let result = ruvector_multi_head_attention(query, keys, values, 2);
@ -375,8 +380,8 @@ mod tests {
#[pg_test]
fn test_ruvector_flash_attention() {
let query = vec![1.0, 0.0, 0.0, 0.0];
let keys = vec![vec![1.0, 0.0, 0.0, 0.0]];
let values = vec![vec![5.0, 10.0]];
let keys = to_json(vec![vec![1.0, 0.0, 0.0, 0.0]]);
let values = to_json(vec![vec![5.0, 10.0]]);
let result = ruvector_flash_attention(query, keys, values, 64);
@ -388,11 +393,11 @@ mod tests {
#[pg_test]
fn test_ruvector_attention_scores() {
let query = vec![1.0, 0.0, 0.0];
let keys = vec![
let keys = to_json(vec![
vec![1.0, 0.0, 0.0],
vec![0.0, 1.0, 0.0],
vec![0.0, 0.0, 1.0],
];
]);
let scores = ruvector_attention_scores(query, keys, "scaled_dot");

View file

@ -433,7 +433,7 @@ mod tests {
#[pg_test]
fn test_auto_tune() {
ruvector_enable_learning("test_autotune", 1000).unwrap();
ruvector_enable_learning("test_autotune", None).unwrap();
// Record some trajectories
for i in 0..10 {
@ -448,14 +448,14 @@ mod tests {
.unwrap();
}
let result = ruvector_auto_tune("test_autotune", "balanced", 1.0);
let result = ruvector_auto_tune("test_autotune", "balanced", None);
assert!(result.is_ok());
}
#[pg_test]
fn test_get_search_params() {
ruvector_enable_learning("test_search_params", 1000).unwrap();
ruvector_enable_learning("test_search_params", None).unwrap();
// Record and extract patterns first
for i in 0..20 {
@ -494,7 +494,7 @@ mod tests {
.unwrap();
}
ruvector_extract_patterns("test_consolidate", Some(10)).unwrap();
ruvector_extract_patterns("test_consolidate", 10).unwrap();
let result = ruvector_consolidate_patterns("test_consolidate", Some(0.95));
assert!(result.is_ok());