1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package nginx_log
- import "testing"
- func TestIsLogrotateFile(t *testing.T) {
- tests := []struct {
- filename string
- baseLogName string
- expected bool
- description string
- }{
- // Valid logrotate patterns
- {"access.log", "access.log", true, "Current log file"},
- {"access.log.1", "access.log", true, "First rotated file"},
- {"access.log.2", "access.log", true, "Second rotated file"},
- {"access.log.10", "access.log", true, "Tenth rotated file"},
- {"access.log.1.gz", "access.log", true, "First compressed rotated file"},
- {"access.log.2.gz", "access.log", true, "Second compressed rotated file"},
- {"access.log.10.gz", "access.log", true, "Tenth compressed rotated file"},
-
- // Invalid patterns that should NOT match
- {"random.gz", "access.log", false, "Random gz file"},
- {"access_20230815.gz", "access.log", false, "Date-based naming"},
- {"access.log.gz", "access.log", false, "Direct compression without number"},
- {"access.log.old", "access.log", false, "Non-numeric suffix"},
- {"access.log.1.bz2", "access.log", false, "Different compression format"},
- {"error.log", "access.log", false, "Different log type"},
- {"access.log.1.2.gz", "access.log", false, "Multiple dots in number"},
- {"access.log.a.gz", "access.log", false, "Non-numeric rotation"},
-
- // Edge cases
- {"", "access.log", false, "Empty filename"},
- {"access.log", "", false, "Empty base name"},
- {"access", "access.log", false, "Partial match"},
- {"access.log.backup", "access.log", false, "Backup suffix"},
- }
- for _, tt := range tests {
- t.Run(tt.description, func(t *testing.T) {
- result := isLogrotateFile(tt.filename, tt.baseLogName)
- if result != tt.expected {
- t.Errorf("isLogrotateFile(%q, %q) = %v, want %v",
- tt.filename, tt.baseLogName, result, tt.expected)
- }
- })
- }
- }
|