Skip to content

Commit 6df74b5

Browse files
committed
ui-tests: convert DOS line endings to Unix ones
Git is still totally unable to represent DOS line endings gracefully, so let's just follow the German wisdom that between two parties, the wise one gives in. Signed-off-by: Johannes Schindelin <[email protected]>
1 parent dcb1701 commit 6df74b5

File tree

1 file changed

+128
-128
lines changed

1 file changed

+128
-128
lines changed

ui-tests/background-hook.ahk

Lines changed: 128 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -1,129 +1,129 @@
1-
#Requires AutoHotkey v2.0
2-
3-
; This script is an integration test for the following scenario:
4-
; A Git hook spawns a background process that outputs some text
5-
; to the console even after Git has exited.
6-
7-
; At some point in time, the Cygwin/MSYS2 runtime left the console
8-
; in a state where it was not possible to navigate the history via
9-
; CursorUp/Down, as reported in https://github.com/microsoft/git/issues/730.
10-
; This was fixed in the Cygwin/MSYS2 runtime, but then regressed again.
11-
; This test is meant to verify that the issue is fixed and remains so.
12-
13-
; First, set the worktree path; This path will be reused
14-
; for the `.log` file).
15-
if A_Args.Length > 0
16-
workTree := A_Args[1]
17-
else
18-
{
19-
; Create a unique worktree path in the TEMP directory.
20-
workTree := EnvGet('TEMP') . '\git-test-background-hook'
21-
if FileExist(workTree)
22-
{
23-
counter := 0
24-
while FileExist(workTree '-' counter)
25-
counter++
26-
workTree := workTree '-' counter
27-
}
28-
}
29-
30-
Info(text) {
31-
FileAppend text '`n', workTree '.log'
32-
}
33-
34-
closeWindow := false
35-
childPid := 0
36-
ExitWithError(error) {
37-
Info 'Error: ' error
38-
if closeWindow
39-
WinClose "A"
40-
else if childPid != 0
41-
ProcessClose childPid
42-
ExitApp 1
43-
}
44-
45-
RunWaitOne(command) {
46-
shell := ComObject("WScript.Shell")
47-
; Execute a single command via cmd.exe
48-
exec := shell.Exec(A_ComSpec " /C " command)
49-
; Read and return the command's output
50-
return exec.StdOut.ReadAll()
51-
}
52-
53-
SetWorkingDir(EnvGet('TEMP'))
54-
Info 'uname: ' RunWaitOne('uname -a')
55-
Info RunWaitOne('git version --build-options')
56-
57-
RunWait('git init "' workTree '"', '', 'Hide')
58-
if A_LastError
59-
ExitWithError 'Could not initialize Git worktree at: ' workTree
60-
61-
SetWorkingDir(workTree)
62-
if A_LastError
63-
ExitWithError 'Could not set working directory to: ' workTree
64-
65-
if not FileExist('.git/hooks') and not DirCreate('.git/hooks')
66-
ExitWithError 'Could not create hooks directory: ' workTree
67-
68-
FileAppend("#!/bin/sh`npowershell -command 'for ($i = 0; $i -lt 50; $i++) { echo $i; sleep -milliseconds 10 }' &`n", '.git/hooks/pre-commit')
69-
if A_LastError
70-
ExitWithError 'Could not create pre-commit hook: ' A_LastError
71-
72-
Run 'wt.exe -d . ' A_ComSpec ' /d', , , &childPid
73-
if A_LastError
74-
ExitWithError 'Error launching CMD: ' A_LastError
75-
Info 'Launched CMD: ' childPid
76-
if not WinWait(A_ComSpec, , 9)
77-
ExitWithError 'CMD window did not appear'
78-
Info 'Got window'
79-
WinActivate
80-
CloseWindow := true
81-
WinMove 0, 0
82-
Info 'Moved window to top left (so that the bottom is not cut off)'
83-
84-
CaptureText() {
85-
ControlGetPos &cx, &cy, &cw, &ch, 'Windows.UI.Composition.DesktopWindowContentBridge1', "A"
86-
titleBarHeight := 54
87-
scrollBarWidth := 28
88-
pad := 8
89-
90-
SavedClipboard := ClipboardAll
91-
A_Clipboard := ''
92-
SendMode('Event')
93-
MouseMove cx + pad, cy + titleBarHeight + pad
94-
MouseClickDrag 'Left', , , cx + cw - scrollBarWidth, cy + ch - pad, , ''
95-
MouseClick 'Right'
96-
ClipWait()
97-
Result := A_Clipboard
98-
Clipboard := SavedClipboard
99-
return Result
100-
}
101-
102-
Info('Setting committer identity')
103-
Send('git config user.name Test{Enter}git config user.email [email protected]{Enter}')
104-
105-
Info('Committing')
106-
Send('git commit --allow-empty -m zOMG{Enter}')
107-
; Wait for the hook to finish printing
108-
While not RegExMatch(CaptureText(), '`n49$')
109-
{
110-
Sleep 100
111-
if A_Index > 1000
112-
ExitWithError 'Timed out waiting for commit to finish'
113-
MouseClick 'WheelDown', , , 20
114-
}
115-
Info('Hook finished')
116-
117-
; Verify that CursorUp shows the previous command
118-
Send('{Up}')
119-
Sleep 150
120-
Text := CaptureText()
121-
if not RegExMatch(Text, 'git commit --allow-empty -m zOMG *$')
122-
ExitWithError 'Cursor Up did not work: ' Text
123-
Info('Match!')
124-
125-
Send('^C')
126-
Send('exit{Enter}')
127-
Sleep 50
128-
SetWorkingDir(EnvGet('TEMP'))
1+
#Requires AutoHotkey v2.0
2+
3+
; This script is an integration test for the following scenario:
4+
; A Git hook spawns a background process that outputs some text
5+
; to the console even after Git has exited.
6+
7+
; At some point in time, the Cygwin/MSYS2 runtime left the console
8+
; in a state where it was not possible to navigate the history via
9+
; CursorUp/Down, as reported in https://github.com/microsoft/git/issues/730.
10+
; This was fixed in the Cygwin/MSYS2 runtime, but then regressed again.
11+
; This test is meant to verify that the issue is fixed and remains so.
12+
13+
; First, set the worktree path; This path will be reused
14+
; for the `.log` file).
15+
if A_Args.Length > 0
16+
workTree := A_Args[1]
17+
else
18+
{
19+
; Create a unique worktree path in the TEMP directory.
20+
workTree := EnvGet('TEMP') . '\git-test-background-hook'
21+
if FileExist(workTree)
22+
{
23+
counter := 0
24+
while FileExist(workTree '-' counter)
25+
counter++
26+
workTree := workTree '-' counter
27+
}
28+
}
29+
30+
Info(text) {
31+
FileAppend text '`n', workTree '.log'
32+
}
33+
34+
closeWindow := false
35+
childPid := 0
36+
ExitWithError(error) {
37+
Info 'Error: ' error
38+
if closeWindow
39+
WinClose "A"
40+
else if childPid != 0
41+
ProcessClose childPid
42+
ExitApp 1
43+
}
44+
45+
RunWaitOne(command) {
46+
shell := ComObject("WScript.Shell")
47+
; Execute a single command via cmd.exe
48+
exec := shell.Exec(A_ComSpec " /C " command)
49+
; Read and return the command's output
50+
return exec.StdOut.ReadAll()
51+
}
52+
53+
SetWorkingDir(EnvGet('TEMP'))
54+
Info 'uname: ' RunWaitOne('uname -a')
55+
Info RunWaitOne('git version --build-options')
56+
57+
RunWait('git init "' workTree '"', '', 'Hide')
58+
if A_LastError
59+
ExitWithError 'Could not initialize Git worktree at: ' workTree
60+
61+
SetWorkingDir(workTree)
62+
if A_LastError
63+
ExitWithError 'Could not set working directory to: ' workTree
64+
65+
if not FileExist('.git/hooks') and not DirCreate('.git/hooks')
66+
ExitWithError 'Could not create hooks directory: ' workTree
67+
68+
FileAppend("#!/bin/sh`npowershell -command 'for ($i = 0; $i -lt 50; $i++) { echo $i; sleep -milliseconds 10 }' &`n", '.git/hooks/pre-commit')
69+
if A_LastError
70+
ExitWithError 'Could not create pre-commit hook: ' A_LastError
71+
72+
Run 'wt.exe -d . ' A_ComSpec ' /d', , , &childPid
73+
if A_LastError
74+
ExitWithError 'Error launching CMD: ' A_LastError
75+
Info 'Launched CMD: ' childPid
76+
if not WinWait(A_ComSpec, , 9)
77+
ExitWithError 'CMD window did not appear'
78+
Info 'Got window'
79+
WinActivate
80+
CloseWindow := true
81+
WinMove 0, 0
82+
Info 'Moved window to top left (so that the bottom is not cut off)'
83+
84+
CaptureText() {
85+
ControlGetPos &cx, &cy, &cw, &ch, 'Windows.UI.Composition.DesktopWindowContentBridge1', "A"
86+
titleBarHeight := 54
87+
scrollBarWidth := 28
88+
pad := 8
89+
90+
SavedClipboard := ClipboardAll
91+
A_Clipboard := ''
92+
SendMode('Event')
93+
MouseMove cx + pad, cy + titleBarHeight + pad
94+
MouseClickDrag 'Left', , , cx + cw - scrollBarWidth, cy + ch - pad, , ''
95+
MouseClick 'Right'
96+
ClipWait()
97+
Result := A_Clipboard
98+
Clipboard := SavedClipboard
99+
return Result
100+
}
101+
102+
Info('Setting committer identity')
103+
Send('git config user.name Test{Enter}git config user.email [email protected]{Enter}')
104+
105+
Info('Committing')
106+
Send('git commit --allow-empty -m zOMG{Enter}')
107+
; Wait for the hook to finish printing
108+
While not RegExMatch(CaptureText(), '`n49$')
109+
{
110+
Sleep 100
111+
if A_Index > 1000
112+
ExitWithError 'Timed out waiting for commit to finish'
113+
MouseClick 'WheelDown', , , 20
114+
}
115+
Info('Hook finished')
116+
117+
; Verify that CursorUp shows the previous command
118+
Send('{Up}')
119+
Sleep 150
120+
Text := CaptureText()
121+
if not RegExMatch(Text, 'git commit --allow-empty -m zOMG *$')
122+
ExitWithError 'Cursor Up did not work: ' Text
123+
Info('Match!')
124+
125+
Send('^C')
126+
Send('exit{Enter}')
127+
Sleep 50
128+
SetWorkingDir(EnvGet('TEMP'))
129129
DirDelete(workTree, true)

0 commit comments

Comments
 (0)