Running 64-bit Linux
dmd --version
DMD64 D Compiler v2.098.0-beta.2
dub --version
DUB version 1.27.0-beta.2, built on Sep 7 2021
the following code 'compiles' in one project.
unittest
{
gasdindgaslkdgansklnasgdlknaglkgansklsdg;
}
void main(){} // compiles, links, and 'runs unit tests'
dub
[shows compiling, linking, then runs]
dub test
Running dfile-test-library
All unit tests have been run successfully.
Which made no sense whatsoever until I placed it into a second, different DUB project and catches it immediately using the same commands and test.
In a separate dub project I get the error message:
widescreen ~main: building configuration "application"...
source/app.d(4,1): Error: undefined identifier `gasdindgaslkdgansklnasgdlknaglkgansklsdg`
/usr/bin/dmd failed with exit code 1.
I'm not doing anything special with DUB and made both projects within a couple weeks of each other. I tried dub clean, dub, dub test. Still broken.
dub.json for broken project
{
"authors": [
"chris"
],
"copyright": "Copyright © 2021, chris",
"dependencies": {
"crypto": "~>0.2.16"
},
"description": "A minimal D application.",
"license": "proprietary",
"name": "dfile"
}
dub.json for working project
{
"authors": [
"chris"
],
"copyright": "Copyright © 2021, chris",
"description": "A minimal D application.",
"license": "proprietary",
"name": "widescreen"
}
dub.json.selections (for broken project only)
{
"fileVersion": 1,
"versions": {
"crypto": "0.2.16",
"intel-intrinsics": "1.6.1"
}
}
Other than unit testing being broken, everything seems to work fine. I even deleted 99.9% of my code and left only the bad unittest code and a main, and it still compiles.
Could it be a bug where the previous unit test (at some point) was valid, and it's caching and still running that one? I have a /.dub/code/ d file I found:
module dub_test_root;
import std.typetuple;
static import notes;
alias allModules = TypeTuple!(notes);
import std.stdio;
import core.runtime;
void main() { 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.");
}
}
Which doesn't appear in the "correct, not compiling" project directory which appears just empty. Possibly because it never successfully compiled a unit test suite.