fix: resolve all Clippy warnings across codebase - Fixed field reassignment warnings in ecstore/src/file_meta.rs by using struct initialization instead of default + field assignment - Fixed overly complex boolean expression in ecstore/src/utils/os/mod.rs by removing meaningless assertion - Replaced manual Default implementation with derive in crates/zip/src/lib.rs - Updated io::Error usage to use io::Error::other() instead of deprecated pattern - Removed useless assertions and clone-on-copy warnings - Fixed unwrap usage by replacing with expect() providing meaningful error messages - Fixed useless vec usage by using array repeat instead - All code now passes comprehensive Clippy check with --all-targets --all-features -- -D warnings

This commit is contained in:
安正超
2025-05-28 11:00:07 +08:00
parent 96d0155bcc
commit a1f4abf6c3
37 changed files with 309 additions and 255 deletions
+19 -19
View File
@@ -23,7 +23,7 @@ mod tests {
#[test]
fn test_rustfs_dialect_creation() {
let dialect = RustFsDialect::default();
let _dialect = RustFsDialect;
// Test that dialect can be created successfully
assert!(std::mem::size_of::<RustFsDialect>() == 0, "Dialect should be zero-sized");
@@ -31,7 +31,7 @@ mod tests {
#[test]
fn test_rustfs_dialect_debug() {
let dialect = RustFsDialect::default();
let dialect = RustFsDialect;
let debug_str = format!("{:?}", dialect);
assert!(!debug_str.is_empty(), "Debug output should not be empty");
@@ -40,7 +40,7 @@ mod tests {
#[test]
fn test_is_identifier_start_alphabetic() {
let dialect = RustFsDialect::default();
let dialect = RustFsDialect;
// Test alphabetic characters
assert!(dialect.is_identifier_start('a'), "Lowercase letter should be valid identifier start");
@@ -56,7 +56,7 @@ mod tests {
#[test]
fn test_is_identifier_start_special_chars() {
let dialect = RustFsDialect::default();
let dialect = RustFsDialect;
// Test special characters that are allowed
assert!(dialect.is_identifier_start('_'), "Underscore should be valid identifier start");
@@ -66,7 +66,7 @@ mod tests {
#[test]
fn test_is_identifier_start_invalid_chars() {
let dialect = RustFsDialect::default();
let dialect = RustFsDialect;
// Test characters that should not be valid identifier starts
assert!(!dialect.is_identifier_start('0'), "Digit should not be valid identifier start");
@@ -105,7 +105,7 @@ mod tests {
#[test]
fn test_is_identifier_part_alphabetic() {
let dialect = RustFsDialect::default();
let dialect = RustFsDialect;
// Test alphabetic characters
assert!(dialect.is_identifier_part('a'), "Lowercase letter should be valid identifier part");
@@ -121,7 +121,7 @@ mod tests {
#[test]
fn test_is_identifier_part_digits() {
let dialect = RustFsDialect::default();
let dialect = RustFsDialect;
// Test ASCII digits
assert!(dialect.is_identifier_part('0'), "Digit 0 should be valid identifier part");
@@ -132,7 +132,7 @@ mod tests {
#[test]
fn test_is_identifier_part_special_chars() {
let dialect = RustFsDialect::default();
let dialect = RustFsDialect;
// Test special characters that are allowed
assert!(dialect.is_identifier_part('_'), "Underscore should be valid identifier part");
@@ -143,7 +143,7 @@ mod tests {
#[test]
fn test_is_identifier_part_invalid_chars() {
let dialect = RustFsDialect::default();
let dialect = RustFsDialect;
// Test characters that should not be valid identifier parts
assert!(!dialect.is_identifier_part(' '), "Space should not be valid identifier part");
@@ -179,14 +179,14 @@ mod tests {
#[test]
fn test_supports_group_by_expr() {
let dialect = RustFsDialect::default();
let dialect = RustFsDialect;
assert!(dialect.supports_group_by_expr(), "RustFsDialect should support GROUP BY expressions");
}
#[test]
fn test_identifier_validation_comprehensive() {
let dialect = RustFsDialect::default();
let dialect = RustFsDialect;
// Test valid identifier patterns
let valid_starts = ['a', 'A', 'z', 'Z', '_', '#', '@', 'α', '中'];
@@ -205,7 +205,7 @@ mod tests {
#[test]
fn test_identifier_edge_cases() {
let dialect = RustFsDialect::default();
let dialect = RustFsDialect;
// Test edge cases with control characters
assert!(!dialect.is_identifier_start('\0'), "Null character should not be valid identifier start");
@@ -220,7 +220,7 @@ mod tests {
#[test]
fn test_identifier_unicode_support() {
let dialect = RustFsDialect::default();
let dialect = RustFsDialect;
// Test various Unicode categories
let unicode_letters = ['α', 'β', 'γ', 'Α', 'Β', 'Γ', '中', '文', '日', '本', 'ñ', 'ü', 'ç'];
@@ -235,7 +235,7 @@ mod tests {
#[test]
fn test_identifier_ascii_digits() {
let dialect = RustFsDialect::default();
let dialect = RustFsDialect;
// Test all ASCII digits
for digit in '0'..='9' {
@@ -248,7 +248,7 @@ mod tests {
#[test]
fn test_dialect_consistency() {
let dialect = RustFsDialect::default();
let dialect = RustFsDialect;
// Test that all valid identifier starts are also valid identifier parts
let test_chars = [
@@ -266,7 +266,7 @@ mod tests {
#[test]
fn test_dialect_memory_efficiency() {
let dialect = RustFsDialect::default();
let dialect = RustFsDialect;
// Test that dialect doesn't use excessive memory
let dialect_size = std::mem::size_of_val(&dialect);
@@ -275,7 +275,7 @@ mod tests {
#[test]
fn test_dialect_trait_implementation() {
let dialect = RustFsDialect::default();
let dialect = RustFsDialect;
// Test that dialect properly implements the Dialect trait
let dialect_ref: &dyn Dialect = &dialect;
@@ -290,8 +290,8 @@ mod tests {
#[test]
fn test_dialect_clone_and_default() {
let dialect1 = RustFsDialect::default();
let dialect2 = RustFsDialect::default();
let dialect1 = RustFsDialect;
let dialect2 = RustFsDialect;
// Test that multiple instances behave the same
let test_chars = ['a', 'A', '0', '_', '#', '@', '$', ' ', '.'];
+14 -16
View File
@@ -87,7 +87,7 @@ mod tests {
#[test]
fn test_cascade_optimizer_builder_default() {
let builder = CascadeOptimizerBuilder::default();
let _builder = CascadeOptimizerBuilder::default();
// Test that builder can be created successfully
assert!(std::mem::size_of::<CascadeOptimizerBuilder>() > 0, "Builder should be created successfully");
@@ -95,17 +95,17 @@ mod tests {
#[test]
fn test_cascade_optimizer_builder_build_with_defaults() {
let builder = CascadeOptimizerBuilder::default();
let optimizer = builder.build();
let _builder = CascadeOptimizerBuilder::default();
let optimizer = _builder.build();
// Test that optimizer can be built with default components
assert!(std::mem::size_of_val(&optimizer) > 0, "Optimizer should be built successfully");
}
#[test]
#[test]
fn test_cascade_optimizer_builder_basic_functionality() {
// Test that builder methods can be called and return self
let builder = CascadeOptimizerBuilder::default();
let _builder = CascadeOptimizerBuilder::default();
// Test that we can call builder methods (even if we don't have mock implementations)
// This tests the builder pattern itself
@@ -114,23 +114,23 @@ mod tests {
#[test]
fn test_cascade_optimizer_builder_memory_efficiency() {
let builder = CascadeOptimizerBuilder::default();
let _builder = CascadeOptimizerBuilder::default();
// Test that builder doesn't use excessive memory
let builder_size = std::mem::size_of_val(&builder);
let builder_size = std::mem::size_of_val(&_builder);
assert!(builder_size < 1000, "Builder should not use excessive memory");
let optimizer = builder.build();
let optimizer = _builder.build();
let optimizer_size = std::mem::size_of_val(&optimizer);
assert!(optimizer_size < 1000, "Optimizer should not use excessive memory");
}
#[test]
#[test]
fn test_cascade_optimizer_builder_multiple_builds() {
let builder = CascadeOptimizerBuilder::default();
let _builder = CascadeOptimizerBuilder::default();
// Test that we can build multiple optimizers from the same configuration
let optimizer1 = builder.build();
let optimizer1 = _builder.build();
assert!(std::mem::size_of_val(&optimizer1) > 0, "First optimizer should be built successfully");
// Note: builder is consumed by build(), so we can't build again from the same instance
@@ -139,16 +139,14 @@ mod tests {
#[test]
fn test_cascade_optimizer_builder_default_fallbacks() {
let builder = CascadeOptimizerBuilder::default();
let optimizer = builder.build();
let _builder = CascadeOptimizerBuilder::default();
let optimizer = _builder.build();
// Test that default components are used when none are specified
// We can't directly access the internal components, but we can verify the optimizer was built
assert!(std::mem::size_of_val(&optimizer) > 0, "Optimizer should use default components");
}
#[test]
fn test_cascade_optimizer_component_types() {
let optimizer = CascadeOptimizerBuilder::default().build();
@@ -161,7 +159,7 @@ mod tests {
// This is a basic structural test
}
#[test]
#[test]
fn test_cascade_optimizer_builder_consistency() {
// Test that multiple builders with the same configuration produce equivalent optimizers
let optimizer1 = CascadeOptimizerBuilder::default().build();
+4 -4
View File
@@ -98,7 +98,7 @@ mod tests {
#[test]
fn test_default_parser_creation() {
let parser = DefaultParser::default();
let _parser = DefaultParser::default();
// Test that parser can be created successfully
assert!(std::mem::size_of::<DefaultParser>() == 0, "Parser should be zero-sized");
@@ -230,7 +230,7 @@ mod tests {
#[test]
fn test_ext_parser_parse_sql_with_dialect() {
let sql = "SELECT * FROM S3Object";
let dialect = &RustFsDialect::default();
let dialect = &RustFsDialect;
let result = ExtParser::parse_sql_with_dialect(sql, dialect);
assert!(result.is_ok(), "ExtParser::parse_sql_with_dialect should work");
@@ -242,7 +242,7 @@ mod tests {
#[test]
fn test_ext_parser_new_with_dialect() {
let sql = "SELECT * FROM S3Object";
let dialect = &RustFsDialect::default();
let dialect = &RustFsDialect;
let result = ExtParser::new_with_dialect(sql, dialect);
assert!(result.is_ok(), "ExtParser::new_with_dialect should work");
@@ -418,7 +418,7 @@ mod tests {
#[test]
fn test_ext_parser_expected_method() {
let sql = "SELECT * FROM S3Object";
let dialect = &RustFsDialect::default();
let dialect = &RustFsDialect;
let parser = ExtParser::new_with_dialect(sql, dialect).unwrap();
let result: Result<()> = parser.expected("test token", "found token");