-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgenerate-cr-and-crlf-tests.sh
executable file
·38 lines (31 loc) · 1.07 KB
/
generate-cr-and-crlf-tests.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/env bash
set -o errexit || exit
set -o nounset
set -o pipefail
exec 0<&-
APP_NAME=$(basename -- "$0")
DEST_DIR='test/LineBreaks'
COMMENT="This file automatically generated by $APP_NAME (do not modify!)"
mkdir -p -- "$DEST_DIR"/CRLF/Q{M,N}{,B,S}/
# mkdir -p -- "$DEST_DIR"/{CR,CRLF}/Q{M,N}{,B,S}/
handle-break() {
set -o errexit || exit
set -o nounset
set -o pipefail
local dir="$DEST_DIR/$2/$3"
local file="$dir/${1##*/}"
local eof=; if [[ $2 == "CR" ]]; then eof='\r'; else eof='\r\n'; fi
local module_name="module LineBreaks.$2.Q\1\2.Spec"
cp -f -- "$1" "$dir/"
sed -i -- "1s/^/-- $COMMENT\n/" "$file"
sed -i -- "s/^module Q\(M\|N\)\(\|B\|S\).Spec/$module_name/" "$file"
sed -zi -- "s/\n/$eof/gm" "$file"
}
echo test/Q{M,N}{,B,S}/Spec.hs | tr ' ' '\n' | while read -r item; do
x=${item#*/}; x=${x%/*}
# It seems this line breaks format is not allowed in haskell sources anyway.
# GHC fails with errors like this:
# test/LineBreaks/CR/QM/Spec.hs:1:93: error: Not in scope: `spec'
# handle-break "$item" "CR" "$x"
handle-break "$item" "CRLF" "$x"
done