From a19e02de635b7db1c567e2445e1da1d2d0876033 Mon Sep 17 00:00:00 2001 From: foerdi Date: Sun, 7 Mar 2021 16:24:19 +0100 Subject: [PATCH] fixed a bug with DFLAGS environment variable and cached generated unittest --- source/dub/dub.d | 6 ++--- test/cache-generated-test-config.sh | 39 +++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/source/dub/dub.d b/source/dub/dub.d index c11737bd1..9319e084a 100644 --- a/source/dub/dub.d +++ b/source/dub/dub.d @@ -692,10 +692,10 @@ class Dub { mkdirRecurse(mainfile.parentPath.toNativeString()); bool regenerateMainFile = settings.force || !existsFile(mainfile); - + auto escapedMainFile = mainfile.toNativeString().replace("$", "$$"); // generate main file - tcinfo.sourceFiles[""] ~= mainfile.toNativeString(); - tcinfo.mainSourceFile = mainfile.toNativeString(); + tcinfo.sourceFiles[""] ~= escapedMainFile; + tcinfo.mainSourceFile = escapedMainFile; if (!m_dryRun && regenerateMainFile) { auto fil = openFile(mainfile, FileMode.createTrunc); diff --git a/test/cache-generated-test-config.sh b/test/cache-generated-test-config.sh index 9f5ca6f7a..f4e0e2710 100755 --- a/test/cache-generated-test-config.sh +++ b/test/cache-generated-test-config.sh @@ -4,6 +4,7 @@ cd ${CURR_DIR}/cache-generated-test-config rm -rf .dub +## default test ${DUB} test --compiler=${DC} STAT="stat -c '%Y'" @@ -21,4 +22,42 @@ MAIN_FILES_COUNT=$(ls .dub/code/*dub_test_root.d | wc -l) [ "$EXECUTABLE_TIME" != "$(${STAT} cache-generated-test-config-test-library)" ] && die $LINENO 'The executable has been rebuilt' [ "$MAIN_TIME" != "$(${STAT} "$(ls .dub/code/*dub_test_root.d | head -n1)")" ] && die $LINENO 'The test main file has been rebuilt' +## test with empty DFLAGS environment variable +DFLAGS="" ${DUB} test --compiler=${DC} + +STAT="stat -c '%Y'" +[[ "$OSTYPE" == "darwin"* ]] && STAT="stat -f '%m' -t '%Y'" + +EXECUTABLE_TIME="$(${STAT} cache-generated-test-config-test-library)" +[ -z "$EXECUTABLE_TIME" ] && die $LINENO 'no EXECUTABLE_TIME was found' +MAIN_TIME="$(${STAT} "$(ls .dub/code/*-\$DFLAGS-*dub_test_root.d)")" +[ -z "$MAIN_TIME" ] && die $LINENO 'no MAIN_TIME was found' + +DFLAGS="" ${DUB} test --compiler=${DC} +MAIN_FILES_COUNT=$(ls .dub/code/*-\$DFLAGS-*dub_test_root.d | wc -l) + +[ $MAIN_FILES_COUNT -ne 1 ] && die $LINENO 'DUB generated more then one main file' +[ "$EXECUTABLE_TIME" != "$(${STAT} cache-generated-test-config-test-library)" ] && die $LINENO 'The executable has been rebuilt' +[ "$MAIN_TIME" != "$(${STAT} "$(ls .dub/code/*-\$DFLAGS-*dub_test_root.d | head -n1)")" ] && die $LINENO 'The test main file has been rebuilt' + +## test with DFLAGS environment variable +DFLAGS="-g" ${DUB} test --compiler=${DC} + +STAT="stat -c '%Y'" +[[ "$OSTYPE" == "darwin"* ]] && STAT="stat -f '%m' -t '%Y'" + +EXECUTABLE_TIME="$(${STAT} cache-generated-test-config-test-library)" +[ -z "$EXECUTABLE_TIME" ] && die $LINENO 'no EXECUTABLE_TIME was found' +MAIN_TIME="$(${STAT} "$(ls .dub/code/*-\$DFLAGS-*dub_test_root.d)")" +[ -z "$MAIN_TIME" ] && die $LINENO 'no MAIN_TIME was found' + +DFLAGS="-g" ${DUB} test --compiler=${DC} +MAIN_FILES_COUNT=$(ls .dub/code/*-\$DFLAGS-*dub_test_root.d | wc -l) + +[ $MAIN_FILES_COUNT -ne 1 ] && die $LINENO 'DUB generated more then one main file' +[ "$EXECUTABLE_TIME" != "$(${STAT} cache-generated-test-config-test-library)" ] && die $LINENO 'The executable has been rebuilt' +[ "$MAIN_TIME" != "$(${STAT} "$(ls .dub/code/*-\$DFLAGS-*dub_test_root.d | head -n1)")" ] && die $LINENO 'The test main file has been rebuilt' + + + exit 0 \ No newline at end of file