use std::fs;
use std::process::Command;
#[tokio::test]
async fn test_config_documentation_alignment() -> anyhow::Result<()> {
let env_example = fs::read_to_string("/Users/ladvien/codex/.env.example")?;
assert!(env_example.contains("Simple Text Storage Service Configuration"));
assert!(env_example.contains(
"5 core tools: store_memory, get_memory, delete_memory, get_statistics, store_file"
));
assert!(env_example.contains("REMOVED FEATURES (for reference):"));
assert!(env_example.contains("Embedding providers"));
assert!(env_example.contains("Memory tier system"));
assert!(env_example.contains("Ollama integration"));
let non_comment_lines: Vec<&str> = env_example
.lines()
.filter(|line| !line.trim().starts_with('#') && !line.trim().is_empty())
.collect();
assert_eq!(
non_comment_lines.len(),
4,
"Should have 4 essential config lines, found: {:?}",
non_comment_lines
);
assert!(env_example.contains("DATABASE_URL="));
assert!(env_example.contains("TEST_DATABASE_URL="));
assert!(env_example.contains("LOG_LEVEL="));
assert!(env_example.contains("MCP_PORT="));
assert!(env_example.contains("85 advanced config lines → 12 essential lines"));
Ok(())
}
#[tokio::test]
async fn test_version_consistency() -> anyhow::Result<()> {
let cargo_toml = fs::read_to_string("/Users/ladvien/codex/Cargo.toml")?;
let cargo_version = cargo_toml
.lines()
.find(|line| line.contains("version = "))
.and_then(|line| line.split('"').nth(1))
.expect("Version should be found in Cargo.toml");
let main_rs = fs::read_to_string("/Users/ladvien/codex/src/main.rs")?;
assert!(main_rs.contains("version = env!(\"CARGO_PKG_VERSION\")"));
assert!(!main_rs.contains("version = \"2.0.0\""));
let mcp_mod = fs::read_to_string("/Users/ladvien/codex/src/mcp_server/mod.rs")?;
assert!(mcp_mod.contains("version\": env!(\"CARGO_PKG_VERSION\")"));
assert!(!mcp_mod.contains("version\": \"2.0.0\""));
let output = Command::new("cargo")
.args(["run", "--bin", "codex-memory", "--", "--version"])
.current_dir("/Users/ladvien/codex")
.output()?;
let version_output = String::from_utf8(output.stdout)?;
assert!(
version_output.contains(cargo_version),
"CLI version output should contain {}, got: {}",
cargo_version,
version_output
);
Ok(())
}
#[tokio::test]
async fn test_migration_system_alignment() -> anyhow::Result<()> {
let database_code = fs::read_to_string("/Users/ladvien/codex/src/database/core.rs")?;
assert!(
!database_code.contains("CREATE TYPE memory_tier AS ENUM"),
"database.rs should not create memory_tier enum that migration 004 removes"
);
assert!(
!database_code.contains("tier memory_tier"),
"table creation should not reference tier column"
);
let migration_004 =
fs::read_to_string("/Users/ladvien/codex/migrations/004_remove_tier_system.sql")?;
assert!(migration_004.contains("DROP TYPE IF EXISTS memory_tier"));
assert!(migration_004.contains("DROP COLUMN IF EXISTS tier"));
assert!(
database_code.contains("tier system removed as of migration 004")
|| database_code.contains("Migration 004")
|| !database_code.contains("tier"),
"database.rs should acknowledge tier system removal"
);
Ok(())
}
#[tokio::test]
async fn test_setup_script_alignment() -> anyhow::Result<()> {
let setup_script = fs::read_to_string("/Users/ladvien/codex/scripts/setup/setup.sh")?;
assert!(setup_script.contains("Simple Text Storage Service Setup"));
assert!(setup_script.contains("Basic MCP Text Storage System"));
assert!(!setup_script.contains("Agentic Memory System"));
assert!(!setup_script.contains("Advanced AI Memory Management"));
assert!(!setup_script.contains("OLLAMA_HOST"));
assert!(!setup_script.contains("ollama pull"));
assert!(!setup_script.contains("Ollama is running"));
assert!(setup_script.contains("cargo run --bin codex setup"));
assert!(setup_script.contains("cargo run --bin codex mcp"));
assert!(setup_script.contains("cargo run --bin codex stats"));
assert!(!setup_script.contains("database setup"));
assert!(!setup_script.contains("models"));
assert!(!setup_script.contains("health --detailed"));
assert!(!setup_script.contains("init-config"));
assert!(setup_script.contains("no Ollama/embedding requirements"));
assert!(setup_script.contains("simplified from advanced system"));
Ok(())
}
#[tokio::test]
async fn test_complete_configuration_alignment() -> anyhow::Result<()> {
let build_output = Command::new("cargo")
.args(["check", "--bin", "codex-memory"])
.current_dir("/Users/ladvien/codex")
.output()?;
assert!(
build_output.status.success(),
"Build should succeed: {}",
String::from_utf8_lossy(&build_output.stderr)
);
let help_output = Command::new("cargo")
.args(["run", "--bin", "codex-memory", "--", "--help"])
.current_dir("/Users/ladvien/codex")
.output()?;
let help_text = String::from_utf8(help_output.stdout)?;
assert!(help_text.contains("Simple text storage service with MCP interface"));
assert!(help_text.contains("codex-memory"));
Ok(())
}
#[tokio::test]
async fn test_env_example_usability() -> anyhow::Result<()> {
let env_example = fs::read_to_string("/Users/ladvien/codex/.env.example")?;
assert!(env_example.contains("DATABASE_URL=postgresql://"));
assert!(env_example.contains("TEST_DATABASE_URL=postgresql://"));
assert!(env_example.contains("LOG_LEVEL=info"));
assert!(env_example.contains("MCP_PORT=3333"));
let active_lines: Vec<&str> = env_example
.lines()
.filter(|line| !line.trim().starts_with('#') && !line.trim().is_empty())
.collect();
for line in &active_lines {
assert!(
!line.contains("OLLAMA"),
"Active config should not reference Ollama: {}",
line
);
assert!(
!line.contains("EMBEDDING"),
"Active config should not reference embeddings: {}",
line
);
assert!(
!line.contains("TIER"),
"Active config should not reference tiers: {}",
line
);
}
Ok(())
}