mirror of
https://github.com/libgit2/libgit2.git
synced 2026-06-22 06:26:26 +00:00
crlf: re-use existing crlf script to create odb
Re-use the existing crlf data generation script for creating the to-odb dataset. Also, store the actual file contents instead of the ID so that we can identify differences instead of detecting that differences exist.
This commit is contained in:
1
tests/resources/crlf/.gitattributes
vendored
Normal file
1
tests/resources/crlf/.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
||||
* -text
|
||||
@@ -67,6 +67,63 @@ create_to_workdir_data() {
|
||||
fi
|
||||
}
|
||||
|
||||
create_to_odb_data() {
|
||||
local input=$1
|
||||
local output=$2
|
||||
local tempdir=$3
|
||||
local systype=$4
|
||||
local autocrlf=$5
|
||||
local safecrlf=$6
|
||||
local attr=$7
|
||||
|
||||
local destdir="${output}/${systype}_to_odb/autocrlf_${autocrlf},safecrlf_${safecrlf}"
|
||||
|
||||
if [ "$attr" != "" ]; then
|
||||
local attrdir=`echo $attr | sed -e "s/ /,/g" | sed -e "s/=/_/g"`
|
||||
destdir="${destdir},${attrdir}"
|
||||
fi
|
||||
|
||||
if [ "$tempdir" = "" ]; then
|
||||
local workdir="${destdir}/_workdir"
|
||||
else
|
||||
local workdir="${tempdir}/generate_crlf_${RANDOM}"
|
||||
fi
|
||||
|
||||
echo "Creating ${destdir}"
|
||||
mkdir -p "${destdir}"
|
||||
|
||||
git init "${workdir}" >/dev/null
|
||||
git --work-tree="${workdir}" --git-dir="${workdir}/.git" config core.autocrlf "${autocrlf}"
|
||||
git --work-tree="${workdir}" --git-dir="${workdir}/.git" config core.safecrlf "${safecrlf}"
|
||||
|
||||
if [ "$attr" != "" ]; then
|
||||
echo "* ${attr}" > "${workdir}/.gitattributes"
|
||||
fi
|
||||
|
||||
cp ${input}/* ${workdir}
|
||||
|
||||
for path in ${workdir}/*; do
|
||||
filename=$(basename $path)
|
||||
failed=""
|
||||
output=$(git --work-tree="${workdir}" --git-dir="${workdir}/.git" add ${filename} 2>&1) || failed=1
|
||||
|
||||
if [ ! -z "${failed}" -a "${output:0:35}" == "fatal: LF would be replaced by CRLF" ]; then
|
||||
echo "LF would be replaced by CRLF in '${filename}'" > "${destdir}/${filename}.fail"
|
||||
elif [ ! -z "${failed}" -a "${output:0:35}" == "fatal: CRLF would be replaced by LF" ]; then
|
||||
echo "CRLF would be replaced by LF in '${filename}'" > "${destdir}/${filename}.fail"
|
||||
elif [ ! -z "${failed}" ]; then
|
||||
echo "failed to add ${filename}: ${output}" 1>&2
|
||||
exit 1
|
||||
else
|
||||
git --work-tree="${workdir}" --git-dir="${workdir}/.git" cat-file blob ":${filename}" > "${destdir}/${filename}"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$tempdir" != "" ]; then
|
||||
rm -rf "${workdir}"
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ `uname -s` == MINGW* ]]; then
|
||||
systype="windows"
|
||||
else
|
||||
@@ -80,6 +137,11 @@ for autocrlf in true false input; do
|
||||
|
||||
create_to_workdir_data "${input}" "${output}" "${tempdir}" \
|
||||
"${systype}" "${autocrlf}" "${attr}"
|
||||
|
||||
for safecrlf in true false warn; do
|
||||
create_to_odb_data "${input}" "${output}" "${tempdir}" \
|
||||
"${systype}" "${autocrlf}" "${safecrlf}" "${attr}"
|
||||
done
|
||||
done
|
||||
done
|
||||
|
||||
|
||||
@@ -1,118 +0,0 @@
|
||||
#!/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