-// Copyright (C) 2021 Simon Ruderich
+// Copyright (C) 2021-2023 Simon Ruderich
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
"testing"
"time"
- ft "ruderich.org/simon/safcm/cmd/safcm-remote/sync/filetest"
+ ft "ruderich.org/simon/safcm/remote/sync/filetest"
"ruderich.org/simon/safcm/testutil"
)
if err != nil {
t.Fatal(err)
}
- defer os.Chdir(cwd)
+ defer os.Chdir(cwd) //nolint:errcheck
var suffix string
// Needs different options in sshd_config
if err != nil {
t.Fatal(err)
}
- defer sshCmd.Process.Kill()
+ defer sshCmd.Process.Kill() //nolint:errcheck
// Wait until SSH server is ready (up to 30 seconds)
for i := 0; i < 30; i++ {
`<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>[debug] [no-changes.example.org] files: "/" (no-changes.example.org): unchanged
+<LOG>[debug] [no-changes.example.org] files: "/etc" (no-changes.example.org): unchanged
+<LOG>[debug] [no-changes.example.org] files: "/tmp" (no-changes.example.org): unchanged
<LOG>[info] [no-changes.example.org] no changes
`,
nil,
`<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>[debug] [no-changes.example.org] files: "/" (no-changes.example.org): unchanged
+<LOG>[debug] [no-changes.example.org] files: "/etc" (no-changes.example.org): unchanged
+<LOG>[debug] [no-changes.example.org] files: "/tmp" (no-changes.example.org): unchanged
<LOG>[info] [no-changes.example.org] no changes
`,
nil,
`<LOG>[info] [no-effect-commands.example.org] remote helper upload in progress
<LOG>[verbose] [no-effect-commands.example.org] host groups: all <DET> <DET> no-effect-commands.example.org
<LOG>[verbose] [no-effect-commands.example.org] host group priorities (descending): no-effect-commands.example.org
-<LOG>[verbose] [no-effect-commands.example.org] sync remote: commands: running "/bin/sh" "-c" "echo this is a command" (no-effect-commands.example.org)
-<LOG>[debug2] [no-effect-commands.example.org] sync remote: commands: command output:
+<LOG>[verbose] [no-effect-commands.example.org] commands: running "/bin/sh" "-c" "echo this is a command" (no-effect-commands.example.org)
+<LOG>[debug2] [no-effect-commands.example.org] commands: command output:
this is a command
-<LOG>[verbose] [no-effect-commands.example.org] sync remote: commands: running "/bin/sh" "-c" "true" (no-effect-commands.example.org)
+<LOG>[verbose] [no-effect-commands.example.org] commands: running "/bin/sh" "-c" "true" (no-effect-commands.example.org)
<LOG>[info] [no-effect-commands.example.org]
executed 2 command(s):
"echo this is a command":
> this is a command
"echo failing; false", failed: "exit status 1":
> failing
-<LOG>[error] [no-effect-commands-failing.example.org] sync remote: commands: "echo failing; false" failed: exit status 1
+<LOG>[error] [no-effect-commands-failing.example.org] commands: "echo failing; false" failed: exit status 1
`,
fmt.Errorf("exit status 1"),
},
`<LOG>[info] [no-effect-commands-failing.example.org] remote helper upload in progress
<LOG>[verbose] [no-effect-commands-failing.example.org] host groups: all <DET> <DET> no-effect-commands-failing.example.org
<LOG>[verbose] [no-effect-commands-failing.example.org] host group priorities (descending): no-effect-commands-failing.example.org
-<LOG>[verbose] [no-effect-commands-failing.example.org] sync remote: commands: running "/bin/sh" "-c" "echo this is a command" (no-effect-commands-failing.example.org)
-<LOG>[debug2] [no-effect-commands-failing.example.org] sync remote: commands: command output:
+<LOG>[verbose] [no-effect-commands-failing.example.org] commands: running "/bin/sh" "-c" "echo this is a command" (no-effect-commands-failing.example.org)
+<LOG>[debug2] [no-effect-commands-failing.example.org] commands: command output:
this is a command
-<LOG>[verbose] [no-effect-commands-failing.example.org] sync remote: commands: running "/bin/sh" "-c" "echo failing; false" (no-effect-commands-failing.example.org)
-<LOG>[debug2] [no-effect-commands-failing.example.org] sync remote: commands: command output:
+<LOG>[verbose] [no-effect-commands-failing.example.org] commands: running "/bin/sh" "-c" "echo failing; false" (no-effect-commands-failing.example.org)
+<LOG>[debug2] [no-effect-commands-failing.example.org] commands: command output:
failing
<LOG>[info] [no-effect-commands-failing.example.org]
executed 2 command(s):
> this is a command
"echo failing; false", failed: "exit status 1":
> failing
-<LOG>[error] [no-effect-commands-failing.example.org] sync remote: commands: "echo failing; false" failed: exit status 1
+<LOG>[error] [no-effect-commands-failing.example.org] commands: "echo failing; false" failed: exit status 1
`,
fmt.Errorf("exit status 1"),
},
logRegexp := regexp.MustCompile(`^\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2} `)
detectedRegexp := regexp.MustCompile(`detected_\S+`)
+ t.Run("error before connection is established", func(t *testing.T) {
+ // Fake $PATH so safcm cannot find the `ssh` binary.
+ path := os.Getenv("PATH")
+ os.Setenv("PATH", "")
+ defer os.Setenv("PATH", path)
+
+ cmd := exec.Command("../../../../../safcm",
+ "sync", "-n", "no-settings.example.org")
+ _, err := cmd.CombinedOutput()
+ if err == nil {
+ t.Errorf("err = nil")
+ }
+ })
+
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
if tc.remove {