1
0
Fork 0
mirror of https://github.com/imjasonh/krust synced 2026-07-07 22:35:25 +00:00

fix: Clear all Docker config paths in tests to fix CI

- Clear HOME env var to avoid ~/.docker/config.json
- Clear XDG_RUNTIME_DIR to avoid containers/auth.json
- Add debug output for failed auth resolution
- Tests should now pass in CI environments

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Jason Hall 2025-06-08 11:02:06 -04:00
parent 332f47b73b
commit 618525b7ed
Failed to extract signature

View file

@ -15,13 +15,31 @@ fn test_resolve_auth_anonymous() -> Result<()> {
// Save current env vars
let old_docker_config = env::var("DOCKER_CONFIG").ok();
let old_registry_auth = env::var("REGISTRY_AUTH_FILE").ok();
let old_xdg_runtime = env::var("XDG_RUNTIME_DIR").ok();
let old_home = env::var("HOME").ok();
// Set to empty directory
// Set to empty directory and clear all possible config locations
env::set_var("DOCKER_CONFIG", tmp_dir.path());
env::remove_var("REGISTRY_AUTH_FILE");
env::remove_var("XDG_RUNTIME_DIR");
// Set HOME to temp dir to avoid ~/.docker/config.json
env::set_var("HOME", tmp_dir.path());
// Should resolve to anonymous
let auth = resolve_auth("docker.io/library/alpine")?;
// Debug output for CI
if !matches!(auth, RegistryAuth::Anonymous) {
eprintln!("Expected Anonymous auth but got: {:?}", auth);
eprintln!("DOCKER_CONFIG: {:?}", env::var("DOCKER_CONFIG"));
eprintln!("REGISTRY_AUTH_FILE: {:?}", env::var("REGISTRY_AUTH_FILE"));
eprintln!("HOME: {:?}", env::var("HOME"));
// Check if there's a Docker config in the temp dir
let config_path = tmp_dir.path().join("config.json");
eprintln!("Config exists at {:?}: {}", config_path, config_path.exists());
}
assert!(matches!(auth, RegistryAuth::Anonymous));
// Restore env vars
@ -35,6 +53,16 @@ fn test_resolve_auth_anonymous() -> Result<()> {
} else {
env::remove_var("REGISTRY_AUTH_FILE");
}
if let Some(val) = old_xdg_runtime {
env::set_var("XDG_RUNTIME_DIR", val);
} else {
env::remove_var("XDG_RUNTIME_DIR");
}
if let Some(val) = old_home {
env::set_var("HOME", val);
} else {
env::remove_var("HOME");
}
Ok(())
}
@ -59,10 +87,14 @@ fn test_resolve_auth_from_config() -> Result<()> {
// Save current env vars
let old_docker_config = env::var("DOCKER_CONFIG").ok();
let old_registry_auth = env::var("REGISTRY_AUTH_FILE").ok();
let old_xdg_runtime = env::var("XDG_RUNTIME_DIR").ok();
let old_home = env::var("HOME").ok();
// Set our test config and clear other env vars
env::set_var("DOCKER_CONFIG", tmp_dir.path());
env::remove_var("REGISTRY_AUTH_FILE");
env::remove_var("XDG_RUNTIME_DIR");
env::set_var("HOME", tmp_dir.path());
// Should resolve to basic auth
let auth = resolve_auth("test.registry.io/myimage")?;
@ -80,6 +112,16 @@ fn test_resolve_auth_from_config() -> Result<()> {
} else {
env::remove_var("REGISTRY_AUTH_FILE");
}
if let Some(val) = old_xdg_runtime {
env::set_var("XDG_RUNTIME_DIR", val);
} else {
env::remove_var("XDG_RUNTIME_DIR");
}
if let Some(val) = old_home {
env::set_var("HOME", val);
} else {
env::remove_var("HOME");
}
Ok(())
}
@ -103,10 +145,14 @@ fn test_resolve_auth_bearer_token() -> Result<()> {
// Save current env vars
let old_docker_config = env::var("DOCKER_CONFIG").ok();
let old_registry_auth = env::var("REGISTRY_AUTH_FILE").ok();
let old_xdg_runtime = env::var("XDG_RUNTIME_DIR").ok();
let old_home = env::var("HOME").ok();
// Set our test config and clear other env vars
env::set_var("DOCKER_CONFIG", tmp_dir.path());
env::remove_var("REGISTRY_AUTH_FILE");
env::remove_var("XDG_RUNTIME_DIR");
env::set_var("HOME", tmp_dir.path());
// Should resolve to bearer auth
let auth = resolve_auth("ghcr.io/user/image")?;
@ -124,6 +170,16 @@ fn test_resolve_auth_bearer_token() -> Result<()> {
} else {
env::remove_var("REGISTRY_AUTH_FILE");
}
if let Some(val) = old_xdg_runtime {
env::set_var("XDG_RUNTIME_DIR", val);
} else {
env::remove_var("XDG_RUNTIME_DIR");
}
if let Some(val) = old_home {
env::set_var("HOME", val);
} else {
env::remove_var("HOME");
}
Ok(())
}