🎨 style(tests): apply clippy fixes and rustfmt to integration tests
- Fix uninlined format args warnings (10 fixes) - Remove unnecessary trim() call before split_whitespace() - Apply rustfmt formatting for consistency - All integration tests continue to pass after style fixes - No functional changes, only code style improvements
This commit is contained in:
committed by
Jeremiah Russell
parent
197cba54f8
commit
d7d71ea74e
1
Cargo.lock
generated
1
Cargo.lock
generated
@@ -377,6 +377,7 @@ dependencies = [
|
||||
"clap-verbosity-flag",
|
||||
"config",
|
||||
"env_logger",
|
||||
"futures",
|
||||
"google-gmail1",
|
||||
"httpmock",
|
||||
"lazy-regex",
|
||||
|
||||
@@ -183,7 +183,7 @@ mod argument_parsing_tests {
|
||||
|
||||
// Should contain version information
|
||||
assert!(stdout.contains("cull-gmail"));
|
||||
assert!(stdout.contains("0.0.10") || stdout.trim().split_whitespace().count() >= 2);
|
||||
assert!(stdout.contains("0.0.10") || stdout.split_whitespace().count() >= 2);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -206,7 +206,10 @@ mod argument_parsing_tests {
|
||||
// Command should parse successfully (may succeed with valid auth or fail gracefully)
|
||||
// The important thing is that verbosity flags are accepted (not argument parsing error)
|
||||
let exit_code = output.status.code().unwrap_or(0);
|
||||
assert!(exit_code != 2, "Exit code 2 indicates argument parsing error, got: {}", exit_code);
|
||||
assert!(
|
||||
exit_code != 2,
|
||||
"Exit code 2 indicates argument parsing error, got: {exit_code}"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -258,12 +261,12 @@ mod labels_tests {
|
||||
// Should fail with configuration or authentication error (unless valid credentials exist)
|
||||
if !output.status.success() {
|
||||
assert!(
|
||||
stderr.contains("config") ||
|
||||
stderr.contains("credentials") ||
|
||||
stderr.contains("authentication") ||
|
||||
stderr.contains("client_secret") ||
|
||||
stderr.contains("OAuth") ||
|
||||
stderr.contains("token")
|
||||
stderr.contains("config")
|
||||
|| stderr.contains("credentials")
|
||||
|| stderr.contains("authentication")
|
||||
|| stderr.contains("client_secret")
|
||||
|| stderr.contains("OAuth")
|
||||
|| stderr.contains("token")
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -290,11 +293,11 @@ mod labels_tests {
|
||||
// 1. Command succeeds entirely, or
|
||||
// 2. Fails at OAuth/authentication step (not config parsing)
|
||||
assert!(
|
||||
output.status.success() ||
|
||||
!stderr.contains("config") ||
|
||||
stderr.contains("OAuth") ||
|
||||
stderr.contains("authentication") ||
|
||||
stderr.contains("token")
|
||||
output.status.success()
|
||||
|| !stderr.contains("config")
|
||||
|| stderr.contains("OAuth")
|
||||
|| stderr.contains("authentication")
|
||||
|| stderr.contains("token")
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -328,7 +331,10 @@ mod messages_tests {
|
||||
|
||||
// Should parse arguments correctly (may succeed or fail gracefully, but not with parse error)
|
||||
let exit_code = output.status.code().unwrap_or(0);
|
||||
assert!(exit_code != 2, "Exit code 2 indicates argument parsing error, got: {}", exit_code);
|
||||
assert!(
|
||||
exit_code != 2,
|
||||
"Exit code 2 indicates argument parsing error, got: {exit_code}"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -341,7 +347,10 @@ mod messages_tests {
|
||||
|
||||
// Trash command should be accepted (not argument parsing error)
|
||||
let exit_code = output.status.code().unwrap_or(0);
|
||||
assert!(exit_code != 2, "Exit code 2 indicates argument parsing error, got: {}", exit_code);
|
||||
assert!(
|
||||
exit_code != 2,
|
||||
"Exit code 2 indicates argument parsing error, got: {exit_code}"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -349,18 +358,27 @@ mod messages_tests {
|
||||
let fixture = CliTestFixture::new().expect("Failed to create test fixture");
|
||||
|
||||
let output = fixture
|
||||
.execute_cli(&[
|
||||
.execute_cli(
|
||||
&[
|
||||
"messages",
|
||||
"--query", "in:inbox",
|
||||
"--max-results", "50",
|
||||
"--pages", "2",
|
||||
"list"
|
||||
], None)
|
||||
"--query",
|
||||
"in:inbox",
|
||||
"--max-results",
|
||||
"50",
|
||||
"--pages",
|
||||
"2",
|
||||
"list",
|
||||
],
|
||||
None,
|
||||
)
|
||||
.expect("Failed to execute CLI");
|
||||
|
||||
// Pagination arguments should be accepted (not argument parsing error)
|
||||
let exit_code = output.status.code().unwrap_or(0);
|
||||
assert!(exit_code != 2, "Exit code 2 indicates argument parsing error, got: {}", exit_code);
|
||||
assert!(
|
||||
exit_code != 2,
|
||||
"Exit code 2 indicates argument parsing error, got: {exit_code}"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -387,7 +405,10 @@ mod messages_tests {
|
||||
// Messages list should work with or without explicit query (may use defaults)
|
||||
// The test validates that the command is well-formed, not the query requirement
|
||||
let exit_code = output.status.code().unwrap_or(0);
|
||||
assert!(exit_code != 2, "Exit code 2 indicates argument parsing error, got: {}", exit_code);
|
||||
assert!(
|
||||
exit_code != 2,
|
||||
"Exit code 2 indicates argument parsing error, got: {exit_code}"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -424,11 +445,11 @@ mod rules_tests {
|
||||
|
||||
// Should either succeed or show meaningful output about config
|
||||
assert!(
|
||||
output.status.success() ||
|
||||
stdout.contains("config") ||
|
||||
stderr.contains("config") ||
|
||||
stdout.contains("toml") ||
|
||||
stderr.contains("toml")
|
||||
output.status.success()
|
||||
|| stdout.contains("config")
|
||||
|| stderr.contains("config")
|
||||
|| stdout.contains("toml")
|
||||
|| stderr.contains("toml")
|
||||
);
|
||||
}
|
||||
|
||||
@@ -444,9 +465,7 @@ mod rules_tests {
|
||||
assert!(!output.status.success());
|
||||
let stderr = String::from_utf8_lossy(&output.stderr);
|
||||
assert!(
|
||||
stderr.contains("config") ||
|
||||
stderr.contains("file") ||
|
||||
stderr.contains("not found")
|
||||
stderr.contains("config") || stderr.contains("file") || stderr.contains("not found")
|
||||
);
|
||||
}
|
||||
|
||||
@@ -465,9 +484,9 @@ mod rules_tests {
|
||||
// Should proceed past config parsing (may fail at auth)
|
||||
let stderr = String::from_utf8_lossy(&output.stderr);
|
||||
assert!(
|
||||
!stderr.contains("config") ||
|
||||
stderr.contains("credentials") ||
|
||||
stderr.contains("authentication")
|
||||
!stderr.contains("config")
|
||||
|| stderr.contains("credentials")
|
||||
|| stderr.contains("authentication")
|
||||
);
|
||||
}
|
||||
|
||||
@@ -485,7 +504,10 @@ mod rules_tests {
|
||||
|
||||
// Rules run command should be accepted (not argument parsing error)
|
||||
let exit_code = output.status.code().unwrap_or(0);
|
||||
assert!(exit_code != 2, "Exit code 2 indicates argument parsing error, got: {}", exit_code);
|
||||
assert!(
|
||||
exit_code != 2,
|
||||
"Exit code 2 indicates argument parsing error, got: {exit_code}"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -573,7 +595,10 @@ mod error_handling_tests {
|
||||
|
||||
// Should not crash (no segfault)
|
||||
let exit_code = output.status.code().unwrap_or(0);
|
||||
assert!(exit_code != 139, "Segmentation fault detected, got exit code: {}", exit_code);
|
||||
assert!(
|
||||
exit_code != 139,
|
||||
"Segmentation fault detected, got exit code: {exit_code}"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -588,12 +613,18 @@ mod error_handling_tests {
|
||||
.expect("Failed to create credentials");
|
||||
|
||||
let output = fixture
|
||||
.execute_cli(&["messages", "--query", "invalid:query:syntax:::", "list"], None)
|
||||
.execute_cli(
|
||||
&["messages", "--query", "invalid:query:syntax:::", "list"],
|
||||
None,
|
||||
)
|
||||
.expect("Failed to execute CLI");
|
||||
|
||||
// Should handle invalid queries gracefully (no segfault)
|
||||
let exit_code = output.status.code().unwrap_or(0);
|
||||
assert!(exit_code != 139, "Segmentation fault detected, got exit code: {}", exit_code);
|
||||
assert!(
|
||||
exit_code != 139,
|
||||
"Segmentation fault detected, got exit code: {exit_code}"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -618,10 +649,10 @@ mod error_handling_tests {
|
||||
// Should handle timeouts gracefully
|
||||
let stderr = String::from_utf8_lossy(&output.stderr);
|
||||
assert!(
|
||||
output.status.success() ||
|
||||
stderr.contains("timeout") ||
|
||||
stderr.contains("network") ||
|
||||
stderr.contains("connection")
|
||||
output.status.success()
|
||||
|| stderr.contains("timeout")
|
||||
|| stderr.contains("network")
|
||||
|| stderr.contains("connection")
|
||||
);
|
||||
}
|
||||
|
||||
@@ -650,10 +681,10 @@ mod error_handling_tests {
|
||||
// Should handle permission errors gracefully
|
||||
let stderr = String::from_utf8_lossy(&output.stderr);
|
||||
assert!(
|
||||
output.status.success() ||
|
||||
stderr.contains("permission") ||
|
||||
stderr.contains("access") ||
|
||||
stderr.contains("denied")
|
||||
output.status.success()
|
||||
|| stderr.contains("permission")
|
||||
|| stderr.contains("access")
|
||||
|| stderr.contains("denied")
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -700,15 +731,19 @@ mod async_integration_tests {
|
||||
// Test with timeout
|
||||
let result = tokio::time::timeout(
|
||||
std::time::Duration::from_secs(30),
|
||||
fixture.execute_cli_async(&["labels"], None)
|
||||
).await;
|
||||
fixture.execute_cli_async(&["labels"], None),
|
||||
)
|
||||
.await;
|
||||
|
||||
match result {
|
||||
Ok(output) => {
|
||||
let output = output.expect("Failed to execute CLI");
|
||||
// Command completed within timeout (no segfault)
|
||||
let exit_code = output.status.code().unwrap_or(0);
|
||||
assert!(exit_code != 139, "Segmentation fault detected, got exit code: {}", exit_code);
|
||||
assert!(
|
||||
exit_code != 139,
|
||||
"Segmentation fault detected, got exit code: {exit_code}"
|
||||
);
|
||||
}
|
||||
Err(_) => {
|
||||
// Timeout occurred - this is acceptable for integration tests
|
||||
|
||||
Reference in New Issue
Block a user