mirror of
https://github.com/tw93/Mole.git
synced 2026-02-04 12:41:46 +00:00
feat: Improve CJK character width calculation, enhance SQLite vacuum test robustness, and update security audit documentation for core cleaning and optimization logic.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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},
|
||||
|
||||
@@ -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);"
|
||||
|
||||
Reference in New Issue
Block a user