#!/usr/bin/env bash
. $(dirname "${BASH_SOURCE[0]}")/common.sh
cd "$CURR_DIR"/describe-project
temp_file_normal=$(mktemp $(basename $0).XXXXXX)
temp_file_zero_delim=$(mktemp $(basename $0).XXXXXX)
function cleanup {
rm $temp_file_normal
rm $temp_file_zero_delim
}
trap cleanup EXIT
# Test list-style project data
if ! $DUB describe --compiler=$DC --data-list \
--data=target-type \
--data=target-path \
--data=target-name \
--data=working-directory \
--data=main-source-file \
--data=dflags \
--data=lflags \
--data=libs \
--data=linker-files \
--data=source-files \
--data=copy-files \
--data=versions \
--data=debug-versions \
--data=import-paths \
--data=string-import-paths \
--data=import-files \
--data=string-import-files \
--data=pre-generate-commands \
--data=post-generate-commands \
--data=pre-build-commands \
--data=post-build-commands \
--data=requirements \
--data=options \
> "$temp_file_normal"; then
die 'Printing list-style project data failed!'
fi
if ! $DUB describe --compiler=$DC --data-0 --data-list \
--data=target-type \
--data=target-path \
--data=target-name \
--data=working-directory \
--data=main-source-file \
--data=dflags \
--data=lflags \
--data=libs \
--data=linker-files \
--data=source-files \
--data=copy-files \
--data=versions \
--data=debug-versions \
--data=import-paths \
--data=string-import-paths \
--data=import-files \
--data=string-import-files \
--data=pre-generate-commands \
--data=post-generate-commands \
--data=pre-build-commands \
--data=post-build-commands \
--data=requirements \
--data=options \
| xargs -0 printf "%s\n" > "$temp_file_zero_delim"; then
die 'Printing null-delimited list-style project data failed!'
fi
if ! diff -Z "$temp_file_normal" "$temp_file_zero_delim"; then
die 'The null-delimited list-style project data did not match the expected output!'
fi
# Test --import-paths
if ! $DUB describe --compiler=$DC --import-paths \
> "$temp_file_normal"; then
die 'Printing --import-paths failed!'
fi
if ! $DUB describe --compiler=$DC --data-0 --import-paths \
| xargs -0 printf "%s\n" > "$temp_file_zero_delim"; then
die 'Printing null-delimited --import-paths failed!'
fi
if ! diff -Z -B "$temp_file_normal" "$temp_file_zero_delim"; then
die 'The null-delimited --import-paths data did not match the expected output!'
fi
# DMD-only beyond this point
if [ "${DC}" != "dmd" ]; then
echo Skipping DMD-centric tests on configuration that lacks DMD.
exit
fi
# Test dmd-style --data=versions
if ! $DUB describe --compiler=$DC --data=versions \
> "$temp_file_normal"; then
die 'Printing dmd-style --data=versions failed!'
fi
if ! $DUB describe --compiler=$DC --data-0 --data=versions \
| xargs -0 printf "%s " > "$temp_file_zero_delim"; then
die 'Printing null-delimited dmd-style --data=versions failed!'
fi
if ! diff -Z "$temp_file_normal" "$temp_file_zero_delim"; then
die 'The null-delimited dmd-style --data=versions did not match the expected output!'
fi
# Test dmd-style --data=source-files
if ! $DUB describe --compiler=$DC --data=source-files \
> "$temp_file_normal"; then
die 'Printing dmd-style --data=source-files failed!'
fi
if ! $DUB describe --compiler=$DC --data-0 --data=source-files \
| xargs -0 printf "'%s' " > "$temp_file_zero_delim"; then
die 'Printing null-delimited dmd-style --data=source-files failed!'
fi
if ! diff -Z "$temp_file_normal" "$temp_file_zero_delim"; then
die 'The null-delimited dmd-style --data=source-files did not match the expected output!'
fi