"testing"
"time"
+ ft "ruderich.org/simon/safcm/cmd/safcm-remote/sync/filetest"
"ruderich.org/simon/safcm/testutil"
)
t.Fatal(err)
}
+ ft.CreateDirectoryExists("no-changes.example.org", 0755)
+ ft.CreateDirectoryExists("no-changes.example.org/files", 0755)
+ ft.CreateDirectoryExists("no-changes.example.org/files/etc", 0755)
+ ft.CreateDirectoryExists("no-changes.example.org/files/tmp", 0755)
+
+ noChangePermissions := `
+/: 0755 root root
+/etc: 0755 root root
+/tmp: 1777 root root
+`
+ if runtime.GOOS == "openbsd" || runtime.GOOS == "freebsd" {
+ noChangePermissions = `
+/: 0755 root wheel
+/etc: 0755 root wheel
+/tmp: 1777 root wheel
+`
+ }
+ ft.CreateFile("no-changes.example.org/permissions.yaml",
+ noChangePermissions, 0644)
+
+ skipUnlessCiRun := len(os.Getenv("SAFCM_CI_RUN")) == 0
+
tests := []struct {
name string
+ skip bool
remove bool
args []string
exp string
{
"no settings",
+ false,
true,
[]string{"no-settings.example.org"},
`<LOG>[info] [no-settings.example.org] remote helper upload in progress
{
"no settings (no helper upload)",
false,
+ false,
[]string{"no-settings.example.org"},
`<LOG>[info] [no-settings.example.org] no changes
`,
},
{
"no settings (error)",
+ false,
true,
[]string{"-log", "error", "no-settings.example.org"},
``,
},
{
"no settings (verbose)",
+ false,
true,
[]string{"-log", "verbose", "no-settings.example.org"},
`<LOG>[info] [no-settings.example.org] remote helper upload in progress
},
{
"no settings (debug2)",
+ false,
true,
[]string{"-log", "debug2", "no-settings.example.org"},
`<LOG>[info] [no-settings.example.org] remote helper upload in progress
<LOG>[verbose] [no-settings.example.org] host groups: all <DET> <DET> no-settings.example.org
<LOG>[verbose] [no-settings.example.org] host group priorities (descending): no-settings.example.org
<LOG>[info] [no-settings.example.org] no changes
+`,
+ nil,
+ },
+
+ // NOTE: We use -n on regular runs to prevent changing
+ // anything important on the host when running as root!
+
+ {
+ "no changes (dry-run)",
+ false,
+ true,
+ []string{"-n", "no-changes.example.org"},
+ `<LOG>[info] [no-changes.example.org] remote helper upload in progress
+<LOG>[info] [no-changes.example.org] no changes
+`,
+ nil,
+ },
+ {
+ "no changes (dry-run, debug2)",
+ false,
+ true,
+ []string{"-n", "-log", "debug2", "no-changes.example.org"},
+ `<LOG>[info] [no-changes.example.org] remote helper upload in progress
+<LOG>[verbose] [no-changes.example.org] host groups: all <DET> <DET> no-changes.example.org
+<LOG>[verbose] [no-changes.example.org] host group priorities (descending): no-changes.example.org
+<LOG>[debug] [no-changes.example.org] sync remote: files: "/" (no-changes.example.org): unchanged
+<LOG>[debug] [no-changes.example.org] sync remote: files: "/etc" (no-changes.example.org): unchanged
+<LOG>[debug] [no-changes.example.org] sync remote: files: "/tmp" (no-changes.example.org): unchanged
+<LOG>[info] [no-changes.example.org] no changes
+`,
+ nil,
+ },
+
+ {
+ "no changes",
+ skipUnlessCiRun,
+ true,
+ []string{"no-changes.example.org"},
+ `<LOG>[info] [no-changes.example.org] remote helper upload in progress
+<LOG>[info] [no-changes.example.org] no changes
+`,
+ nil,
+ },
+ {
+ "no changes (debug2)",
+ skipUnlessCiRun,
+ true,
+ []string{"-log", "debug2", "no-changes.example.org"},
+ `<LOG>[info] [no-changes.example.org] remote helper upload in progress
+<LOG>[verbose] [no-changes.example.org] host groups: all <DET> <DET> no-changes.example.org
+<LOG>[verbose] [no-changes.example.org] host group priorities (descending): no-changes.example.org
+<LOG>[debug] [no-changes.example.org] sync remote: files: "/" (no-changes.example.org): unchanged
+<LOG>[debug] [no-changes.example.org] sync remote: files: "/etc" (no-changes.example.org): unchanged
+<LOG>[debug] [no-changes.example.org] sync remote: files: "/tmp" (no-changes.example.org): unchanged
+<LOG>[info] [no-changes.example.org] no changes
`,
nil,
},