83 lines
1.9 KiB
Go
83 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"archive/tar"
|
|
"compress/gzip"
|
|
"io"
|
|
"os"
|
|
"path/filepath"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestLoggingPreferenceRoundTrip(t *testing.T) {
|
|
path := filepath.Join(t.TempDir(), "config", "logging.conf")
|
|
if load_logging_pref(path) {
|
|
t.Fatal("missing logging preference must default to disabled")
|
|
}
|
|
if err := save_logging_pref(path, true); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !load_logging_pref(path) {
|
|
t.Fatal("saved logging preference was not loaded")
|
|
}
|
|
info, err := os.Stat(path)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if info.Mode().Perm() != 0600 {
|
|
t.Fatalf("logging preference mode = %o; want 600", info.Mode().Perm())
|
|
}
|
|
}
|
|
|
|
func TestCreateLogArchiveIncludesOnlyRegularLogFiles(t *testing.T) {
|
|
root := t.TempDir()
|
|
logDir := filepath.Join(root, "logs")
|
|
cacheDir := filepath.Join(root, "cache")
|
|
if err := os.MkdirAll(logDir, 0700); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := os.WriteFile(filepath.Join(logDir, "first.log"), []byte("first\n"), 0600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := os.WriteFile(filepath.Join(logDir, "ignore.txt"), []byte("ignore\n"), 0600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
archivePath, err := create_log_archive(logDir, cacheDir)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer os.Remove(archivePath)
|
|
file, err := os.Open(archivePath)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer file.Close()
|
|
gzipReader, err := gzip.NewReader(file)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer gzipReader.Close()
|
|
tarReader := tar.NewReader(gzipReader)
|
|
names := []string{}
|
|
contents := ""
|
|
for {
|
|
header, err := tarReader.Next()
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
names = append(names, header.Name)
|
|
data, err := io.ReadAll(tarReader)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
contents += string(data)
|
|
}
|
|
if !reflect.DeepEqual(names, []string{"first.log"}) || contents != "first\n" {
|
|
t.Fatalf("archive contains names %v and data %q", names, contents)
|
|
}
|
|
}
|