mirror of
https://github.com/libgit2/libgit2.git
synced 2026-06-22 06:26:26 +00:00
crlf: script to generate expected crlf data for adding files to index
Include a shell script that will generate the expected data of OIDs and failures for calling git.git to capture its output as a test resource. Right now, there is no need to differentiate different systems as git behaves the same on all systems IIRC. Signed-off-by: Sven Strickroth <email@cs-ware.de>
This commit is contained in:
committed by
Edward Thomson
parent
c3169e6f62
commit
9065160bfb
@@ -1,2 +1,3 @@
|
||||
This test data was generated using the `tests/resources/generate_crlf.sh`
|
||||
script. Please see that script for usage information.
|
||||
(posix and windows directories) and `tests/resources/generate_crlf_checkin.sh`
|
||||
(checkin_results directory) scripts. Please see these scripts for usage information.
|
||||
|
||||
4
tests/resources/crlf_data/checkin_input_files/all-crlf
Normal file
4
tests/resources/crlf_data/checkin_input_files/all-crlf
Normal file
@@ -0,0 +1,4 @@
|
||||
crlf
|
||||
crlf
|
||||
crlf
|
||||
crlf
|
||||
@@ -0,0 +1,4 @@
|
||||
crlf
|
||||
crlf
|
||||
crlf
|
||||
crlf
|
||||
5
tests/resources/crlf_data/checkin_input_files/all-lf
Normal file
5
tests/resources/crlf_data/checkin_input_files/all-lf
Normal file
@@ -0,0 +1,5 @@
|
||||
lf
|
||||
lf
|
||||
lf
|
||||
lf
|
||||
lf
|
||||
@@ -0,0 +1,5 @@
|
||||
lf
|
||||
lf
|
||||
lf
|
||||
lf
|
||||
lf
|
||||
@@ -0,0 +1,4 @@
|
||||
one
|
||||
two
|
||||
three
|
||||
four
|
||||
@@ -0,0 +1,4 @@
|
||||
one
|
||||
two
|
||||
three
|
||||
four
|
||||
@@ -0,0 +1,3 @@
|
||||
one
|
||||
two
three
|
||||
four
|
||||
@@ -0,0 +1,3 @@
|
||||
one
|
||||
two
three
|
||||
four
|
||||
@@ -0,0 +1,22 @@
|
||||
⚽The rest is ASCII01.
|
||||
The rest is ASCII02.
|
||||
The rest is ASCII03.
|
||||
The rest is ASCII04.
|
||||
The rest is ASCII05.
|
||||
The rest is ASCII06.
|
||||
The rest is ASCII07.
|
||||
The rest is ASCII08.
|
||||
The rest is ASCII09.
|
||||
The rest is ASCII10.
|
||||
The rest is ASCII11.
|
||||
The rest is ASCII12.
|
||||
The rest is ASCII13.
|
||||
The rest is ASCII14.
|
||||
The rest is ASCII15.
|
||||
The rest is ASCII16.
|
||||
The rest is ASCII17.
|
||||
The rest is ASCII18.
|
||||
The rest is ASCII19.
|
||||
The rest is ASCII20.
|
||||
The rest is ASCII21.
|
||||
The rest is ASCII22.
|
||||
@@ -0,0 +1,22 @@
|
||||
⚽The rest is ASCII01.
|
||||
The rest is ASCII02.
|
||||
The rest is ASCII03.
|
||||
The rest is ASCII04.
|
||||
The rest is ASCII05.
|
||||
The rest is ASCII06.
|
||||
The rest is ASCII07.
|
||||
The rest is ASCII08.
|
||||
The rest is ASCII09.
|
||||
The rest is ASCII10.
|
||||
The rest is ASCII11.
|
||||
The rest is ASCII12.
|
||||
The rest is ASCII13.
|
||||
The rest is ASCII14.
|
||||
The rest is ASCII15.
|
||||
The rest is ASCII16.
|
||||
The rest is ASCII17.
|
||||
The rest is ASCII18.
|
||||
The rest is ASCII19.
|
||||
The rest is ASCII20.
|
||||
The rest is ASCII21.
|
||||
The rest is ASCII22.
|
||||
@@ -0,0 +1,4 @@
|
||||
Lets sing!
|
||||
♫♪♬♩
|
||||
Eat food
|
||||
🍅🍕
|
||||
@@ -0,0 +1,4 @@
|
||||
Lets sing!
|
||||
♫♪♬♩
|
||||
Eat food
|
||||
🍅🍕
|
||||
@@ -0,0 +1,3 @@
|
||||
one
|
||||
two
three
|
||||
four
|
||||
@@ -0,0 +1,3 @@
|
||||
one
|
||||
two
three
|
||||
four
|
||||
5
tests/resources/crlf_data/checkin_input_files/more-crlf
Normal file
5
tests/resources/crlf_data/checkin_input_files/more-crlf
Normal file
@@ -0,0 +1,5 @@
|
||||
crlf
|
||||
crlf
|
||||
lf
|
||||
crlf
|
||||
crlf
|
||||
@@ -0,0 +1,5 @@
|
||||
crlf
|
||||
crlf
|
||||
lf
|
||||
crlf
|
||||
crlf
|
||||
5
tests/resources/crlf_data/checkin_input_files/more-lf
Normal file
5
tests/resources/crlf_data/checkin_input_files/more-lf
Normal file
@@ -0,0 +1,5 @@
|
||||
lf
|
||||
lf
|
||||
crlf
|
||||
lf
|
||||
lf
|
||||
@@ -0,0 +1,5 @@
|
||||
lf
|
||||
lf
|
||||
crlf
|
||||
lf
|
||||
lf
|
||||
@@ -8,9 +8,9 @@
|
||||
# the configuration that git produces.
|
||||
#
|
||||
# To update the test resource data, from the test resource directory:
|
||||
# git rm -r ./crlf_data
|
||||
# git rm -r ./crlf_data/{posix,windows}
|
||||
# sh ./generate_crlf.sh ./crlf ./crlf_data /tmp/crlf_gitdirs
|
||||
# git add ./crlf_data
|
||||
# git add ./crlf_data/{posix,windows}
|
||||
|
||||
set -e
|
||||
|
||||
|
||||
118
tests/resources/generate_crlf_checkin.sh
Executable file
118
tests/resources/generate_crlf_checkin.sh
Executable file
@@ -0,0 +1,118 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# This script will generate the test corpus for CR/LF data using git;
|
||||
# we created files with all possible line ending varieties (all LF, all
|
||||
# CRLF, mixed, etc) on all the possible line ending configurations
|
||||
# (`core.autocrlf=true`, `text=auto` in gitattributes, etc) add add them
|
||||
# to git and check the added hash. This allows us to validate that our
|
||||
# configuration will match byte-for-byte the configuration that git produces.
|
||||
#
|
||||
# To update the test resource data, from the test resource directory:
|
||||
# git rm -r ./crlf_data/checkin_results
|
||||
# sh ./generate_crlf_checkin.sh ./crlf_data/checkin_input_files ./crlf_data/checkin_results /tmp/crlf_gitdirs
|
||||
# git add ./crlf_data/checkin_results
|
||||
|
||||
set -e
|
||||
|
||||
if [ "$1" == "" -o "$2" == "" ]; then
|
||||
echo "usage: $0 inputfiles-directory directory [tempdir]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
input=$1
|
||||
output=$2
|
||||
tempdir=$3
|
||||
|
||||
if [ ${input:1} != "/" ]; then
|
||||
input="$PWD/$input"
|
||||
fi
|
||||
|
||||
if [ ${output:1} != "/" ]; then
|
||||
output="$PWD/$output"
|
||||
fi
|
||||
|
||||
if [ "${tempdir}" != "" -a "${tempdir:1}" != "/" ]; then
|
||||
tempdir="$PWD/$tempdir"
|
||||
fi
|
||||
|
||||
set -u
|
||||
|
||||
create_test_data() {
|
||||
local input=$1
|
||||
local output=$2
|
||||
local tempdir=$3
|
||||
local safecrlf=$4
|
||||
local autocrlf=$5
|
||||
local attr=$6
|
||||
|
||||
local destdir="${output}/safecrlf_${safecrlf},autocrlf_${autocrlf}"
|
||||
|
||||
if [ "$attr" != "" ]; then
|
||||
local attrdir=`echo $attr | sed -e "s/ /,/g" | sed -e "s/=/_/g"`
|
||||
destdir="${destdir},${attrdir}"
|
||||
fi
|
||||
|
||||
if [ "$tempdir" = "" ]; then
|
||||
tempdir="${output}/generate_crlf_${RANDOM}"
|
||||
else
|
||||
tempdir="${tempdir}/generate_crlf_${RANDOM}"
|
||||
fi
|
||||
|
||||
echo "Generating ${destdir}"
|
||||
mkdir -p "${destdir}"
|
||||
mkdir -p "${tempdir}"
|
||||
|
||||
git init "${tempdir}"
|
||||
if [ "$attr" != "" ]; then
|
||||
echo "* ${attr}" > "${tempdir}/.gitattributes"
|
||||
fi
|
||||
cp "$input"/* "${tempdir}"
|
||||
pushd "${tempdir}"
|
||||
git config core.autocrlf ${autocrlf}
|
||||
git config core.safecrlf ${safecrlf}
|
||||
for file in *
|
||||
do
|
||||
process_file "$destdir" "$file"
|
||||
done
|
||||
popd
|
||||
|
||||
rm -rf "$tempdir"
|
||||
}
|
||||
|
||||
function process_file() {
|
||||
destdir=$1
|
||||
file=$2
|
||||
|
||||
rm -f "$destdir/$file.obj" "$destdir/$file.fail"
|
||||
|
||||
set +e
|
||||
OUTPUT=$(git add "$file" 2>&1)
|
||||
if [ $? -ne 0 ]; then
|
||||
set -e
|
||||
touch "$destdir/$file.fail"
|
||||
if [ "${OUTPUT:0:38}" == "fatal: CRLF would be replaced by LF in" ]; then
|
||||
echo "CRLF would be replaced by LF" > "$destdir/$file.fail"
|
||||
elif [ "${OUTPUT:0:38}" == "fatal: LF would be replaced by CRLF in" ]; then
|
||||
echo "LF would be replaced by CRLF" > "$destdir/$file.fail"
|
||||
fi
|
||||
else
|
||||
OBJ=$(git ls-files -s | cut -d ' ' -f 2)
|
||||
set -e
|
||||
echo "$OBJ" > "$destdir/$file.obj"
|
||||
fi
|
||||
rm -f .git/index
|
||||
}
|
||||
|
||||
export LC_ALL=C
|
||||
|
||||
for safecrlf in true false warn; do
|
||||
for autocrlf in true false input; do
|
||||
for attr in "" text text=auto -text crlf -crlf eol=lf eol=crlf \
|
||||
"text eol=lf" "text eol=crlf" \
|
||||
"text=auto eol=lf" "text=auto eol=crlf"; do
|
||||
|
||||
create_test_data "${input}" "${output}" "${tempdir}" \
|
||||
"${safecrlf}" "${autocrlf}" "${attr}"
|
||||
done
|
||||
done
|
||||
done
|
||||
Reference in New Issue
Block a user