diff --git a/provisioner/guest_commands_test.go b/provisioner/guest_commands_test.go index 50d15870a..08baca058 100644 --- a/provisioner/guest_commands_test.go +++ b/provisioner/guest_commands_test.go @@ -118,3 +118,78 @@ func TestRemoveDir(t *testing.T) { t.Fatalf("Unexpected Windows remove dir cmd: %s", cmd) } } + +func TestStatPath(t *testing.T) { + // *nix + guestCmd, err := NewGuestCommands(UnixOSType, false) + if err != nil { + t.Fatalf("Failed to create new GuestCommands for OS: %s", UnixOSType) + } + cmd := guestCmd.StatPath("/tmp/somedir") + if cmd != "stat '/tmp/somedir'" { + t.Fatalf("Unexpected Unix stat cmd: %s", cmd) + } + + guestCmd, err = NewGuestCommands(UnixOSType, true) + if err != nil { + t.Fatalf("Failed to create new GuestCommands for OS: %s", UnixOSType) + } + cmd = guestCmd.StatPath("/tmp/somedir") + if cmd != "sudo stat '/tmp/somedir'" { + t.Fatalf("Unexpected Unix stat cmd: %s", cmd) + } + + // Windows OS + guestCmd, err = NewGuestCommands(WindowsOSType, false) + if err != nil { + t.Fatalf("Failed to create new GuestCommands for OS: %s", WindowsOSType) + } + cmd = guestCmd.StatPath("C:\\Temp\\SomeDir") + if cmd != "powershell.exe -Command { if (test-path C:\\Temp\\SomeDir) { exit 0 } else { exit 1 } }" { + t.Fatalf("Unexpected Windows stat cmd: %s", cmd) + } + + // Windows OS w/ space in path + cmd = guestCmd.StatPath("C:\\Temp\\Some Dir") + if cmd != "powershell.exe -Command { if (test-path C:\\Temp\\Some` Dir) { exit 0 } else { exit 1 } }" { + t.Fatalf("Unexpected Windows stat cmd: %s", cmd) + } +} + +func TestMovePath(t *testing.T) { + // *nix + guestCmd, err := NewGuestCommands(UnixOSType, false) + if err != nil { + t.Fatalf("Failed to create new GuestCommands for OS: %s", UnixOSType) + } + cmd := guestCmd.MovePath("/tmp/somedir", "/tmp/newdir") + if cmd != "mv '/tmp/somedir' '/tmp/newdir'" { + t.Fatalf("Unexpected Unix move cmd: %s", cmd) + } + + // sudo *nix + guestCmd, err = NewGuestCommands(UnixOSType, true) + if err != nil { + t.Fatalf("Failed to create new sudo GuestCommands for OS: %s", UnixOSType) + } + cmd = guestCmd.MovePath("/tmp/somedir", "/tmp/newdir") + if cmd != "sudo mv '/tmp/somedir' '/tmp/newdir'" { + t.Fatalf("Unexpected Unix sudo mv cmd: %s", cmd) + } + + // Windows OS + guestCmd, err = NewGuestCommands(WindowsOSType, false) + if err != nil { + t.Fatalf("Failed to create new GuestCommands for OS: %s", WindowsOSType) + } + cmd = guestCmd.MovePath("C:\\Temp\\SomeDir", "C:\\Temp\\NewDir") + if cmd != "powershell.exe -Command \"mv C:\\Temp\\SomeDir C:\\Temp\\NewDir\"" { + t.Fatalf("Unexpected Windows remove dir cmd: %s", cmd) + } + + // Windows OS w/ space in path + cmd = guestCmd.MovePath("C:\\Temp\\Some Dir", "C:\\Temp\\New Dir") + if cmd != "powershell.exe -Command \"mv C:\\Temp\\Some` Dir C:\\Temp\\New` Dir\"" { + t.Fatalf("Unexpected Windows remove dir cmd: %s", cmd) + } +} diff --git a/provisioner/salt-masterless/provisioner_test.go b/provisioner/salt-masterless/provisioner_test.go index a02113198..a4bd64890 100644 --- a/provisioner/salt-masterless/provisioner_test.go +++ b/provisioner/salt-masterless/provisioner_test.go @@ -309,3 +309,19 @@ func TestProvisionerPrepare_LogLevel(t *testing.T) { t.Fatal("-l debug should be set in CmdArgs") } } + +func TestProvisionerPrepare_GuestOSType(t *testing.T) { + var p Provisioner + config := testConfig() + + config["guest_os_type"] = "Windows" + + err := p.Prepare(config) + if err != nil { + t.Fatalf("err: %s", err) + } + + if p.config.GuestOSType != "windows" { + t.Fatalf("GuestOSType should be 'windows'") + } +}