use claude_core::ClaudePaths;
#[test]
fn paths_new_returns_some_with_home()
{
std::env::set_var( "HOME", "/tmp/test_home" );
assert!( ClaudePaths::new().is_some(), "expected Some when HOME is set" );
}
#[test]
fn paths_base_ends_with_dot_claude()
{
std::env::set_var( "HOME", "/tmp/test_home" );
let p = ClaudePaths::new().expect( "HOME is set" );
assert!(
p.base().ends_with( ".claude" ),
"base must be $HOME/.claude, got: {}",
p.base().display()
);
}
#[test]
fn paths_credentials_file_correct()
{
std::env::set_var( "HOME", "/tmp/test_home" );
let p = ClaudePaths::new().expect( "HOME is set" );
let f = p.credentials_file();
assert!(
f.ends_with( ".claude/.credentials.json" ),
"expected .claude/.credentials.json, got: {}",
f.display()
);
}
#[test]
fn paths_projects_dir_correct()
{
std::env::set_var( "HOME", "/tmp/test_home" );
let p = ClaudePaths::new().expect( "HOME is set" );
let d = p.projects_dir();
assert!(
d.ends_with( ".claude/projects" ),
"expected .claude/projects, got: {}",
d.display()
);
}
#[test]
fn paths_stats_file_correct()
{
std::env::set_var( "HOME", "/tmp/test_home" );
let p = ClaudePaths::new().expect( "HOME is set" );
let f = p.stats_file();
assert!(
f.ends_with( ".claude/stats-cache.json" ),
"expected .claude/stats-cache.json, got: {}",
f.display()
);
}
#[test]
fn paths_settings_file_correct()
{
std::env::set_var( "HOME", "/tmp/test_home" );
let p = ClaudePaths::new().expect( "HOME is set" );
let f = p.settings_file();
assert!(
f.ends_with( ".claude/settings.json" ),
"expected .claude/settings.json, got: {}",
f.display()
);
}
#[test]
fn paths_session_env_dir_correct()
{
std::env::set_var( "HOME", "/tmp/test_home" );
let p = ClaudePaths::new().expect( "HOME is set" );
let d = p.session_env_dir();
assert!(
d.ends_with( ".claude/session-env" ),
"expected .claude/session-env, got: {}",
d.display()
);
}
#[test]
fn paths_sessions_dir_correct()
{
std::env::set_var( "HOME", "/tmp/test_home" );
let p = ClaudePaths::new().expect( "HOME is set" );
let d = p.sessions_dir();
assert!(
d.ends_with( ".claude/sessions" ),
"expected .claude/sessions, got: {}",
d.display()
);
}
#[test]
fn paths_rooted_at_provided_home()
{
std::env::set_var( "HOME", "/custom/home" );
let p = ClaudePaths::new().expect( "HOME is set" );
let base = p.base().to_str().expect( "valid UTF-8 path" );
assert!(
base.starts_with( "/custom/home" ),
"paths must be rooted at the provided HOME, got: {base}"
);
}
#[test]
fn paths_claude_json_file_correct()
{
std::env::set_var( "HOME", "/tmp/test_home" );
let p = ClaudePaths::new().expect( "HOME is set" );
let f = p.claude_json_file();
assert_eq!(
f.to_str().expect( "valid UTF-8 path" ),
"/tmp/test_home/.claude.json",
"claude_json_file must be $HOME/.claude.json, got: {}",
f.display()
);
}
#[test]
fn paths_claude_json_file_not_inside_claude_dir()
{
std::env::set_var( "HOME", "/tmp/test_home" );
let p = ClaudePaths::new().expect( "HOME is set" );
let f = p.claude_json_file();
let base = p.base();
assert!(
!f.starts_with( base ),
"claude_json_file must NOT be inside $HOME/.claude/, got: {}",
f.display()
);
}