diff --git a/tests/generate_crlf.sh b/tests/generate_crlf.sh new file mode 100644 index 000000000..d3fd1bb9a --- /dev/null +++ b/tests/generate_crlf.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash + +set -e + +if [ "$1" == "" -o "$2" == "" ]; then + echo "usage: $0 crlfrepo directory [tempdir]" + exit 1 +fi + +input=$1 +output=$2 +tempdir=$3 + +set -u + +create_repo() { + local input=$1 + local output=$2 + local tempdir=$3 + local systype=$4 + local autocrlf=$5 + local attr=$6 + + local worktree="${output}/${systype}/autocrlf_${autocrlf}" + + if [ "$attr" != "" ]; then + local attrdir=`echo $attr | sed -e "s/ /,/g" | sed -e "s/=/_/g"` + worktree="${worktree},${attrdir}" + fi + + if [ "$tempdir" = "" ]; then + local gitdir="${worktree}/.git" + else + local gitdir="${tempdir}/generate_crlf_${RANDOM}" + fi + + echo "Creating ${worktree}" + mkdir -p "${worktree}" + + git clone --no-checkout --quiet --bare "${input}/.gitted" "${gitdir}" + git --work-tree="${worktree}" --git-dir="${gitdir}" config core.autocrlf ${autocrlf} + + if [ "$attr" != "" ]; then + echo "* ${attr}" >> "${worktree}/.gitattributes" + fi + + git --work-tree="${worktree}" --git-dir="${gitdir}" checkout HEAD + + if [ "$attr" != "" ]; then + rm "${worktree}/.gitattributes" + fi + + if [ "$tempdir" != "" ]; then + rm -rf "${gitdir}" + fi +} + +if [[ `uname -s` == MINGW* ]]; then + systype="windows" +else + systype="posix" +fi + +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_repo "${input}" "${output}" "${tempdir}" \ + "${systype}" "${autocrlf}" "${attr}" + done +done +