Reset master to testing content
This commit is contained in:
1 parent
0f2587b719
commit
42afa2a56c
1483 files changed
+145308
-938069
No files matched your search
@@ -0,0 +1,110 @@
|
||||
// Copyright (c) 2026 Storm Dragon
|
||||
// Authors: Storm Dragon, Angus Kola
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
package config
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestGreeterCopyUsesOnlyEffectiveActiveProfile(t *testing.T) {
|
||||
directory := t.TempDir()
|
||||
sourcePath := filepath.Join(directory, "source.toml")
|
||||
contents := []byte("schema-version = 2\nactive-profile = 'custom'\n" +
|
||||
"[profiles.custom.speech.default-voice]\nrate = 73.0\n" +
|
||||
"[profiles.custom.keyboard]\nlayout = 2\nscreen-reader-keys = ['Caps_Lock']\n" +
|
||||
"[profiles.custom.braille]\nenabled = true\n" +
|
||||
"[profiles.application.speech]\nenabled = false\n" +
|
||||
"[applications]\n'example-editor' = 'application'\n")
|
||||
if err := os.WriteFile(sourcePath, contents, 0o600); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
settings, err := Load(sourcePath)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
targetPath := filepath.Join(directory, "greeter.toml")
|
||||
// Repeated exports must replace stale profiles and mappings too.
|
||||
if err := os.WriteFile(targetPath, contents, 0o644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := WriteGreeterSettings(targetPath, settings); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
exported, err := Load(targetPath)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
settings.Path, settings.ActiveProfile = targetPath, "greeter"
|
||||
if !reflect.DeepEqual(exported, settings) {
|
||||
t.Fatalf("export changed effective settings: got %#v, want %#v", exported, settings)
|
||||
}
|
||||
data, _ := os.ReadFile(targetPath)
|
||||
document, _, err := decodeDocument(data)
|
||||
if err != nil || len(document.Profiles) != 1 || len(document.Applications) != 0 {
|
||||
t.Fatalf("export retained other profiles: %+v, %v", document, err)
|
||||
}
|
||||
info, _ := os.Stat(targetPath)
|
||||
if info.Mode().Perm() != 0o600 {
|
||||
t.Fatalf("export permissions = %o", info.Mode().Perm())
|
||||
}
|
||||
unchanged, _ := os.ReadFile(sourcePath)
|
||||
if string(unchanged) != string(contents) {
|
||||
t.Fatal("export changed source settings")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGreeterPipeRejectsInvalidOrOversizedSettings(t *testing.T) {
|
||||
for _, contents := range []string{"", "schema-version = 999", strings.Repeat(" ", maxConfigSize+1)} {
|
||||
if _, err := ReadGreeterSettings(strings.NewReader(contents)); err == nil {
|
||||
t.Fatal("accepted invalid or oversized settings pipe")
|
||||
}
|
||||
}
|
||||
settings := DefaultSettings()
|
||||
settings.EnableEchoByWord = true
|
||||
contents, err := GreeterSettings(settings)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
copied, err := ReadGreeterSettings(bytes.NewReader(contents))
|
||||
if err != nil || copied.ActiveProfile != "greeter" || !copied.EnableEchoByWord {
|
||||
t.Fatalf("pipe round trip = %#v, error %v", copied, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGreeterCopyPreservesSourceAndExistingOutputOnFailure(t *testing.T) {
|
||||
directory := t.TempDir()
|
||||
source := filepath.Join(directory, "source.toml")
|
||||
if err := os.WriteFile(source, []byte("original"), 0o600); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
settings := DefaultSettings()
|
||||
settings.Path = source
|
||||
alias := filepath.Join(directory, "alias.toml")
|
||||
if err := os.Symlink(source, alias); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
for _, path := range []string{source, alias} {
|
||||
if err := WriteGreeterSettings(path, settings); err == nil {
|
||||
t.Fatal("export replaced its own source")
|
||||
}
|
||||
}
|
||||
target := filepath.Join(directory, "target.toml")
|
||||
if err := os.WriteFile(target, []byte("previous export"), 0o600); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
settings.SoundVolume = 2.0
|
||||
if err := WriteGreeterSettings(target, settings); err == nil {
|
||||
t.Fatal("invalid settings were exported")
|
||||
}
|
||||
data, _ := os.ReadFile(target)
|
||||
if string(data) != "previous export" {
|
||||
t.Fatal("failed export changed existing output")
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user