1 module tests.it.buildgen.multiple_outputs; 2 3 import tests.it.buildgen; 4 import std.file; 5 6 enum project = "multiple_outputs"; 7 8 9 private void doBuild(string module_)(in string reggaefileName, ref Options options) { 10 import tests.utils; 11 12 prepareTestBuild!module_(options); 13 14 const testPath = options.workingDir; 15 remove(buildPath(testPath, "protocol.d")); 16 rename(buildPath(testPath, reggaefileName), buildPath(testPath, "reggaefile.d")); 17 ["dmd", buildPath(testPath, "compiler.d")].shouldExecuteOk(testPath); 18 ["dmd", buildPath(testPath, "translator.d")].shouldExecuteOk(testPath); 19 20 justDoTestBuild!module_(options); 21 } 22 23 24 @("separate") 25 @AutoTags 26 @Values("ninja", "make", "binary") 27 @Tags("travis_oops") 28 unittest { 29 auto options = _testProjectOptions(project); 30 31 enum module_ = "multiple_outputs.reggaefile_sep"; 32 doBuild!module_("reggaefile_sep.d", options); 33 34 ["app", "2"].shouldSucceed.shouldEqual(["I call protoFunc(2) and get 4"]); 35 36 overwrite(options, "protocol.proto", "int protoFunc(int n) { return n * 3; }"); 37 buildCmdShouldRunOk!module_(options); 38 39 ["app", "3"].shouldSucceed.shouldEqual(["I call protoFunc(3) and get 9"]); 40 } 41 42 43 @("together") 44 @AutoTags 45 @Values("ninja", "make", "binary") 46 @Tags("travis_oops") 47 unittest { 48 auto options = _testProjectOptions(project); 49 50 enum module_ = "multiple_outputs.reggaefile_tog"; 51 doBuild!module_("reggaefile_tog.d", options); 52 53 ["app", "2"].shouldSucceed.shouldEqual(["I call protoFunc(2) and get 4"]); 54 55 overwrite(options, "protocol.proto", "int protoFunc(int n) { return n * 3; }"); 56 buildCmdShouldRunOk!module_(options); 57 58 ["app", "3"].shouldSucceed.shouldEqual(["I call protoFunc(3) and get 9"]); 59 }