From 44685d39991df987b58fe348890dbbb7ebad41d1 Mon Sep 17 00:00:00 2001 From: Tw93 Date: Sun, 28 Dec 2025 21:29:10 +0800 Subject: [PATCH] feat: Improve CJK character width calculation, enhance SQLite vacuum test robustness, and update security audit documentation for core cleaning and optimization logic. --- cmd/analyze/format.go | 2 ++ cmd/analyze/format_test.go | 2 +- tests/system_maintenance.bats | 10 ++++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/cmd/analyze/format.go b/cmd/analyze/format.go index 6554781..7679489 100644 --- a/cmd/analyze/format.go +++ b/cmd/analyze/format.go @@ -146,6 +146,8 @@ func coloredProgressBar(value, max int64, percent float64) string { func runeWidth(r rune) int { if r >= 0x4E00 && r <= 0x9FFF || r >= 0x3400 && r <= 0x4DBF || + r >= 0x3040 && r <= 0x30FF || + r >= 0x31F0 && r <= 0x31FF || r >= 0xAC00 && r <= 0xD7AF || r >= 0xFF00 && r <= 0xFFEF { return 2 diff --git a/cmd/analyze/format_test.go b/cmd/analyze/format_test.go index 0cc214e..85923e6 100644 --- a/cmd/analyze/format_test.go +++ b/cmd/analyze/format_test.go @@ -14,7 +14,7 @@ func TestRuneWidth(t *testing.T) { {"ASCII letter", 'a', 1}, {"ASCII digit", '5', 1}, {"Chinese character", '中', 2}, - {"Japanese hiragana", 'あ', 1}, // BUG: Should be 2, but current implementation returns 1 + {"Japanese hiragana", 'あ', 2}, {"Korean hangul", '한', 2}, {"CJK ideograph", '語', 2}, {"Full-width number", '1', 2}, diff --git a/tests/system_maintenance.bats b/tests/system_maintenance.bats index 6bddcb9..0daf044 100644 --- a/tests/system_maintenance.bats +++ b/tests/system_maintenance.bats @@ -511,7 +511,12 @@ EOF # Tests for SQLite VACUUM optimization (v1.15.2) # ============================================================================ +skip_if_no_sqlite3() { + command -v sqlite3 > /dev/null 2>&1 || skip "sqlite3 not available" +} + @test "opt_sqlite_vacuum optimizes Safari databases" { + skip_if_no_sqlite3 # Create test databases mkdir -p "$HOME/Library/Safari" @@ -544,6 +549,7 @@ EOF } @test "opt_sqlite_vacuum checks database integrity before VACUUM" { + skip_if_no_sqlite3 mkdir -p "$HOME/Library/Safari" # Clean up and create database @@ -582,6 +588,7 @@ EOF } @test "opt_sqlite_vacuum skips databases in use" { + skip_if_no_sqlite3 mkdir -p "$HOME/Library/Safari" rm -f "$HOME/Library/Safari/History.db" sqlite3 "$HOME/Library/Safari/History.db" "CREATE TABLE test(id INTEGER);" @@ -616,6 +623,7 @@ EOF } @test "opt_sqlite_vacuum checks disk space before VACUUM" { + skip_if_no_sqlite3 mkdir -p "$HOME/Library/Safari" # Clean up and create a 2MB database @@ -665,6 +673,7 @@ EOF } @test "opt_sqlite_vacuum skips non-SQLite files" { + skip_if_no_sqlite3 mkdir -p "$HOME/Library/Safari" # Create a non-SQLite file @@ -686,6 +695,7 @@ EOF } @test "opt_sqlite_vacuum verifies integrity after VACUUM" { + skip_if_no_sqlite3 mkdir -p "$HOME/Library/Safari" rm -f "$HOME/Library/Safari/History.db" sqlite3 "$HOME/Library/Safari/History.db" "CREATE TABLE test(id INTEGER); INSERT INTO test VALUES(1);"