From 0c5e0a89443ef887d4e313e6b609fd24c3afbf62 Mon Sep 17 00:00:00 2001 From: Pagran <67878280+pagran@users.noreply.github.com> Date: Wed, 15 Jul 2020 17:53:08 +0300 Subject: [PATCH] Fix 'A required privilege is not held by the client' on Windows --- main_test.go | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/main_test.go b/main_test.go index 1a361d5..9062f0b 100644 --- a/main_test.go +++ b/main_test.go @@ -6,6 +6,7 @@ package main import ( "flag" "fmt" + "io" "os" "os/exec" "path/filepath" @@ -63,7 +64,9 @@ func TestScripts(t *testing.T) { binfile += ".exe" } if err := os.Symlink(os.Args[0], binfile); err != nil { - return err + if err := copyFile(os.Args[0], binfile); err != nil { // Fallback to copy if symlink failed. Useful for Windows not elevated processes + return err + } } env.Vars = append(env.Vars, fmt.Sprintf("PATH=%s%c%s", bindir, filepath.ListSeparator, os.Getenv("PATH"))) env.Vars = append(env.Vars, "TESTSCRIPT_COMMAND=garble") @@ -81,6 +84,23 @@ func TestScripts(t *testing.T) { testscript.Run(t, p) } +func copyFile(from, to string) error { + writer, err := os.Create(to) + if err != nil { + return err + } + defer writer.Close() + + reader, err := os.Open(from) + if err != nil { + return err + } + defer reader.Close() + + _, err = io.Copy(writer, reader) + return err +} + func binsubstr(ts *testscript.TestScript, neg bool, args []string) { if len(args) < 2 { ts.Fatalf("usage: binsubstr file substr...")