1 module tests.cpprules; 2 3 4 import reggae; 5 import unit_threaded; 6 7 8 void testNoIncludePaths() { 9 const build = Build(objectFile(SourceFile("path/to/src/foo.cpp"))); 10 const ninja = Ninja(build, "/tmp/myproject"); 11 ninja.buildEntries.shouldEqual( 12 [NinjaEntry("build path/to/src/foo.o: _cppcompile /tmp/myproject/path/to/src/foo.cpp", 13 ["DEPFILE = $out.dep"]), 14 ]); 15 } 16 17 18 void testIncludePaths() { 19 const build = Build(objectFile(SourceFile("path/to/src/foo.cpp"), Flags(""), 20 IncludePaths(["path/to/src", "other/path"]))); 21 const ninja = Ninja(build, "/tmp/myproject"); 22 ninja.buildEntries.shouldEqual( 23 [NinjaEntry("build path/to/src/foo.o: _cppcompile /tmp/myproject/path/to/src/foo.cpp", 24 ["includes = -I/tmp/myproject/path/to/src -I/tmp/myproject/other/path", 25 "DEPFILE = $out.dep"]), 26 ]); 27 } 28 29 30 void testFlagsCompileC() { 31 const build = Build(objectFile(SourceFile("path/to/src/foo.c"), Flags("-m64 -fPIC -O3"))); 32 const ninja = Ninja(build, "/tmp/myproject"); 33 ninja.buildEntries.shouldEqual( 34 [NinjaEntry("build path/to/src/foo.o: _ccompile /tmp/myproject/path/to/src/foo.c", 35 ["flags = -m64 -fPIC -O3", 36 "DEPFILE = $out.dep"]), 37 ]); 38 } 39 40 void testFlagsCompileCpp() { 41 const build = Build(objectFile(SourceFile("path/to/src/foo.cpp"), Flags("-m64 -fPIC -O3"))); 42 const ninja = Ninja(build, "/tmp/myproject"); 43 ninja.buildEntries.shouldEqual( 44 [NinjaEntry("build path/to/src/foo.o: _cppcompile /tmp/myproject/path/to/src/foo.cpp", 45 ["flags = -m64 -fPIC -O3", 46 "DEPFILE = $out.dep"]), 47 ]); 48 } 49 50 void testCppCompile() { 51 const mathsObj = objectFile(SourceFile("src/cpp/maths.cpp"), 52 Flags("-m64 -fPIC -O3"), 53 IncludePaths(["headers"])); 54 55 mathsObj.shellCommand("/path/to").shouldEqual( 56 "g++ -m64 -fPIC -O3 -I/path/to/headers -MMD -MT src/cpp/maths.o -MF src/cpp/maths.o.dep " 57 "-o src/cpp/maths.o -c /path/to/src/cpp/maths.cpp"); 58 } 59 60 void testCCompile() { 61 const mathsObj = objectFile(SourceFile("src/c/maths.c"), 62 Flags("-m64 -fPIC -O3"), 63 IncludePaths(["headers"])); 64 65 mathsObj.shellCommand("/path/to").shouldEqual( 66 "gcc -m64 -fPIC -O3 -I/path/to/headers -MMD -MT src/c/maths.o -MF src/c/maths.o.dep " 67 "-o src/c/maths.o -c /path/to/src/c/maths.c"); 68 }