SPB Git

spb/autoscholar

Public
2.1 KB · 38 lines typescript
1import { mkdtemp, rm } from "node:fs/promises";2import { tmpdir } from "node:os";3import { join } from "node:path";4import { resetEnvCache } from "@autoscholar/core";5import { closeDb, type Db, getDb } from "@autoscholar/db";6import { runMigrations } from "@autoscholar/db/migrate";7import { FilesystemStorage } from "@autoscholar/storage";8import { sql } from "drizzle-orm";910export const TEST_DB_URL = process.env.TEST_DATABASE_URL ?? "postgresql://localhost:5432/autoscholar_test";1112export async function setupTestEnv(): Promise<{ db: Db; storage: FilesystemStorage; root: string }> {13  const root = await mkdtemp(join(tmpdir(), "as-int-"));14  process.env.DATABASE_URL = TEST_DB_URL;15  process.env.ARTIFACT_ROOT = root;16  process.env.SESSION_SECRET = "x".repeat(48);17  process.env.ADMIN_BOOTSTRAP_PASSWORD = "admin123";18  process.env.WORKER_ENROLLMENT_SECRET = "enroll-secret-for-tests-0001";19  process.env.LEASE_TTL_SECONDS = "30";20  process.env.NODE_ENV = "test";21  process.env.STAGING_MODE = "1";22  resetEnvCache();23  await closeDb();24  const db = getDb(TEST_DB_URL);25  await runMigrations(TEST_DB_URL);26  await db.execute(27    sql`truncate table papers, paper_versions, research_runs, research_projects, project_instruction_versions, compute_workers, admin_users, sessions, audit_events, security_events, login_attempts, platform_settings, paper_sequences, topics, series, research_templates restart identity cascade`,28  );29  return { db, storage: new FilesystemStorage(root), root };30}3132export async function teardownTestEnv(root: string) {33  await closeDb();34  await rm(root, { recursive: true, force: true });35}3637export const GOOD_INSTRUCTION = `---\nmode: theoretical\n---\n# Objective\nProve a small bound.\n## Domain and mode\nMathematics, theoretical.\n## Contribution\nA clean proof.\n## Literature\narXiv search.\n## Evidence\nProof only.\n## Procedure\nDerive.\n## Robustness\nCounterexamples.\n## Reproducibility\nSympy check.\n## Manuscript\nAutoScholar class.\n## Review\nStrict.\n## Limitations and ethics\nNone.\n## Acceptance criteria\nProof complete.\n${"detail ".repeat(100)}`;38
Files · 0d8280a29f83e41fbeda1fded3fa94709eba2e7d
Menu

Theme