Commit 9065160b by Sven Strickroth Committed by Edward Thomson

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>
parent c3169e6f
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.
⚽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.
⚽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.
one
two three
four
\ No newline at end of file
one
two three
four
\ No newline at end of file
......@@ -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
......
#!/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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment