Spaces:
Running
Running
| import { mkdtemp, mkdir, rm } from "fs/promises" | |
| import os from "os" | |
| import path from "path" | |
| import { DuckDBConnection } from "@duckdb/node-api" | |
| import { describe, expect, it } from "vitest" | |
| import { getModelCardsLiteFromDuckDB } from "../lib/duckdb-data" | |
| function sqlString(value: string) { | |
| return `'${value.replace(/'/g, "''")}'` | |
| } | |
| async function writeParquetPayload(outputDir: string, fileName: string, payloads: unknown[]) { | |
| const parquetDir = path.join(outputDir, "duckdb", "v1") | |
| await mkdir(parquetDir, { recursive: true }) | |
| const selects = payloads | |
| .map((payload) => { | |
| const payloadJson = JSON.stringify(payload) | |
| return `SELECT ${sqlString(payloadJson)} AS payload_json` | |
| }) | |
| .join(" UNION ALL ") | |
| const connection = await DuckDBConnection.create() | |
| await connection.run(`COPY (${selects}) TO ${sqlString(path.join(parquetDir, fileName))} (FORMAT parquet)`) | |
| } | |
| describe("DuckDB local data backend", () => { | |
| it("reads model-card lite payloads from local Parquet", async () => { | |
| const outputDir = await mkdtemp(path.join(os.tmpdir(), "eval-card-duckdb-")) | |
| const previousOutput = process.env.LOCAL_PIPELINE_OUTPUT | |
| try { | |
| process.env.LOCAL_PIPELINE_OUTPUT = outputDir | |
| await writeParquetPayload(outputDir, "model_cards_lite.parquet", [ | |
| { | |
| id: "openai/gpt-5", | |
| route_id: "openai__gpt-5", | |
| model_name: "GPT 5", | |
| model_id: "openai/gpt-5", | |
| canonical_model_name: "GPT 5", | |
| developer: "OpenAI", | |
| evaluations_count: 3, | |
| benchmarks_count: 2, | |
| variant_count: 1, | |
| categories: ["Reasoning"], | |
| category_stats: { General: 0, Reasoning: 2, Agentic: 0, Safety: 0, Knowledge: 0 }, | |
| latest_timestamp: "2026-01-01T00:00:00Z", | |
| evaluator_count: 1, | |
| evaluator_names: ["OpenAI"], | |
| source_type_count: 1, | |
| source_types: ["documentation"], | |
| evidence_count: 3, | |
| missing_generation_config_count: 0, | |
| third_party_eval_count: 0, | |
| independent_verification_ratio: 0, | |
| reproducibility_status: "complete", | |
| eval_libraries: [], | |
| params_billions: 100, | |
| score_summary: { count: 1, min: 0.7, max: 0.9, average: 0.8 }, | |
| benchmark_names: ["mmlu"], | |
| top_scores: [ | |
| { benchmark: "mmlu", score: 0.9, metric: "accuracy" }, | |
| ], | |
| source_urls: [], | |
| detail_urls: [], | |
| }, | |
| ]) | |
| const cards = await getModelCardsLiteFromDuckDB() | |
| expect(cards).toHaveLength(1) | |
| expect(cards[0]).toMatchObject({ | |
| route_id: "openai__gpt-5", | |
| model_name: "GPT 5", | |
| developer: "OpenAI", | |
| evaluations_count: 3, | |
| }) | |
| } finally { | |
| if (previousOutput == null) { | |
| delete process.env.LOCAL_PIPELINE_OUTPUT | |
| } else { | |
| process.env.LOCAL_PIPELINE_OUTPUT = previousOutput | |
| } | |
| await rm(outputDir, { recursive: true, force: true }) | |
| } | |
| }) | |
| it("fails clearly when the expected Parquet file is missing", async () => { | |
| const outputDir = await mkdtemp(path.join(os.tmpdir(), "eval-card-duckdb-missing-")) | |
| const previousOutput = process.env.LOCAL_PIPELINE_OUTPUT | |
| try { | |
| process.env.LOCAL_PIPELINE_OUTPUT = outputDir | |
| await expect(getModelCardsLiteFromDuckDB()).rejects.toThrow( | |
| /duckdb\/v1\/model_cards_lite\.parquet/ | |
| ) | |
| } finally { | |
| if (previousOutput == null) { | |
| delete process.env.LOCAL_PIPELINE_OUTPUT | |
| } else { | |
| process.env.LOCAL_PIPELINE_OUTPUT = previousOutput | |
| } | |
| await rm(outputDir, { recursive: true, force: true }) | |
| } | |
| }) | |
| }) | |