From 5697b2e5dba933bb6ff3bddcd8fa84baed6d2d0b Mon Sep 17 00:00:00 2001 From: Julian Ospald Date: Mon, 17 Aug 2026 10:07:48 +0800 Subject: [PATCH] Fix running multiple cmdlets on windows (#6968) --- pipeline/backend/common/script_test.go | 2 +- pipeline/backend/common/script_win.go | 1 + pipeline/backend/common/script_win_test.go | 1 + pipeline/backend/docker/convert_test.go | 3 ++- 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/pipeline/backend/common/script_test.go b/pipeline/backend/common/script_test.go index 0d56a2148..a59270f13 100644 --- a/pipeline/backend/common/script_test.go +++ b/pipeline/backend/common/script_test.go @@ -23,7 +23,7 @@ import ( const ( // UTF-16LE encoded script, base64 encoded for powershell's -encodedcommand. - windowsScriptBase64 = "CgAkAEUAcgByAG8AcgBBAGMAdABpAG8AbgBQAHIAZQBmAGUAcgBlAG4AYwBlACAAPQAgACcAUwB0AG8AcAAnADsACgBpAGYAIAAoAC0AbgBvAHQAIAAoAFQAZQBzAHQALQBQAGEAdABoACAAIgAvAHcAbwBvAGQAcABlAGMAawBlAHIALwBzAG8AbQBlACIAKQApACAAewAgAE4AZQB3AC0ASQB0AGUAbQAgAC0AUABhAHQAaAAgACIALwB3AG8AbwBkAHAAZQBjAGsAZQByAC8AcwBvAG0AZQAiACAALQBJAHQAZQBtAFQAeQBwAGUAIABEAGkAcgBlAGMAdABvAHIAeQAgAC0ARgBvAHIAYwBlACAAfQA7AAoAaQBmACAAKAAtAG4AbwB0ACAAWwBFAG4AdgBpAHIAbwBuAG0AZQBuAHQAXQA6ADoARwBlAHQARQBuAHYAaQByAG8AbgBtAGUAbgB0AFYAYQByAGkAYQBiAGwAZQAoACcASABPAE0ARQAnACkAKQAgAHsAIABbAEUAbgB2AGkAcgBvAG4AbQBlAG4AdABdADoAOgBTAGUAdABFAG4AdgBpAHIAbwBuAG0AZQBuAHQAVgBhAHIAaQBhAGIAbABlACgAJwBIAE8ATQBFACcALAAgACcAYwA6AFwAcgBvAG8AdAAnACkAIAB9ADsACgBpAGYAIAAoAC0AbgBvAHQAIAAoAFQAZQBzAHQALQBQAGEAdABoACAAIgAkAGUAbgB2ADoASABPAE0ARQAiACkAKQAgAHsAIABOAGUAdwAtAEkAdABlAG0AIAAtAFAAYQB0AGgAIAAiACQAZQBuAHYAOgBIAE8ATQBFACIAIAAtAEkAdABlAG0AVAB5AHAAZQAgAEQAaQByAGUAYwB0AG8AcgB5ACAALQBGAG8AcgBjAGUAIAB9ADsACgBpAGYAIAAoACQARQBuAHYAOgBDAEkAXwBOAEUAVABSAEMAXwBNAEEAQwBIAEkATgBFACkAIAB7AAoAJABuAGUAdAByAGMAPQBbAHMAdAByAGkAbgBnAF0AOgA6AEYAbwByAG0AYQB0ACgAIgB7ADAAfQBcAF8AbgBlAHQAcgBjACIALAAkAEUAbgB2ADoASABPAE0ARQApADsACgAiAG0AYQBjAGgAaQBuAGUAIAAkAEUAbgB2ADoAQwBJAF8ATgBFAFQAUgBDAF8ATQBBAEMASABJAE4ARQAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKACIAbABvAGcAaQBuACAAJABFAG4AdgA6AEMASQBfAE4ARQBUAFIAQwBfAFUAUwBFAFIATgBBAE0ARQAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKACIAcABhAHMAcwB3AG8AcgBkACAAJABFAG4AdgA6AEMASQBfAE4ARQBUAFIAQwBfAFAAQQBTAFMAVwBPAFIARAAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKAH0AOwAKAFsARQBuAHYAaQByAG8AbgBtAGUAbgB0AF0AOgA6AFMAZQB0AEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAcgBpAGEAYgBsAGUAKAAiAEMASQBfAE4ARQBUAFIAQwBfAFAAQQBTAFMAVwBPAFIARAAiACwAJABuAHUAbABsACkAOwAKAFsARQBuAHYAaQByAG8AbgBtAGUAbgB0AF0AOgA6AFMAZQB0AEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAcgBpAGEAYgBsAGUAKAAiAEMASQBfAFMAQwBSAEkAUABUACIALAAkAG4AdQBsAGwAKQA7AAoAYwBkACAAIgAvAHcAbwBvAGQAcABlAGMAawBlAHIALwBzAG8AbQBlACIAOwAKAAoAVwByAGkAdABlAC0ATwB1AHQAcAB1AHQAIAAoACcAKwAgACIAZQBjAGgAbwAgAGgAZQBsAGwAbwAgAHcAbwByAGwAZAAiACcAKQA7AAoAJgAgAGUAYwBoAG8AIABoAGUAbABsAG8AIAB3AG8AcgBsAGQAOwAgAGkAZgAgACgAJABMAEEAUwBUAEUAWABJAFQAQwBPAEQARQAgAC0AbgBlACAAMAApACAAewBlAHgAaQB0ACAAJABMAEEAUwBUAEUAWABJAFQAQwBPAEQARQB9AAoA" + windowsScriptBase64 = "CgAkAEwAQQBTAFQARQBYAEkAVABDAE8ARABFACAAPQAgADAACgAkAEUAcgByAG8AcgBBAGMAdABpAG8AbgBQAHIAZQBmAGUAcgBlAG4AYwBlACAAPQAgACcAUwB0AG8AcAAnADsACgBpAGYAIAAoAC0AbgBvAHQAIAAoAFQAZQBzAHQALQBQAGEAdABoACAAIgAvAHcAbwBvAGQAcABlAGMAawBlAHIALwBzAG8AbQBlACIAKQApACAAewAgAE4AZQB3AC0ASQB0AGUAbQAgAC0AUABhAHQAaAAgACIALwB3AG8AbwBkAHAAZQBjAGsAZQByAC8AcwBvAG0AZQAiACAALQBJAHQAZQBtAFQAeQBwAGUAIABEAGkAcgBlAGMAdABvAHIAeQAgAC0ARgBvAHIAYwBlACAAfQA7AAoAaQBmACAAKAAtAG4AbwB0ACAAWwBFAG4AdgBpAHIAbwBuAG0AZQBuAHQAXQA6ADoARwBlAHQARQBuAHYAaQByAG8AbgBtAGUAbgB0AFYAYQByAGkAYQBiAGwAZQAoACcASABPAE0ARQAnACkAKQAgAHsAIABbAEUAbgB2AGkAcgBvAG4AbQBlAG4AdABdADoAOgBTAGUAdABFAG4AdgBpAHIAbwBuAG0AZQBuAHQAVgBhAHIAaQBhAGIAbABlACgAJwBIAE8ATQBFACcALAAgACcAYwA6AFwAcgBvAG8AdAAnACkAIAB9ADsACgBpAGYAIAAoAC0AbgBvAHQAIAAoAFQAZQBzAHQALQBQAGEAdABoACAAIgAkAGUAbgB2ADoASABPAE0ARQAiACkAKQAgAHsAIABOAGUAdwAtAEkAdABlAG0AIAAtAFAAYQB0AGgAIAAiACQAZQBuAHYAOgBIAE8ATQBFACIAIAAtAEkAdABlAG0AVAB5AHAAZQAgAEQAaQByAGUAYwB0AG8AcgB5ACAALQBGAG8AcgBjAGUAIAB9ADsACgBpAGYAIAAoACQARQBuAHYAOgBDAEkAXwBOAEUAVABSAEMAXwBNAEEAQwBIAEkATgBFACkAIAB7AAoAJABuAGUAdAByAGMAPQBbAHMAdAByAGkAbgBnAF0AOgA6AEYAbwByAG0AYQB0ACgAIgB7ADAAfQBcAF8AbgBlAHQAcgBjACIALAAkAEUAbgB2ADoASABPAE0ARQApADsACgAiAG0AYQBjAGgAaQBuAGUAIAAkAEUAbgB2ADoAQwBJAF8ATgBFAFQAUgBDAF8ATQBBAEMASABJAE4ARQAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKACIAbABvAGcAaQBuACAAJABFAG4AdgA6AEMASQBfAE4ARQBUAFIAQwBfAFUAUwBFAFIATgBBAE0ARQAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKACIAcABhAHMAcwB3AG8AcgBkACAAJABFAG4AdgA6AEMASQBfAE4ARQBUAFIAQwBfAFAAQQBTAFMAVwBPAFIARAAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKAH0AOwAKAFsARQBuAHYAaQByAG8AbgBtAGUAbgB0AF0AOgA6AFMAZQB0AEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAcgBpAGEAYgBsAGUAKAAiAEMASQBfAE4ARQBUAFIAQwBfAFAAQQBTAFMAVwBPAFIARAAiACwAJABuAHUAbABsACkAOwAKAFsARQBuAHYAaQByAG8AbgBtAGUAbgB0AF0AOgA6AFMAZQB0AEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAcgBpAGEAYgBsAGUAKAAiAEMASQBfAFMAQwBSAEkAUABUACIALAAkAG4AdQBsAGwAKQA7AAoAYwBkACAAIgAvAHcAbwBvAGQAcABlAGMAawBlAHIALwBzAG8AbQBlACIAOwAKAAoAVwByAGkAdABlAC0ATwB1AHQAcAB1AHQAIAAoACcAKwAgACIAZQBjAGgAbwAgAGgAZQBsAGwAbwAgAHcAbwByAGwAZAAiACcAKQA7AAoAJgAgAGUAYwBoAG8AIABoAGUAbABsAG8AIAB3AG8AcgBsAGQAOwAgAGkAZgAgACgAJABMAEEAUwBUAEUAWABJAFQAQwBPAEQARQAgAC0AbgBlACAAMAApACAAewBlAHgAaQB0ACAAJABMAEEAUwBUAEUAWABJAFQAQwBPAEQARQB9AAoA" posixScriptBase64 = "CmlmIFsgLW4gIiRDSV9ORVRSQ19NQUNISU5FIiBdOyB0aGVuCmNhdCA8PEVPRiA+ICRIT01FLy5uZXRyYwptYWNoaW5lICRDSV9ORVRSQ19NQUNISU5FCmxvZ2luICRDSV9ORVRSQ19VU0VSTkFNRQpwYXNzd29yZCAkQ0lfTkVUUkNfUEFTU1dPUkQKRU9GCmNobW9kIDA2MDAgJEhPTUUvLm5ldHJjCmZpCnVuc2V0IENJX05FVFJDX1VTRVJOQU1FCnVuc2V0IENJX05FVFJDX1BBU1NXT1JECnVuc2V0IENJX1NDUklQVApta2RpciAtcCAiL3dvb2RwZWNrZXIvc29tZSIKY2QgIi93b29kcGVja2VyL3NvbWUiCgplY2hvICsgJ2VjaG8gaGVsbG8gd29ybGQnCmVjaG8gaGVsbG8gd29ybGQK" ) diff --git a/pipeline/backend/common/script_win.go b/pipeline/backend/common/script_win.go index 19a415933..f3c2ff348 100644 --- a/pipeline/backend/common/script_win.go +++ b/pipeline/backend/common/script_win.go @@ -46,6 +46,7 @@ func generateScriptWindows(commands []string, workDir string) string { } const setupScriptWinProto = ` +$LASTEXITCODE = 0 $ErrorActionPreference = 'Stop'; if (-not (Test-Path "{{.WorkDir}}")) { New-Item -Path "{{.WorkDir}}" -ItemType Directory -Force }; if (-not [Environment]::GetEnvironmentVariable('HOME')) { [Environment]::SetEnvironmentVariable('HOME', 'c:\root') }; diff --git a/pipeline/backend/common/script_win_test.go b/pipeline/backend/common/script_win_test.go index 64797ac68..91a49aba8 100644 --- a/pipeline/backend/common/script_win_test.go +++ b/pipeline/backend/common/script_win_test.go @@ -29,6 +29,7 @@ func TestGenerateScriptWin(t *testing.T) { { from: []string{"echo %PATH%", "go build", "go test"}, want: ` +$LASTEXITCODE = 0 $ErrorActionPreference = 'Stop'; if (-not (Test-Path "/woodpecker/some")) { New-Item -Path "/woodpecker/some" -ItemType Directory -Force }; if (-not [Environment]::GetEnvironmentVariable('HOME')) { [Environment]::SetEnvironmentVariable('HOME', 'c:\root') }; diff --git a/pipeline/backend/docker/convert_test.go b/pipeline/backend/docker/convert_test.go index 0ceabd474..10d08ce19 100644 --- a/pipeline/backend/docker/convert_test.go +++ b/pipeline/backend/docker/convert_test.go @@ -279,7 +279,7 @@ func TestToConfigFull(t *testing.T) { } // windowsCIScriptBase64 is the UTF-16LE encoded script, base64 encoded for powershell's -encodedcommand. -const windowsCIScriptBase64 = "CgAkAEUAcgByAG8AcgBBAGMAdABpAG8AbgBQAHIAZQBmAGUAcgBlAG4AYwBlACAAPQAgACcAUwB0AG8AcAAnADsACgBpAGYAIAAoAC0AbgBvAHQAIAAoAFQAZQBzAHQALQBQAGEAdABoACAAIgBDADoALwBzAHIAYwAvAGEAYgBjACIAKQApACAAewAgAE4AZQB3AC0ASQB0AGUAbQAgAC0AUABhAHQAaAAgACIAQwA6AC8AcwByAGMALwBhAGIAYwAiACAALQBJAHQAZQBtAFQAeQBwAGUAIABEAGkAcgBlAGMAdABvAHIAeQAgAC0ARgBvAHIAYwBlACAAfQA7AAoAaQBmACAAKAAtAG4AbwB0ACAAWwBFAG4AdgBpAHIAbwBuAG0AZQBuAHQAXQA6ADoARwBlAHQARQBuAHYAaQByAG8AbgBtAGUAbgB0AFYAYQByAGkAYQBiAGwAZQAoACcASABPAE0ARQAnACkAKQAgAHsAIABbAEUAbgB2AGkAcgBvAG4AbQBlAG4AdABdADoAOgBTAGUAdABFAG4AdgBpAHIAbwBuAG0AZQBuAHQAVgBhAHIAaQBhAGIAbABlACgAJwBIAE8ATQBFACcALAAgACcAYwA6AFwAcgBvAG8AdAAnACkAIAB9ADsACgBpAGYAIAAoAC0AbgBvAHQAIAAoAFQAZQBzAHQALQBQAGEAdABoACAAIgAkAGUAbgB2ADoASABPAE0ARQAiACkAKQAgAHsAIABOAGUAdwAtAEkAdABlAG0AIAAtAFAAYQB0AGgAIAAiACQAZQBuAHYAOgBIAE8ATQBFACIAIAAtAEkAdABlAG0AVAB5AHAAZQAgAEQAaQByAGUAYwB0AG8AcgB5ACAALQBGAG8AcgBjAGUAIAB9ADsACgBpAGYAIAAoACQARQBuAHYAOgBDAEkAXwBOAEUAVABSAEMAXwBNAEEAQwBIAEkATgBFACkAIAB7AAoAJABuAGUAdAByAGMAPQBbAHMAdAByAGkAbgBnAF0AOgA6AEYAbwByAG0AYQB0ACgAIgB7ADAAfQBcAF8AbgBlAHQAcgBjACIALAAkAEUAbgB2ADoASABPAE0ARQApADsACgAiAG0AYQBjAGgAaQBuAGUAIAAkAEUAbgB2ADoAQwBJAF8ATgBFAFQAUgBDAF8ATQBBAEMASABJAE4ARQAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKACIAbABvAGcAaQBuACAAJABFAG4AdgA6AEMASQBfAE4ARQBUAFIAQwBfAFUAUwBFAFIATgBBAE0ARQAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKACIAcABhAHMAcwB3AG8AcgBkACAAJABFAG4AdgA6AEMASQBfAE4ARQBUAFIAQwBfAFAAQQBTAFMAVwBPAFIARAAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKAH0AOwAKAFsARQBuAHYAaQByAG8AbgBtAGUAbgB0AF0AOgA6AFMAZQB0AEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAcgBpAGEAYgBsAGUAKAAiAEMASQBfAE4ARQBUAFIAQwBfAFAAQQBTAFMAVwBPAFIARAAiACwAJABuAHUAbABsACkAOwAKAFsARQBuAHYAaQByAG8AbgBtAGUAbgB0AF0AOgA6AFMAZQB0AEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAcgBpAGEAYgBsAGUAKAAiAEMASQBfAFMAQwBSAEkAUABUACIALAAkAG4AdQBsAGwAKQA7AAoAYwBkACAAIgBDADoALwBzAHIAYwAvAGEAYgBjACIAOwAKAAoAVwByAGkAdABlAC0ATwB1AHQAcAB1AHQAIAAoACcAKwAgACIAZwBvACAAdABlAHMAdAAiACcAKQA7AAoAJgAgAGcAbwAgAHQAZQBzAHQAOwAgAGkAZgAgACgAJABMAEEAUwBUAEUAWABJAFQAQwBPAEQARQAgAC0AbgBlACAAMAApACAAewBlAHgAaQB0ACAAJABMAEEAUwBUAEUAWABJAFQAQwBPAEQARQB9AAoACgBXAHIAaQB0AGUALQBPAHUAdABwAHUAdAAgACgAJwArACAAIgBnAG8AIAB2AGUAdAAgAC4ALwAuAC4ALgAiACcAKQA7AAoAJgAgAGcAbwAgAHYAZQB0ACAALgAvAC4ALgAuADsAIABpAGYAIAAoACQATABBAFMAVABFAFgASQBUAEMATwBEAEUAIAAtAG4AZQAgADAAKQAgAHsAZQB4AGkAdAAgACQATABBAFMAVABFAFgASQBUAEMATwBEAEUAfQAKAA==" +const windowsCIScriptBase64 = "CgAkAEwAQQBTAFQARQBYAEkAVABDAE8ARABFACAAPQAgADAACgAkAEUAcgByAG8AcgBBAGMAdABpAG8AbgBQAHIAZQBmAGUAcgBlAG4AYwBlACAAPQAgACcAUwB0AG8AcAAnADsACgBpAGYAIAAoAC0AbgBvAHQAIAAoAFQAZQBzAHQALQBQAGEAdABoACAAIgBDADoALwBzAHIAYwAvAGEAYgBjACIAKQApACAAewAgAE4AZQB3AC0ASQB0AGUAbQAgAC0AUABhAHQAaAAgACIAQwA6AC8AcwByAGMALwBhAGIAYwAiACAALQBJAHQAZQBtAFQAeQBwAGUAIABEAGkAcgBlAGMAdABvAHIAeQAgAC0ARgBvAHIAYwBlACAAfQA7AAoAaQBmACAAKAAtAG4AbwB0ACAAWwBFAG4AdgBpAHIAbwBuAG0AZQBuAHQAXQA6ADoARwBlAHQARQBuAHYAaQByAG8AbgBtAGUAbgB0AFYAYQByAGkAYQBiAGwAZQAoACcASABPAE0ARQAnACkAKQAgAHsAIABbAEUAbgB2AGkAcgBvAG4AbQBlAG4AdABdADoAOgBTAGUAdABFAG4AdgBpAHIAbwBuAG0AZQBuAHQAVgBhAHIAaQBhAGIAbABlACgAJwBIAE8ATQBFACcALAAgACcAYwA6AFwAcgBvAG8AdAAnACkAIAB9ADsACgBpAGYAIAAoAC0AbgBvAHQAIAAoAFQAZQBzAHQALQBQAGEAdABoACAAIgAkAGUAbgB2ADoASABPAE0ARQAiACkAKQAgAHsAIABOAGUAdwAtAEkAdABlAG0AIAAtAFAAYQB0AGgAIAAiACQAZQBuAHYAOgBIAE8ATQBFACIAIAAtAEkAdABlAG0AVAB5AHAAZQAgAEQAaQByAGUAYwB0AG8AcgB5ACAALQBGAG8AcgBjAGUAIAB9ADsACgBpAGYAIAAoACQARQBuAHYAOgBDAEkAXwBOAEUAVABSAEMAXwBNAEEAQwBIAEkATgBFACkAIAB7AAoAJABuAGUAdAByAGMAPQBbAHMAdAByAGkAbgBnAF0AOgA6AEYAbwByAG0AYQB0ACgAIgB7ADAAfQBcAF8AbgBlAHQAcgBjACIALAAkAEUAbgB2ADoASABPAE0ARQApADsACgAiAG0AYQBjAGgAaQBuAGUAIAAkAEUAbgB2ADoAQwBJAF8ATgBFAFQAUgBDAF8ATQBBAEMASABJAE4ARQAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKACIAbABvAGcAaQBuACAAJABFAG4AdgA6AEMASQBfAE4ARQBUAFIAQwBfAFUAUwBFAFIATgBBAE0ARQAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKACIAcABhAHMAcwB3AG8AcgBkACAAJABFAG4AdgA6AEMASQBfAE4ARQBUAFIAQwBfAFAAQQBTAFMAVwBPAFIARAAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKAH0AOwAKAFsARQBuAHYAaQByAG8AbgBtAGUAbgB0AF0AOgA6AFMAZQB0AEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAcgBpAGEAYgBsAGUAKAAiAEMASQBfAE4ARQBUAFIAQwBfAFAAQQBTAFMAVwBPAFIARAAiACwAJABuAHUAbABsACkAOwAKAFsARQBuAHYAaQByAG8AbgBtAGUAbgB0AF0AOgA6AFMAZQB0AEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAcgBpAGEAYgBsAGUAKAAiAEMASQBfAFMAQwBSAEkAUABUACIALAAkAG4AdQBsAGwAKQA7AAoAYwBkACAAIgBDADoALwBzAHIAYwAvAGEAYgBjACIAOwAKAAoAVwByAGkAdABlAC0ATwB1AHQAcAB1AHQAIAAoACcAKwAgACIAZwBvACAAdABlAHMAdAAiACcAKQA7AAoAJgAgAGcAbwAgAHQAZQBzAHQAOwAgAGkAZgAgACgAJABMAEEAUwBUAEUAWABJAFQAQwBPAEQARQAgAC0AbgBlACAAMAApACAAewBlAHgAaQB0ACAAJABMAEEAUwBUAEUAWABJAFQAQwBPAEQARQB9AAoACgBXAHIAaQB0AGUALQBPAHUAdABwAHUAdAAgACgAJwArACAAIgBnAG8AIAB2AGUAdAAgAC4ALwAuAC4ALgAiACcAKQA7AAoAJgAgAGcAbwAgAHYAZQB0ACAALgAvAC4ALgAuADsAIABpAGYAIAAoACQATABBAFMAVABFAFgASQBUAEMATwBEAEUAIAAtAG4AZQAgADAAKQAgAHsAZQB4AGkAdAAgACQATABBAFMAVABFAFgASQBUAEMATwBEAEUAfQAKAA==" func TestToWindowsConfig(t *testing.T) { engine := docker{ @@ -342,6 +342,7 @@ func TestToWindowsConfig(t *testing.T) { ciScript, err := unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM).NewDecoder().Bytes(utf16leScript) if assert.NoError(t, err) { assert.EqualValues(t, ` +$LASTEXITCODE = 0 $ErrorActionPreference = 'Stop'; if (-not (Test-Path "C:/src/abc")) { New-Item -Path "C:/src/abc" -ItemType Directory -Force }; if (-not [Environment]::GetEnvironmentVariable('HOME')) { [Environment]::SetEnvironmentVariable('HOME', 'c:\root') };