diff --git a/source/dub/project.d b/source/dub/project.d index dc3a849..d6bde01 100644 --- a/source/dub/project.d +++ b/source/dub/project.d @@ -1916,22 +1916,33 @@ /// The default test runner that gets used if none is provided private immutable DefaultTestRunnerCode = q{ -import core.runtime; - -void main() { - version (D_Coverage) { + version(D_BetterC) { + extern(C) int main() { + foreach (module_; allModules) { + foreach (unitTest; __traits(getUnitTests, module_)) { + unitTest(); + } + } + import core.stdc.stdio : puts; + puts("All unit tests have been run successfully."); + return 0; + } } else { - import std.stdio : writeln; - writeln("All unit tests have been run successfully."); + void main() { + version (D_Coverage) { + } else { + import std.stdio : writeln; + writeln("All unit tests have been run successfully."); + } + } + shared static this() { + version (Have_tested) { + import tested; + import core.runtime; + import std.exception; + Runtime.moduleUnitTester = () => true; + enforce(runUnitTests!allModules(new ConsoleTestResultWriter), "Unit tests failed."); + } + } } -} -shared static this() { - version (Have_tested) { - import tested; - import core.runtime; - import std.exception; - Runtime.moduleUnitTester = () => true; - enforce(runUnitTests!allModules(new ConsoleTestResultWriter), "Unit tests failed."); - } -} }; diff --git a/test/issue1636-betterC-dub-test.sh b/test/issue1636-betterC-dub-test.sh new file mode 100755 index 0000000..f2062c6 --- /dev/null +++ b/test/issue1636-betterC-dub-test.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +cd ${CURR_DIR}/issue1636-betterC-dub-test + +${DUB} test | grep -c "TEST_WAS_RUN" > /dev/null diff --git a/test/issue1636-betterC-dub-test/.gitignore b/test/issue1636-betterC-dub-test/.gitignore new file mode 100644 index 0000000..53b683b --- /dev/null +++ b/test/issue1636-betterC-dub-test/.gitignore @@ -0,0 +1,4 @@ +test +*.o +*.exe +.dub diff --git a/test/issue1636-betterC-dub-test/.min_frontend b/test/issue1636-betterC-dub-test/.min_frontend new file mode 100644 index 0000000..67aaf4a --- /dev/null +++ b/test/issue1636-betterC-dub-test/.min_frontend @@ -0,0 +1 @@ +2.078 diff --git a/test/issue1636-betterC-dub-test/.no_run b/test/issue1636-betterC-dub-test/.no_run new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/issue1636-betterC-dub-test/.no_run diff --git a/test/issue1636-betterC-dub-test/dub.json b/test/issue1636-betterC-dub-test/dub.json new file mode 100644 index 0000000..afb1093 --- /dev/null +++ b/test/issue1636-betterC-dub-test/dub.json @@ -0,0 +1,4 @@ +{ + "name": "test", + "buildOptions": ["betterC"] +} diff --git a/test/issue1636-betterC-dub-test/source/lib.d b/test/issue1636-betterC-dub-test/source/lib.d new file mode 100644 index 0000000..1d2807e --- /dev/null +++ b/test/issue1636-betterC-dub-test/source/lib.d @@ -0,0 +1,14 @@ +import core.stdc.stdio : printf; + +version(D_BetterC) {} else static assert(false); + +int foo() +{ + return 2; +} + +unittest +{ + assert(foo == 2); + printf("TEST_WAS_RUN\n"); +}