47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
//go:build ship
|
|||
|
|
|
||
|
|
package runtimeassets
|
||
|
|
|
||
|
|
import (
|
||
|
|
"bytes"
|
||
|
|
"os"
|
||
|
|
"path/filepath"
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestShipBundleSeedsOnlyMissingMutableFiles(t *testing.T) {
|
||
|
|
for _, name := range []string{"resources/TechniqueRules.json", "res.json", "challenge_data.json", "scripts/hide_ui.lua"} {
|
||
|
|
data, err := ReadFile(name)
|
||
|
|
if err != nil || len(data) == 0 {
|
||
|
|
t.Fatalf("embedded runtime file %s: bytes=%d err=%v", name, len(data), err)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
directory := t.TempDir()
|
||
|
|
customConfig := []byte(`{"operator":"keep"}`)
|
||
|
|
if err := os.WriteFile(filepath.Join(directory, "server.json"), customConfig, 0o600); err != nil {
|
||
|
|
t.Fatal(err)
|
||
|
|
}
|
||
|
|
if err := seedMissingFiles(directory); err != nil {
|
||
|
|
t.Fatal(err)
|
||
|
|
}
|
||
|
|
for _, name := range seedFiles {
|
||
|
|
actual, err := os.ReadFile(filepath.Join(directory, name))
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("seeded file %s: %v", name, err)
|
||
|
|
}
|
||
|
|
if name == "server.json" {
|
||
|
|
if !bytes.Equal(actual, customConfig) {
|
||
|
|
t.Fatal("existing operator config was replaced")
|
||
|
|
}
|
||
|
|
continue
|
||
|
|
}
|
||
|
|
expected, err := ReadFile(name)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("embedded seed %s: %v", name, err)
|
||
|
|
}
|
||
|
|
if !bytes.Equal(actual, expected) {
|
||
|
|
t.Fatalf("seeded file %s differs from embedded version", name)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|