GCC Code Coverage Report


Directory: ../
File: test/unittest/UnitDriver.cpp
Date: 2025-02-09 04:23:07
Exec Total Coverage
Lines: 146 146 100.0%
Functions: 32 32 100.0%
Branches: 279 1288 21.7%

Line Branch Exec Source
1 // Copyright (c) 2021-2025 ChilliBits. All rights reserved.
2
3 #include <gtest/gtest.h>
4
5 #include <driver/Driver.h>
6
7 namespace spice::testing {
8
9 using namespace spice::compiler;
10
11 4 TEST(DriverTest, TestBuildSubcommandMinimal) {
12 1 const char *argv[] = {"spice", "build", "../../media/test-project/test.spice"};
13 static constexpr int argc = std::size(argv);
14
1/2
✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→357) not taken.
1 Driver driver(true);
15
1/2
✓ Branch 0 (3→4) taken 1 times.
✗ Branch 1 (3→355) not taken.
1 driver.init();
16
4/14
✓ Branch 0 (4→5) taken 1 times.
✗ Branch 1 (4→214) not taken.
✓ Branch 2 (5→6) taken 1 times.
✗ Branch 3 (5→213) not taken.
✗ Branch 4 (7→8) not taken.
✓ Branch 5 (7→15) taken 1 times.
✗ Branch 6 (8→9) not taken.
✗ Branch 7 (8→220) not taken.
✗ Branch 8 (10→11) not taken.
✗ Branch 9 (10→217) not taken.
✗ Branch 10 (11→12) not taken.
✗ Branch 11 (11→215) not taken.
✓ Branch 12 (17→18) taken 1 times.
✗ Branch 13 (17→20) not taken.
1 ASSERT_EQ(EXIT_SUCCESS, driver.parse(argc, argv));
17
1/2
✓ Branch 0 (19→21) taken 1 times.
✗ Branch 1 (19→355) not taken.
1 driver.enrich();
18
19
2/12
✗ Branch 0 (23→24) not taken.
✓ Branch 1 (23→33) taken 1 times.
✗ Branch 2 (24→25) not taken.
✗ Branch 3 (24→232) not taken.
✗ Branch 4 (25→26) not taken.
✗ Branch 5 (25→228) not taken.
✗ Branch 6 (27→28) not taken.
✗ Branch 7 (27→226) not taken.
✗ Branch 8 (28→29) not taken.
✗ Branch 9 (28→224) not taken.
✓ Branch 10 (35→36) taken 1 times.
✗ Branch 11 (35→40) not taken.
1 ASSERT_TRUE(driver.shouldCompile);
20
2/12
✗ Branch 0 (39→41) not taken.
✓ Branch 1 (39→50) taken 1 times.
✗ Branch 2 (41→42) not taken.
✗ Branch 3 (41→244) not taken.
✗ Branch 4 (42→43) not taken.
✗ Branch 5 (42→240) not taken.
✗ Branch 6 (44→45) not taken.
✗ Branch 7 (44→238) not taken.
✗ Branch 8 (45→46) not taken.
✗ Branch 9 (45→236) not taken.
✓ Branch 10 (52→53) taken 1 times.
✗ Branch 11 (52→57) not taken.
1 ASSERT_FALSE(driver.shouldInstall);
21
2/12
✗ Branch 0 (56→58) not taken.
✓ Branch 1 (56→67) taken 1 times.
✗ Branch 2 (58→59) not taken.
✗ Branch 3 (58→256) not taken.
✗ Branch 4 (59→60) not taken.
✗ Branch 5 (59→252) not taken.
✗ Branch 6 (61→62) not taken.
✗ Branch 7 (61→250) not taken.
✗ Branch 8 (62→63) not taken.
✗ Branch 9 (62→248) not taken.
✓ Branch 10 (69→70) taken 1 times.
✗ Branch 11 (69→74) not taken.
1 ASSERT_FALSE(driver.shouldUninstall);
22
2/12
✗ Branch 0 (73→75) not taken.
✓ Branch 1 (73→84) taken 1 times.
✗ Branch 2 (75→76) not taken.
✗ Branch 3 (75→268) not taken.
✗ Branch 4 (76→77) not taken.
✗ Branch 5 (76→264) not taken.
✗ Branch 6 (78→79) not taken.
✗ Branch 7 (78→262) not taken.
✗ Branch 8 (79→80) not taken.
✗ Branch 9 (79→260) not taken.
✓ Branch 10 (86→87) taken 1 times.
✗ Branch 11 (86→91) not taken.
1 ASSERT_FALSE(driver.shouldExecute);
23
2/12
✗ Branch 0 (90→92) not taken.
✓ Branch 1 (90→101) taken 1 times.
✗ Branch 2 (92→93) not taken.
✗ Branch 3 (92→280) not taken.
✗ Branch 4 (93→94) not taken.
✗ Branch 5 (93→276) not taken.
✗ Branch 6 (95→96) not taken.
✗ Branch 7 (95→274) not taken.
✗ Branch 8 (96→97) not taken.
✗ Branch 9 (96→272) not taken.
✓ Branch 10 (103→104) taken 1 times.
✗ Branch 11 (103→106) not taken.
1 ASSERT_FALSE(driver.cliOptions.execute);
24
5/16
✓ Branch 0 (105→107) taken 1 times.
✗ Branch 1 (105→288) not taken.
✓ Branch 2 (107→108) taken 1 times.
✗ Branch 3 (107→286) not taken.
✓ Branch 4 (108→109) taken 1 times.
✗ Branch 5 (108→284) not taken.
✗ Branch 6 (112→113) not taken.
✓ Branch 7 (112→120) taken 1 times.
✗ Branch 8 (113→114) not taken.
✗ Branch 9 (113→295) not taken.
✗ Branch 10 (115→116) not taken.
✗ Branch 11 (115→292) not taken.
✗ Branch 12 (116→117) not taken.
✗ Branch 13 (116→290) not taken.
✓ Branch 14 (122→123) taken 1 times.
✗ Branch 15 (122→125) not taken.
1 ASSERT_EQ("../../media/test-project/test.spice", driver.cliOptions.mainSourceFile.relative_path().string());
25
3/12
✓ Branch 0 (124→126) taken 1 times.
✗ Branch 1 (124→299) not taken.
✗ Branch 2 (127→128) not taken.
✓ Branch 3 (127→135) taken 1 times.
✗ Branch 4 (128→129) not taken.
✗ Branch 5 (128→305) not taken.
✗ Branch 6 (130→131) not taken.
✗ Branch 7 (130→302) not taken.
✗ Branch 8 (131→132) not taken.
✗ Branch 9 (131→300) not taken.
✓ Branch 10 (137→138) taken 1 times.
✗ Branch 11 (137→140) not taken.
1 ASSERT_EQ(O0, driver.cliOptions.optLevel);
26
3/12
✓ Branch 0 (139→141) taken 1 times.
✗ Branch 1 (139→309) not taken.
✗ Branch 2 (142→143) not taken.
✓ Branch 3 (142→150) taken 1 times.
✗ Branch 4 (143→144) not taken.
✗ Branch 5 (143→315) not taken.
✗ Branch 6 (145→146) not taken.
✗ Branch 7 (145→312) not taken.
✗ Branch 8 (146→147) not taken.
✗ Branch 9 (146→310) not taken.
✓ Branch 10 (152→153) taken 1 times.
✗ Branch 11 (152→157) not taken.
1 ASSERT_EQ(DEBUG, driver.cliOptions.buildMode);
27
2/12
✗ Branch 0 (156→158) not taken.
✓ Branch 1 (156→167) taken 1 times.
✗ Branch 2 (158→159) not taken.
✗ Branch 3 (158→327) not taken.
✗ Branch 4 (159→160) not taken.
✗ Branch 5 (159→323) not taken.
✗ Branch 6 (161→162) not taken.
✗ Branch 7 (161→321) not taken.
✗ Branch 8 (162→163) not taken.
✗ Branch 9 (162→319) not taken.
✓ Branch 10 (169→170) taken 1 times.
✗ Branch 11 (169→174) not taken.
1 ASSERT_FALSE(driver.cliOptions.generateTestMain);
28
2/12
✗ Branch 0 (173→175) not taken.
✓ Branch 1 (173→184) taken 1 times.
✗ Branch 2 (175→176) not taken.
✗ Branch 3 (175→339) not taken.
✗ Branch 4 (176→177) not taken.
✗ Branch 5 (176→335) not taken.
✗ Branch 6 (178→179) not taken.
✗ Branch 7 (178→333) not taken.
✗ Branch 8 (179→180) not taken.
✗ Branch 9 (179→331) not taken.
✓ Branch 10 (186→187) taken 1 times.
✗ Branch 11 (186→191) not taken.
1 ASSERT_FALSE(driver.cliOptions.testMode);
29
2/12
✗ Branch 0 (190→192) not taken.
✓ Branch 1 (190→201) taken 1 times.
✗ Branch 2 (192→193) not taken.
✗ Branch 3 (192→351) not taken.
✗ Branch 4 (193→194) not taken.
✗ Branch 5 (193→347) not taken.
✗ Branch 6 (195→196) not taken.
✗ Branch 7 (195→345) not taken.
✗ Branch 8 (196→197) not taken.
✗ Branch 9 (196→343) not taken.
✓ Branch 10 (203→204) taken 1 times.
✗ Branch 11 (203→206) not taken.
1 ASSERT_FALSE(driver.cliOptions.noEntryFct);
30
1/2
✓ Branch 0 (208→209) taken 1 times.
✗ Branch 1 (208→211) not taken.
1 }
31
32 4 TEST(DriverTest, TestBuildSubcommandComplex) {
33 1 const char *argv[] = {"spice", "b", "-d", "-ir", "-g", "-Os", "-m", "release", "-lto", "../../media/test-project/test.spice"};
34 static constexpr int argc = std::size(argv);
35
1/2
✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→473) not taken.
1 Driver driver(true);
36
1/2
✓ Branch 0 (3→4) taken 1 times.
✗ Branch 1 (3→471) not taken.
1 driver.init();
37
4/14
✓ Branch 0 (4→5) taken 1 times.
✗ Branch 1 (4→282) not taken.
✓ Branch 2 (5→6) taken 1 times.
✗ Branch 3 (5→281) not taken.
✗ Branch 4 (7→8) not taken.
✓ Branch 5 (7→15) taken 1 times.
✗ Branch 6 (8→9) not taken.
✗ Branch 7 (8→288) not taken.
✗ Branch 8 (10→11) not taken.
✗ Branch 9 (10→285) not taken.
✗ Branch 10 (11→12) not taken.
✗ Branch 11 (11→283) not taken.
✓ Branch 12 (17→18) taken 1 times.
✗ Branch 13 (17→20) not taken.
1 ASSERT_EQ(EXIT_SUCCESS, driver.parse(argc, argv));
38
1/2
✓ Branch 0 (19→21) taken 1 times.
✗ Branch 1 (19→471) not taken.
1 driver.enrich();
39
40
2/12
✗ Branch 0 (23→24) not taken.
✓ Branch 1 (23→33) taken 1 times.
✗ Branch 2 (24→25) not taken.
✗ Branch 3 (24→300) not taken.
✗ Branch 4 (25→26) not taken.
✗ Branch 5 (25→296) not taken.
✗ Branch 6 (27→28) not taken.
✗ Branch 7 (27→294) not taken.
✗ Branch 8 (28→29) not taken.
✗ Branch 9 (28→292) not taken.
✓ Branch 10 (35→36) taken 1 times.
✗ Branch 11 (35→40) not taken.
1 ASSERT_TRUE(driver.shouldCompile);
41
2/12
✗ Branch 0 (39→41) not taken.
✓ Branch 1 (39→50) taken 1 times.
✗ Branch 2 (41→42) not taken.
✗ Branch 3 (41→312) not taken.
✗ Branch 4 (42→43) not taken.
✗ Branch 5 (42→308) not taken.
✗ Branch 6 (44→45) not taken.
✗ Branch 7 (44→306) not taken.
✗ Branch 8 (45→46) not taken.
✗ Branch 9 (45→304) not taken.
✓ Branch 10 (52→53) taken 1 times.
✗ Branch 11 (52→57) not taken.
1 ASSERT_FALSE(driver.shouldInstall);
42
2/12
✗ Branch 0 (56→58) not taken.
✓ Branch 1 (56→67) taken 1 times.
✗ Branch 2 (58→59) not taken.
✗ Branch 3 (58→324) not taken.
✗ Branch 4 (59→60) not taken.
✗ Branch 5 (59→320) not taken.
✗ Branch 6 (61→62) not taken.
✗ Branch 7 (61→318) not taken.
✗ Branch 8 (62→63) not taken.
✗ Branch 9 (62→316) not taken.
✓ Branch 10 (69→70) taken 1 times.
✗ Branch 11 (69→74) not taken.
1 ASSERT_FALSE(driver.shouldUninstall);
43
2/12
✗ Branch 0 (73→75) not taken.
✓ Branch 1 (73→84) taken 1 times.
✗ Branch 2 (75→76) not taken.
✗ Branch 3 (75→336) not taken.
✗ Branch 4 (76→77) not taken.
✗ Branch 5 (76→332) not taken.
✗ Branch 6 (78→79) not taken.
✗ Branch 7 (78→330) not taken.
✗ Branch 8 (79→80) not taken.
✗ Branch 9 (79→328) not taken.
✓ Branch 10 (86→87) taken 1 times.
✗ Branch 11 (86→91) not taken.
1 ASSERT_FALSE(driver.shouldExecute);
44
2/12
✗ Branch 0 (90→92) not taken.
✓ Branch 1 (90→101) taken 1 times.
✗ Branch 2 (92→93) not taken.
✗ Branch 3 (92→348) not taken.
✗ Branch 4 (93→94) not taken.
✗ Branch 5 (93→344) not taken.
✗ Branch 6 (95→96) not taken.
✗ Branch 7 (95→342) not taken.
✗ Branch 8 (96→97) not taken.
✗ Branch 9 (96→340) not taken.
✓ Branch 10 (103→104) taken 1 times.
✗ Branch 11 (103→106) not taken.
1 ASSERT_FALSE(driver.cliOptions.execute);
45
5/16
✓ Branch 0 (105→107) taken 1 times.
✗ Branch 1 (105→356) not taken.
✓ Branch 2 (107→108) taken 1 times.
✗ Branch 3 (107→354) not taken.
✓ Branch 4 (108→109) taken 1 times.
✗ Branch 5 (108→352) not taken.
✗ Branch 6 (112→113) not taken.
✓ Branch 7 (112→120) taken 1 times.
✗ Branch 8 (113→114) not taken.
✗ Branch 9 (113→363) not taken.
✗ Branch 10 (115→116) not taken.
✗ Branch 11 (115→360) not taken.
✗ Branch 12 (116→117) not taken.
✗ Branch 13 (116→358) not taken.
✓ Branch 14 (122→123) taken 1 times.
✗ Branch 15 (122→125) not taken.
1 ASSERT_EQ("../../media/test-project/test.spice", driver.cliOptions.mainSourceFile.relative_path().string());
46
3/12
✓ Branch 0 (124→126) taken 1 times.
✗ Branch 1 (124→367) not taken.
✗ Branch 2 (127→128) not taken.
✓ Branch 3 (127→135) taken 1 times.
✗ Branch 4 (128→129) not taken.
✗ Branch 5 (128→373) not taken.
✗ Branch 6 (130→131) not taken.
✗ Branch 7 (130→370) not taken.
✗ Branch 8 (131→132) not taken.
✗ Branch 9 (131→368) not taken.
✓ Branch 10 (137→138) taken 1 times.
✗ Branch 11 (137→140) not taken.
1 ASSERT_EQ(Os, driver.cliOptions.optLevel); // -Os
47
3/12
✓ Branch 0 (139→141) taken 1 times.
✗ Branch 1 (139→377) not taken.
✗ Branch 2 (142→143) not taken.
✓ Branch 3 (142→150) taken 1 times.
✗ Branch 4 (143→144) not taken.
✗ Branch 5 (143→383) not taken.
✗ Branch 6 (145→146) not taken.
✗ Branch 7 (145→380) not taken.
✗ Branch 8 (146→147) not taken.
✗ Branch 9 (146→378) not taken.
✓ Branch 10 (152→153) taken 1 times.
✗ Branch 11 (152→157) not taken.
1 ASSERT_EQ(RELEASE, driver.cliOptions.buildMode); // -m release
48
2/12
✗ Branch 0 (156→158) not taken.
✓ Branch 1 (156→167) taken 1 times.
✗ Branch 2 (158→159) not taken.
✗ Branch 3 (158→395) not taken.
✗ Branch 4 (159→160) not taken.
✗ Branch 5 (159→391) not taken.
✗ Branch 6 (161→162) not taken.
✗ Branch 7 (161→389) not taken.
✗ Branch 8 (162→163) not taken.
✗ Branch 9 (162→387) not taken.
✓ Branch 10 (169→170) taken 1 times.
✗ Branch 11 (169→174) not taken.
1 ASSERT_FALSE(driver.cliOptions.generateTestMain);
49
2/12
✗ Branch 0 (173→175) not taken.
✓ Branch 1 (173→184) taken 1 times.
✗ Branch 2 (175→176) not taken.
✗ Branch 3 (175→407) not taken.
✗ Branch 4 (176→177) not taken.
✗ Branch 5 (176→403) not taken.
✗ Branch 6 (178→179) not taken.
✗ Branch 7 (178→401) not taken.
✗ Branch 8 (179→180) not taken.
✗ Branch 9 (179→399) not taken.
✓ Branch 10 (186→187) taken 1 times.
✗ Branch 11 (186→191) not taken.
1 ASSERT_FALSE(driver.cliOptions.testMode);
50
2/12
✗ Branch 0 (190→192) not taken.
✓ Branch 1 (190→201) taken 1 times.
✗ Branch 2 (192→193) not taken.
✗ Branch 3 (192→419) not taken.
✗ Branch 4 (193→194) not taken.
✗ Branch 5 (193→415) not taken.
✗ Branch 6 (195→196) not taken.
✗ Branch 7 (195→413) not taken.
✗ Branch 8 (196→197) not taken.
✗ Branch 9 (196→411) not taken.
✓ Branch 10 (203→204) taken 1 times.
✗ Branch 11 (203→208) not taken.
1 ASSERT_FALSE(driver.cliOptions.noEntryFct);
51
2/12
✗ Branch 0 (207→209) not taken.
✓ Branch 1 (207→218) taken 1 times.
✗ Branch 2 (209→210) not taken.
✗ Branch 3 (209→431) not taken.
✗ Branch 4 (210→211) not taken.
✗ Branch 5 (210→427) not taken.
✗ Branch 6 (212→213) not taken.
✗ Branch 7 (212→425) not taken.
✗ Branch 8 (213→214) not taken.
✗ Branch 9 (213→423) not taken.
✓ Branch 10 (220→221) taken 1 times.
✗ Branch 11 (220→225) not taken.
1 ASSERT_TRUE(driver.cliOptions.generateDebugInfo); // -g
52
2/12
✗ Branch 0 (224→226) not taken.
✓ Branch 1 (224→235) taken 1 times.
✗ Branch 2 (226→227) not taken.
✗ Branch 3 (226→443) not taken.
✗ Branch 4 (227→228) not taken.
✗ Branch 5 (227→439) not taken.
✗ Branch 6 (229→230) not taken.
✗ Branch 7 (229→437) not taken.
✗ Branch 8 (230→231) not taken.
✗ Branch 9 (230→435) not taken.
✓ Branch 10 (237→238) taken 1 times.
✗ Branch 11 (237→242) not taken.
1 ASSERT_TRUE(driver.cliOptions.useLTO); // -lto
53
2/12
✗ Branch 0 (241→243) not taken.
✓ Branch 1 (241→252) taken 1 times.
✗ Branch 2 (243→244) not taken.
✗ Branch 3 (243→455) not taken.
✗ Branch 4 (244→245) not taken.
✗ Branch 5 (244→451) not taken.
✗ Branch 6 (246→247) not taken.
✗ Branch 7 (246→449) not taken.
✗ Branch 8 (247→248) not taken.
✗ Branch 9 (247→447) not taken.
✓ Branch 10 (254→255) taken 1 times.
✗ Branch 11 (254→259) not taken.
1 ASSERT_TRUE(driver.cliOptions.printDebugOutput); // -d
54
2/12
✗ Branch 0 (258→260) not taken.
✓ Branch 1 (258→269) taken 1 times.
✗ Branch 2 (260→261) not taken.
✗ Branch 3 (260→467) not taken.
✗ Branch 4 (261→262) not taken.
✗ Branch 5 (261→463) not taken.
✗ Branch 6 (263→264) not taken.
✗ Branch 7 (263→461) not taken.
✗ Branch 8 (264→265) not taken.
✗ Branch 9 (264→459) not taken.
✓ Branch 10 (271→272) taken 1 times.
✗ Branch 11 (271→274) not taken.
1 ASSERT_TRUE(driver.cliOptions.dumpSettings.dumpIR); // -ir
55
1/2
✓ Branch 0 (276→277) taken 1 times.
✗ Branch 1 (276→279) not taken.
1 }
56
57 4 TEST(DriverTest, TestRunSubcommandMinimal) {
58 1 const char *argv[] = {"spice", "run", "../../media/test-project/test.spice"};
59 static constexpr int argc = std::size(argv);
60
1/2
✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→332) not taken.
1 Driver driver(true);
61
1/2
✓ Branch 0 (3→4) taken 1 times.
✗ Branch 1 (3→330) not taken.
1 driver.init();
62
4/14
✓ Branch 0 (4→5) taken 1 times.
✗ Branch 1 (4→199) not taken.
✓ Branch 2 (5→6) taken 1 times.
✗ Branch 3 (5→198) not taken.
✗ Branch 4 (7→8) not taken.
✓ Branch 5 (7→15) taken 1 times.
✗ Branch 6 (8→9) not taken.
✗ Branch 7 (8→205) not taken.
✗ Branch 8 (10→11) not taken.
✗ Branch 9 (10→202) not taken.
✗ Branch 10 (11→12) not taken.
✗ Branch 11 (11→200) not taken.
✓ Branch 12 (17→18) taken 1 times.
✗ Branch 13 (17→20) not taken.
1 ASSERT_EQ(EXIT_SUCCESS, driver.parse(argc, argv));
63
1/2
✓ Branch 0 (19→21) taken 1 times.
✗ Branch 1 (19→330) not taken.
1 driver.enrich();
64
65
2/12
✗ Branch 0 (23→24) not taken.
✓ Branch 1 (23→33) taken 1 times.
✗ Branch 2 (24→25) not taken.
✗ Branch 3 (24→217) not taken.
✗ Branch 4 (25→26) not taken.
✗ Branch 5 (25→213) not taken.
✗ Branch 6 (27→28) not taken.
✗ Branch 7 (27→211) not taken.
✗ Branch 8 (28→29) not taken.
✗ Branch 9 (28→209) not taken.
✓ Branch 10 (35→36) taken 1 times.
✗ Branch 11 (35→40) not taken.
1 ASSERT_TRUE(driver.shouldCompile);
66
2/12
✗ Branch 0 (39→41) not taken.
✓ Branch 1 (39→50) taken 1 times.
✗ Branch 2 (41→42) not taken.
✗ Branch 3 (41→229) not taken.
✗ Branch 4 (42→43) not taken.
✗ Branch 5 (42→225) not taken.
✗ Branch 6 (44→45) not taken.
✗ Branch 7 (44→223) not taken.
✗ Branch 8 (45→46) not taken.
✗ Branch 9 (45→221) not taken.
✓ Branch 10 (52→53) taken 1 times.
✗ Branch 11 (52→57) not taken.
1 ASSERT_FALSE(driver.shouldInstall);
67
2/12
✗ Branch 0 (56→58) not taken.
✓ Branch 1 (56→67) taken 1 times.
✗ Branch 2 (58→59) not taken.
✗ Branch 3 (58→241) not taken.
✗ Branch 4 (59→60) not taken.
✗ Branch 5 (59→237) not taken.
✗ Branch 6 (61→62) not taken.
✗ Branch 7 (61→235) not taken.
✗ Branch 8 (62→63) not taken.
✗ Branch 9 (62→233) not taken.
✓ Branch 10 (69→70) taken 1 times.
✗ Branch 11 (69→74) not taken.
1 ASSERT_FALSE(driver.shouldUninstall);
68
2/12
✗ Branch 0 (73→75) not taken.
✓ Branch 1 (73→84) taken 1 times.
✗ Branch 2 (75→76) not taken.
✗ Branch 3 (75→253) not taken.
✗ Branch 4 (76→77) not taken.
✗ Branch 5 (76→249) not taken.
✗ Branch 6 (78→79) not taken.
✗ Branch 7 (78→247) not taken.
✗ Branch 8 (79→80) not taken.
✗ Branch 9 (79→245) not taken.
✓ Branch 10 (86→87) taken 1 times.
✗ Branch 11 (86→91) not taken.
1 ASSERT_TRUE(driver.shouldExecute);
69
2/12
✗ Branch 0 (90→92) not taken.
✓ Branch 1 (90→101) taken 1 times.
✗ Branch 2 (92→93) not taken.
✗ Branch 3 (92→265) not taken.
✗ Branch 4 (93→94) not taken.
✗ Branch 5 (93→261) not taken.
✗ Branch 6 (95→96) not taken.
✗ Branch 7 (95→259) not taken.
✗ Branch 8 (96→97) not taken.
✗ Branch 9 (96→257) not taken.
✓ Branch 10 (103→104) taken 1 times.
✗ Branch 11 (103→106) not taken.
1 ASSERT_TRUE(driver.cliOptions.execute);
70
5/16
✓ Branch 0 (105→107) taken 1 times.
✗ Branch 1 (105→273) not taken.
✓ Branch 2 (107→108) taken 1 times.
✗ Branch 3 (107→271) not taken.
✓ Branch 4 (108→109) taken 1 times.
✗ Branch 5 (108→269) not taken.
✗ Branch 6 (112→113) not taken.
✓ Branch 7 (112→120) taken 1 times.
✗ Branch 8 (113→114) not taken.
✗ Branch 9 (113→280) not taken.
✗ Branch 10 (115→116) not taken.
✗ Branch 11 (115→277) not taken.
✗ Branch 12 (116→117) not taken.
✗ Branch 13 (116→275) not taken.
✓ Branch 14 (122→123) taken 1 times.
✗ Branch 15 (122→125) not taken.
1 ASSERT_EQ("../../media/test-project/test.spice", driver.cliOptions.mainSourceFile.relative_path().string());
71
3/12
✓ Branch 0 (124→126) taken 1 times.
✗ Branch 1 (124→284) not taken.
✗ Branch 2 (127→128) not taken.
✓ Branch 3 (127→135) taken 1 times.
✗ Branch 4 (128→129) not taken.
✗ Branch 5 (128→290) not taken.
✗ Branch 6 (130→131) not taken.
✗ Branch 7 (130→287) not taken.
✗ Branch 8 (131→132) not taken.
✗ Branch 9 (131→285) not taken.
✓ Branch 10 (137→138) taken 1 times.
✗ Branch 11 (137→142) not taken.
1 ASSERT_EQ(O0, driver.cliOptions.optLevel);
72
2/12
✗ Branch 0 (141→143) not taken.
✓ Branch 1 (141→152) taken 1 times.
✗ Branch 2 (143→144) not taken.
✗ Branch 3 (143→302) not taken.
✗ Branch 4 (144→145) not taken.
✗ Branch 5 (144→298) not taken.
✗ Branch 6 (146→147) not taken.
✗ Branch 7 (146→296) not taken.
✗ Branch 8 (147→148) not taken.
✗ Branch 9 (147→294) not taken.
✓ Branch 10 (154→155) taken 1 times.
✗ Branch 11 (154→159) not taken.
1 ASSERT_FALSE(driver.cliOptions.generateTestMain);
73
2/12
✗ Branch 0 (158→160) not taken.
✓ Branch 1 (158→169) taken 1 times.
✗ Branch 2 (160→161) not taken.
✗ Branch 3 (160→314) not taken.
✗ Branch 4 (161→162) not taken.
✗ Branch 5 (161→310) not taken.
✗ Branch 6 (163→164) not taken.
✗ Branch 7 (163→308) not taken.
✗ Branch 8 (164→165) not taken.
✗ Branch 9 (164→306) not taken.
✓ Branch 10 (171→172) taken 1 times.
✗ Branch 11 (171→176) not taken.
1 ASSERT_FALSE(driver.cliOptions.testMode);
74
2/12
✗ Branch 0 (175→177) not taken.
✓ Branch 1 (175→186) taken 1 times.
✗ Branch 2 (177→178) not taken.
✗ Branch 3 (177→326) not taken.
✗ Branch 4 (178→179) not taken.
✗ Branch 5 (178→322) not taken.
✗ Branch 6 (180→181) not taken.
✗ Branch 7 (180→320) not taken.
✗ Branch 8 (181→182) not taken.
✗ Branch 9 (181→318) not taken.
✓ Branch 10 (188→189) taken 1 times.
✗ Branch 11 (188→191) not taken.
1 ASSERT_FALSE(driver.cliOptions.noEntryFct);
75
1/2
✓ Branch 0 (193→194) taken 1 times.
✗ Branch 1 (193→196) not taken.
1 }
76
77 4 TEST(DriverTest, TestRunSubcommandComplex) {
78 1 const char *argv[] = {"spice", "r", "-O2", "-j", "8", "-ast", "../../media/test-project/test.spice"};
79 static constexpr int argc = std::size(argv);
80
1/2
✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→386) not taken.
1 Driver driver(true);
81
1/2
✓ Branch 0 (3→4) taken 1 times.
✗ Branch 1 (3→384) not taken.
1 driver.init();
82
4/14
✓ Branch 0 (4→5) taken 1 times.
✗ Branch 1 (4→231) not taken.
✓ Branch 2 (5→6) taken 1 times.
✗ Branch 3 (5→230) not taken.
✗ Branch 4 (7→8) not taken.
✓ Branch 5 (7→15) taken 1 times.
✗ Branch 6 (8→9) not taken.
✗ Branch 7 (8→237) not taken.
✗ Branch 8 (10→11) not taken.
✗ Branch 9 (10→234) not taken.
✗ Branch 10 (11→12) not taken.
✗ Branch 11 (11→232) not taken.
✓ Branch 12 (17→18) taken 1 times.
✗ Branch 13 (17→20) not taken.
1 ASSERT_EQ(EXIT_SUCCESS, driver.parse(argc, argv));
83
1/2
✓ Branch 0 (19→21) taken 1 times.
✗ Branch 1 (19→384) not taken.
1 driver.enrich();
84
85
2/12
✗ Branch 0 (23→24) not taken.
✓ Branch 1 (23→33) taken 1 times.
✗ Branch 2 (24→25) not taken.
✗ Branch 3 (24→249) not taken.
✗ Branch 4 (25→26) not taken.
✗ Branch 5 (25→245) not taken.
✗ Branch 6 (27→28) not taken.
✗ Branch 7 (27→243) not taken.
✗ Branch 8 (28→29) not taken.
✗ Branch 9 (28→241) not taken.
✓ Branch 10 (35→36) taken 1 times.
✗ Branch 11 (35→40) not taken.
1 ASSERT_TRUE(driver.shouldCompile);
86
2/12
✗ Branch 0 (39→41) not taken.
✓ Branch 1 (39→50) taken 1 times.
✗ Branch 2 (41→42) not taken.
✗ Branch 3 (41→261) not taken.
✗ Branch 4 (42→43) not taken.
✗ Branch 5 (42→257) not taken.
✗ Branch 6 (44→45) not taken.
✗ Branch 7 (44→255) not taken.
✗ Branch 8 (45→46) not taken.
✗ Branch 9 (45→253) not taken.
✓ Branch 10 (52→53) taken 1 times.
✗ Branch 11 (52→57) not taken.
1 ASSERT_FALSE(driver.shouldInstall);
87
2/12
✗ Branch 0 (56→58) not taken.
✓ Branch 1 (56→67) taken 1 times.
✗ Branch 2 (58→59) not taken.
✗ Branch 3 (58→273) not taken.
✗ Branch 4 (59→60) not taken.
✗ Branch 5 (59→269) not taken.
✗ Branch 6 (61→62) not taken.
✗ Branch 7 (61→267) not taken.
✗ Branch 8 (62→63) not taken.
✗ Branch 9 (62→265) not taken.
✓ Branch 10 (69→70) taken 1 times.
✗ Branch 11 (69→74) not taken.
1 ASSERT_FALSE(driver.shouldUninstall);
88
2/12
✗ Branch 0 (73→75) not taken.
✓ Branch 1 (73→84) taken 1 times.
✗ Branch 2 (75→76) not taken.
✗ Branch 3 (75→285) not taken.
✗ Branch 4 (76→77) not taken.
✗ Branch 5 (76→281) not taken.
✗ Branch 6 (78→79) not taken.
✗ Branch 7 (78→279) not taken.
✗ Branch 8 (79→80) not taken.
✗ Branch 9 (79→277) not taken.
✓ Branch 10 (86→87) taken 1 times.
✗ Branch 11 (86→91) not taken.
1 ASSERT_TRUE(driver.shouldExecute);
89
2/12
✗ Branch 0 (90→92) not taken.
✓ Branch 1 (90→101) taken 1 times.
✗ Branch 2 (92→93) not taken.
✗ Branch 3 (92→297) not taken.
✗ Branch 4 (93→94) not taken.
✗ Branch 5 (93→293) not taken.
✗ Branch 6 (95→96) not taken.
✗ Branch 7 (95→291) not taken.
✗ Branch 8 (96→97) not taken.
✗ Branch 9 (96→289) not taken.
✓ Branch 10 (103→104) taken 1 times.
✗ Branch 11 (103→106) not taken.
1 ASSERT_TRUE(driver.cliOptions.execute);
90
5/16
✓ Branch 0 (105→107) taken 1 times.
✗ Branch 1 (105→305) not taken.
✓ Branch 2 (107→108) taken 1 times.
✗ Branch 3 (107→303) not taken.
✓ Branch 4 (108→109) taken 1 times.
✗ Branch 5 (108→301) not taken.
✗ Branch 6 (112→113) not taken.
✓ Branch 7 (112→120) taken 1 times.
✗ Branch 8 (113→114) not taken.
✗ Branch 9 (113→312) not taken.
✗ Branch 10 (115→116) not taken.
✗ Branch 11 (115→309) not taken.
✗ Branch 12 (116→117) not taken.
✗ Branch 13 (116→307) not taken.
✓ Branch 14 (122→123) taken 1 times.
✗ Branch 15 (122→125) not taken.
1 ASSERT_EQ("../../media/test-project/test.spice", driver.cliOptions.mainSourceFile.relative_path().string());
91
3/12
✓ Branch 0 (124→126) taken 1 times.
✗ Branch 1 (124→316) not taken.
✗ Branch 2 (127→128) not taken.
✓ Branch 3 (127→135) taken 1 times.
✗ Branch 4 (128→129) not taken.
✗ Branch 5 (128→322) not taken.
✗ Branch 6 (130→131) not taken.
✗ Branch 7 (130→319) not taken.
✗ Branch 8 (131→132) not taken.
✗ Branch 9 (131→317) not taken.
✓ Branch 10 (137→138) taken 1 times.
✗ Branch 11 (137→142) not taken.
1 ASSERT_EQ(O2, driver.cliOptions.optLevel); // -O2
92
2/12
✗ Branch 0 (141→143) not taken.
✓ Branch 1 (141→152) taken 1 times.
✗ Branch 2 (143→144) not taken.
✗ Branch 3 (143→334) not taken.
✗ Branch 4 (144→145) not taken.
✗ Branch 5 (144→330) not taken.
✗ Branch 6 (146→147) not taken.
✗ Branch 7 (146→328) not taken.
✗ Branch 8 (147→148) not taken.
✗ Branch 9 (147→326) not taken.
✓ Branch 10 (154→155) taken 1 times.
✗ Branch 11 (154→159) not taken.
1 ASSERT_FALSE(driver.cliOptions.generateTestMain);
93
2/12
✗ Branch 0 (158→160) not taken.
✓ Branch 1 (158→169) taken 1 times.
✗ Branch 2 (160→161) not taken.
✗ Branch 3 (160→346) not taken.
✗ Branch 4 (161→162) not taken.
✗ Branch 5 (161→342) not taken.
✗ Branch 6 (163→164) not taken.
✗ Branch 7 (163→340) not taken.
✗ Branch 8 (164→165) not taken.
✗ Branch 9 (164→338) not taken.
✓ Branch 10 (171→172) taken 1 times.
✗ Branch 11 (171→176) not taken.
1 ASSERT_FALSE(driver.cliOptions.testMode);
94
2/12
✗ Branch 0 (175→177) not taken.
✓ Branch 1 (175→186) taken 1 times.
✗ Branch 2 (177→178) not taken.
✗ Branch 3 (177→358) not taken.
✗ Branch 4 (178→179) not taken.
✗ Branch 5 (178→354) not taken.
✗ Branch 6 (180→181) not taken.
✗ Branch 7 (180→352) not taken.
✗ Branch 8 (181→182) not taken.
✗ Branch 9 (181→350) not taken.
✓ Branch 10 (188→189) taken 1 times.
✗ Branch 11 (188→191) not taken.
1 ASSERT_FALSE(driver.cliOptions.noEntryFct);
95
3/12
✓ Branch 0 (190→192) taken 1 times.
✗ Branch 1 (190→362) not taken.
✗ Branch 2 (193→194) not taken.
✓ Branch 3 (193→201) taken 1 times.
✗ Branch 4 (194→195) not taken.
✗ Branch 5 (194→368) not taken.
✗ Branch 6 (196→197) not taken.
✗ Branch 7 (196→365) not taken.
✗ Branch 8 (197→198) not taken.
✗ Branch 9 (197→363) not taken.
✓ Branch 10 (203→204) taken 1 times.
✗ Branch 11 (203→208) not taken.
1 ASSERT_EQ(8, driver.cliOptions.compileJobCount); // -j 8
96
2/12
✗ Branch 0 (207→209) not taken.
✓ Branch 1 (207→218) taken 1 times.
✗ Branch 2 (209→210) not taken.
✗ Branch 3 (209→380) not taken.
✗ Branch 4 (210→211) not taken.
✗ Branch 5 (210→376) not taken.
✗ Branch 6 (212→213) not taken.
✗ Branch 7 (212→374) not taken.
✗ Branch 8 (213→214) not taken.
✗ Branch 9 (213→372) not taken.
✓ Branch 10 (220→221) taken 1 times.
✗ Branch 11 (220→223) not taken.
1 ASSERT_TRUE(driver.cliOptions.dumpSettings.dumpAST); // -ast
97
1/2
✓ Branch 0 (225→226) taken 1 times.
✗ Branch 1 (225→228) not taken.
1 }
98
99 4 TEST(DriverTest, TestTestSubcommandMinimal) {
100 1 const char *argv[] = {"spice", "test", "../../media/test-project/test.spice"};
101 static constexpr int argc = std::size(argv);
102
1/2
✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→332) not taken.
1 Driver driver(true);
103
1/2
✓ Branch 0 (3→4) taken 1 times.
✗ Branch 1 (3→330) not taken.
1 driver.init();
104
4/14
✓ Branch 0 (4→5) taken 1 times.
✗ Branch 1 (4→199) not taken.
✓ Branch 2 (5→6) taken 1 times.
✗ Branch 3 (5→198) not taken.
✗ Branch 4 (7→8) not taken.
✓ Branch 5 (7→15) taken 1 times.
✗ Branch 6 (8→9) not taken.
✗ Branch 7 (8→205) not taken.
✗ Branch 8 (10→11) not taken.
✗ Branch 9 (10→202) not taken.
✗ Branch 10 (11→12) not taken.
✗ Branch 11 (11→200) not taken.
✓ Branch 12 (17→18) taken 1 times.
✗ Branch 13 (17→20) not taken.
1 ASSERT_EQ(EXIT_SUCCESS, driver.parse(argc, argv));
105
1/2
✓ Branch 0 (19→21) taken 1 times.
✗ Branch 1 (19→330) not taken.
1 driver.enrich();
106
107
2/12
✗ Branch 0 (23→24) not taken.
✓ Branch 1 (23→33) taken 1 times.
✗ Branch 2 (24→25) not taken.
✗ Branch 3 (24→217) not taken.
✗ Branch 4 (25→26) not taken.
✗ Branch 5 (25→213) not taken.
✗ Branch 6 (27→28) not taken.
✗ Branch 7 (27→211) not taken.
✗ Branch 8 (28→29) not taken.
✗ Branch 9 (28→209) not taken.
✓ Branch 10 (35→36) taken 1 times.
✗ Branch 11 (35→40) not taken.
1 ASSERT_TRUE(driver.shouldCompile);
108
2/12
✗ Branch 0 (39→41) not taken.
✓ Branch 1 (39→50) taken 1 times.
✗ Branch 2 (41→42) not taken.
✗ Branch 3 (41→229) not taken.
✗ Branch 4 (42→43) not taken.
✗ Branch 5 (42→225) not taken.
✗ Branch 6 (44→45) not taken.
✗ Branch 7 (44→223) not taken.
✗ Branch 8 (45→46) not taken.
✗ Branch 9 (45→221) not taken.
✓ Branch 10 (52→53) taken 1 times.
✗ Branch 11 (52→57) not taken.
1 ASSERT_FALSE(driver.shouldInstall);
109
2/12
✗ Branch 0 (56→58) not taken.
✓ Branch 1 (56→67) taken 1 times.
✗ Branch 2 (58→59) not taken.
✗ Branch 3 (58→241) not taken.
✗ Branch 4 (59→60) not taken.
✗ Branch 5 (59→237) not taken.
✗ Branch 6 (61→62) not taken.
✗ Branch 7 (61→235) not taken.
✗ Branch 8 (62→63) not taken.
✗ Branch 9 (62→233) not taken.
✓ Branch 10 (69→70) taken 1 times.
✗ Branch 11 (69→74) not taken.
1 ASSERT_FALSE(driver.shouldUninstall);
110
2/12
✗ Branch 0 (73→75) not taken.
✓ Branch 1 (73→84) taken 1 times.
✗ Branch 2 (75→76) not taken.
✗ Branch 3 (75→253) not taken.
✗ Branch 4 (76→77) not taken.
✗ Branch 5 (76→249) not taken.
✗ Branch 6 (78→79) not taken.
✗ Branch 7 (78→247) not taken.
✗ Branch 8 (79→80) not taken.
✗ Branch 9 (79→245) not taken.
✓ Branch 10 (86→87) taken 1 times.
✗ Branch 11 (86→91) not taken.
1 ASSERT_TRUE(driver.shouldExecute);
111
2/12
✗ Branch 0 (90→92) not taken.
✓ Branch 1 (90→101) taken 1 times.
✗ Branch 2 (92→93) not taken.
✗ Branch 3 (92→265) not taken.
✗ Branch 4 (93→94) not taken.
✗ Branch 5 (93→261) not taken.
✗ Branch 6 (95→96) not taken.
✗ Branch 7 (95→259) not taken.
✗ Branch 8 (96→97) not taken.
✗ Branch 9 (96→257) not taken.
✓ Branch 10 (103→104) taken 1 times.
✗ Branch 11 (103→106) not taken.
1 ASSERT_TRUE(driver.cliOptions.execute);
112
5/16
✓ Branch 0 (105→107) taken 1 times.
✗ Branch 1 (105→273) not taken.
✓ Branch 2 (107→108) taken 1 times.
✗ Branch 3 (107→271) not taken.
✓ Branch 4 (108→109) taken 1 times.
✗ Branch 5 (108→269) not taken.
✗ Branch 6 (112→113) not taken.
✓ Branch 7 (112→120) taken 1 times.
✗ Branch 8 (113→114) not taken.
✗ Branch 9 (113→280) not taken.
✗ Branch 10 (115→116) not taken.
✗ Branch 11 (115→277) not taken.
✗ Branch 12 (116→117) not taken.
✗ Branch 13 (116→275) not taken.
✓ Branch 14 (122→123) taken 1 times.
✗ Branch 15 (122→125) not taken.
1 ASSERT_EQ("../../media/test-project/test.spice", driver.cliOptions.mainSourceFile.relative_path().string());
113
3/12
✓ Branch 0 (124→126) taken 1 times.
✗ Branch 1 (124→284) not taken.
✗ Branch 2 (127→128) not taken.
✓ Branch 3 (127→135) taken 1 times.
✗ Branch 4 (128→129) not taken.
✗ Branch 5 (128→290) not taken.
✗ Branch 6 (130→131) not taken.
✗ Branch 7 (130→287) not taken.
✗ Branch 8 (131→132) not taken.
✗ Branch 9 (131→285) not taken.
✓ Branch 10 (137→138) taken 1 times.
✗ Branch 11 (137→142) not taken.
1 ASSERT_EQ(OptLevel::O0, driver.cliOptions.optLevel);
114
2/12
✗ Branch 0 (141→143) not taken.
✓ Branch 1 (141→152) taken 1 times.
✗ Branch 2 (143→144) not taken.
✗ Branch 3 (143→302) not taken.
✗ Branch 4 (144→145) not taken.
✗ Branch 5 (144→298) not taken.
✗ Branch 6 (146→147) not taken.
✗ Branch 7 (146→296) not taken.
✗ Branch 8 (147→148) not taken.
✗ Branch 9 (147→294) not taken.
✓ Branch 10 (154→155) taken 1 times.
✗ Branch 11 (154→159) not taken.
1 ASSERT_TRUE(driver.cliOptions.generateTestMain);
115
2/12
✗ Branch 0 (158→160) not taken.
✓ Branch 1 (158→169) taken 1 times.
✗ Branch 2 (160→161) not taken.
✗ Branch 3 (160→314) not taken.
✗ Branch 4 (161→162) not taken.
✗ Branch 5 (161→310) not taken.
✗ Branch 6 (163→164) not taken.
✗ Branch 7 (163→308) not taken.
✗ Branch 8 (164→165) not taken.
✗ Branch 9 (164→306) not taken.
✓ Branch 10 (171→172) taken 1 times.
✗ Branch 11 (171→176) not taken.
1 ASSERT_TRUE(driver.cliOptions.testMode);
116
2/12
✗ Branch 0 (175→177) not taken.
✓ Branch 1 (175→186) taken 1 times.
✗ Branch 2 (177→178) not taken.
✗ Branch 3 (177→326) not taken.
✗ Branch 4 (178→179) not taken.
✗ Branch 5 (178→322) not taken.
✗ Branch 6 (180→181) not taken.
✗ Branch 7 (180→320) not taken.
✗ Branch 8 (181→182) not taken.
✗ Branch 9 (181→318) not taken.
✓ Branch 10 (188→189) taken 1 times.
✗ Branch 11 (188→191) not taken.
1 ASSERT_TRUE(driver.cliOptions.noEntryFct);
117
1/2
✓ Branch 0 (193→194) taken 1 times.
✗ Branch 1 (193→196) not taken.
1 }
118
119 4 TEST(DriverTest, TestTestSubcommandComplex) {
120 1 const char *argv[] = {"spice", "t", "-s", "-cst", "../../media/test-project/test.spice"};
121 static constexpr int argc = std::size(argv);
122
1/2
✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→390) not taken.
1 Driver driver(true);
123
1/2
✓ Branch 0 (3→4) taken 1 times.
✗ Branch 1 (3→388) not taken.
1 driver.init();
124
4/14
✓ Branch 0 (4→5) taken 1 times.
✗ Branch 1 (4→233) not taken.
✓ Branch 2 (5→6) taken 1 times.
✗ Branch 3 (5→232) not taken.
✗ Branch 4 (7→8) not taken.
✓ Branch 5 (7→15) taken 1 times.
✗ Branch 6 (8→9) not taken.
✗ Branch 7 (8→239) not taken.
✗ Branch 8 (10→11) not taken.
✗ Branch 9 (10→236) not taken.
✗ Branch 10 (11→12) not taken.
✗ Branch 11 (11→234) not taken.
✓ Branch 12 (17→18) taken 1 times.
✗ Branch 13 (17→20) not taken.
1 ASSERT_EQ(EXIT_SUCCESS, driver.parse(argc, argv));
125
1/2
✓ Branch 0 (19→21) taken 1 times.
✗ Branch 1 (19→388) not taken.
1 driver.enrich();
126
127
2/12
✗ Branch 0 (23→24) not taken.
✓ Branch 1 (23→33) taken 1 times.
✗ Branch 2 (24→25) not taken.
✗ Branch 3 (24→251) not taken.
✗ Branch 4 (25→26) not taken.
✗ Branch 5 (25→247) not taken.
✗ Branch 6 (27→28) not taken.
✗ Branch 7 (27→245) not taken.
✗ Branch 8 (28→29) not taken.
✗ Branch 9 (28→243) not taken.
✓ Branch 10 (35→36) taken 1 times.
✗ Branch 11 (35→40) not taken.
1 ASSERT_TRUE(driver.shouldCompile);
128
2/12
✗ Branch 0 (39→41) not taken.
✓ Branch 1 (39→50) taken 1 times.
✗ Branch 2 (41→42) not taken.
✗ Branch 3 (41→263) not taken.
✗ Branch 4 (42→43) not taken.
✗ Branch 5 (42→259) not taken.
✗ Branch 6 (44→45) not taken.
✗ Branch 7 (44→257) not taken.
✗ Branch 8 (45→46) not taken.
✗ Branch 9 (45→255) not taken.
✓ Branch 10 (52→53) taken 1 times.
✗ Branch 11 (52→57) not taken.
1 ASSERT_FALSE(driver.shouldInstall);
129
2/12
✗ Branch 0 (56→58) not taken.
✓ Branch 1 (56→67) taken 1 times.
✗ Branch 2 (58→59) not taken.
✗ Branch 3 (58→275) not taken.
✗ Branch 4 (59→60) not taken.
✗ Branch 5 (59→271) not taken.
✗ Branch 6 (61→62) not taken.
✗ Branch 7 (61→269) not taken.
✗ Branch 8 (62→63) not taken.
✗ Branch 9 (62→267) not taken.
✓ Branch 10 (69→70) taken 1 times.
✗ Branch 11 (69→74) not taken.
1 ASSERT_FALSE(driver.shouldUninstall);
130
2/12
✗ Branch 0 (73→75) not taken.
✓ Branch 1 (73→84) taken 1 times.
✗ Branch 2 (75→76) not taken.
✗ Branch 3 (75→287) not taken.
✗ Branch 4 (76→77) not taken.
✗ Branch 5 (76→283) not taken.
✗ Branch 6 (78→79) not taken.
✗ Branch 7 (78→281) not taken.
✗ Branch 8 (79→80) not taken.
✗ Branch 9 (79→279) not taken.
✓ Branch 10 (86→87) taken 1 times.
✗ Branch 11 (86→91) not taken.
1 ASSERT_TRUE(driver.shouldExecute);
131
2/12
✗ Branch 0 (90→92) not taken.
✓ Branch 1 (90→101) taken 1 times.
✗ Branch 2 (92→93) not taken.
✗ Branch 3 (92→299) not taken.
✗ Branch 4 (93→94) not taken.
✗ Branch 5 (93→295) not taken.
✗ Branch 6 (95→96) not taken.
✗ Branch 7 (95→293) not taken.
✗ Branch 8 (96→97) not taken.
✗ Branch 9 (96→291) not taken.
✓ Branch 10 (103→104) taken 1 times.
✗ Branch 11 (103→106) not taken.
1 ASSERT_TRUE(driver.cliOptions.execute);
132
5/16
✓ Branch 0 (105→107) taken 1 times.
✗ Branch 1 (105→307) not taken.
✓ Branch 2 (107→108) taken 1 times.
✗ Branch 3 (107→305) not taken.
✓ Branch 4 (108→109) taken 1 times.
✗ Branch 5 (108→303) not taken.
✗ Branch 6 (112→113) not taken.
✓ Branch 7 (112→120) taken 1 times.
✗ Branch 8 (113→114) not taken.
✗ Branch 9 (113→314) not taken.
✗ Branch 10 (115→116) not taken.
✗ Branch 11 (115→311) not taken.
✗ Branch 12 (116→117) not taken.
✗ Branch 13 (116→309) not taken.
✓ Branch 14 (122→123) taken 1 times.
✗ Branch 15 (122→125) not taken.
1 ASSERT_EQ("../../media/test-project/test.spice", driver.cliOptions.mainSourceFile.relative_path().string());
133
3/12
✓ Branch 0 (124→126) taken 1 times.
✗ Branch 1 (124→318) not taken.
✗ Branch 2 (127→128) not taken.
✓ Branch 3 (127→135) taken 1 times.
✗ Branch 4 (128→129) not taken.
✗ Branch 5 (128→324) not taken.
✗ Branch 6 (130→131) not taken.
✗ Branch 7 (130→321) not taken.
✗ Branch 8 (131→132) not taken.
✗ Branch 9 (131→319) not taken.
✓ Branch 10 (137→138) taken 1 times.
✗ Branch 11 (137→142) not taken.
1 ASSERT_EQ(OptLevel::O0, driver.cliOptions.optLevel);
134
2/12
✗ Branch 0 (141→143) not taken.
✓ Branch 1 (141→152) taken 1 times.
✗ Branch 2 (143→144) not taken.
✗ Branch 3 (143→336) not taken.
✗ Branch 4 (144→145) not taken.
✗ Branch 5 (144→332) not taken.
✗ Branch 6 (146→147) not taken.
✗ Branch 7 (146→330) not taken.
✗ Branch 8 (147→148) not taken.
✗ Branch 9 (147→328) not taken.
✓ Branch 10 (154→155) taken 1 times.
✗ Branch 11 (154→159) not taken.
1 ASSERT_TRUE(driver.cliOptions.generateTestMain);
135
2/12
✗ Branch 0 (158→160) not taken.
✓ Branch 1 (158→169) taken 1 times.
✗ Branch 2 (160→161) not taken.
✗ Branch 3 (160→348) not taken.
✗ Branch 4 (161→162) not taken.
✗ Branch 5 (161→344) not taken.
✗ Branch 6 (163→164) not taken.
✗ Branch 7 (163→342) not taken.
✗ Branch 8 (164→165) not taken.
✗ Branch 9 (164→340) not taken.
✓ Branch 10 (171→172) taken 1 times.
✗ Branch 11 (171→176) not taken.
1 ASSERT_TRUE(driver.cliOptions.testMode);
136
2/12
✗ Branch 0 (175→177) not taken.
✓ Branch 1 (175→186) taken 1 times.
✗ Branch 2 (177→178) not taken.
✗ Branch 3 (177→360) not taken.
✗ Branch 4 (178→179) not taken.
✗ Branch 5 (178→356) not taken.
✗ Branch 6 (180→181) not taken.
✗ Branch 7 (180→354) not taken.
✗ Branch 8 (181→182) not taken.
✗ Branch 9 (181→352) not taken.
✓ Branch 10 (188→189) taken 1 times.
✗ Branch 11 (188→193) not taken.
1 ASSERT_TRUE(driver.cliOptions.noEntryFct);
137
2/12
✗ Branch 0 (192→194) not taken.
✓ Branch 1 (192→203) taken 1 times.
✗ Branch 2 (194→195) not taken.
✗ Branch 3 (194→372) not taken.
✗ Branch 4 (195→196) not taken.
✗ Branch 5 (195→368) not taken.
✗ Branch 6 (197→198) not taken.
✗ Branch 7 (197→366) not taken.
✗ Branch 8 (198→199) not taken.
✗ Branch 9 (198→364) not taken.
✓ Branch 10 (205→206) taken 1 times.
✗ Branch 11 (205→210) not taken.
1 ASSERT_TRUE(driver.cliOptions.dumpSettings.dumpCST); // -cst
138
2/12
✗ Branch 0 (209→211) not taken.
✓ Branch 1 (209→220) taken 1 times.
✗ Branch 2 (211→212) not taken.
✗ Branch 3 (211→384) not taken.
✗ Branch 4 (212→213) not taken.
✗ Branch 5 (212→380) not taken.
✗ Branch 6 (214→215) not taken.
✗ Branch 7 (214→378) not taken.
✗ Branch 8 (215→216) not taken.
✗ Branch 9 (215→376) not taken.
✓ Branch 10 (222→223) taken 1 times.
✗ Branch 11 (222→225) not taken.
1 ASSERT_TRUE(driver.cliOptions.dumpSettings.dumpAssembly); // -s
139
1/2
✓ Branch 0 (227→228) taken 1 times.
✗ Branch 1 (227→230) not taken.
1 }
140
141 4 TEST(DriverTest, TestInstallSubcommandMinimal) {
142 1 const char *argv[] = {"spice", "install", "../../media/test-project/test.spice"};
143 static constexpr int argc = std::size(argv);
144
1/2
✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→332) not taken.
1 Driver driver(true);
145
1/2
✓ Branch 0 (3→4) taken 1 times.
✗ Branch 1 (3→330) not taken.
1 driver.init();
146
4/14
✓ Branch 0 (4→5) taken 1 times.
✗ Branch 1 (4→199) not taken.
✓ Branch 2 (5→6) taken 1 times.
✗ Branch 3 (5→198) not taken.
✗ Branch 4 (7→8) not taken.
✓ Branch 5 (7→15) taken 1 times.
✗ Branch 6 (8→9) not taken.
✗ Branch 7 (8→205) not taken.
✗ Branch 8 (10→11) not taken.
✗ Branch 9 (10→202) not taken.
✗ Branch 10 (11→12) not taken.
✗ Branch 11 (11→200) not taken.
✓ Branch 12 (17→18) taken 1 times.
✗ Branch 13 (17→20) not taken.
1 ASSERT_EQ(EXIT_SUCCESS, driver.parse(argc, argv));
147
1/2
✓ Branch 0 (19→21) taken 1 times.
✗ Branch 1 (19→330) not taken.
1 driver.enrich();
148
149
2/12
✗ Branch 0 (23→24) not taken.
✓ Branch 1 (23→33) taken 1 times.
✗ Branch 2 (24→25) not taken.
✗ Branch 3 (24→217) not taken.
✗ Branch 4 (25→26) not taken.
✗ Branch 5 (25→213) not taken.
✗ Branch 6 (27→28) not taken.
✗ Branch 7 (27→211) not taken.
✗ Branch 8 (28→29) not taken.
✗ Branch 9 (28→209) not taken.
✓ Branch 10 (35→36) taken 1 times.
✗ Branch 11 (35→40) not taken.
1 ASSERT_TRUE(driver.shouldCompile);
150
2/12
✗ Branch 0 (39→41) not taken.
✓ Branch 1 (39→50) taken 1 times.
✗ Branch 2 (41→42) not taken.
✗ Branch 3 (41→229) not taken.
✗ Branch 4 (42→43) not taken.
✗ Branch 5 (42→225) not taken.
✗ Branch 6 (44→45) not taken.
✗ Branch 7 (44→223) not taken.
✗ Branch 8 (45→46) not taken.
✗ Branch 9 (45→221) not taken.
✓ Branch 10 (52→53) taken 1 times.
✗ Branch 11 (52→57) not taken.
1 ASSERT_TRUE(driver.shouldInstall);
151
2/12
✗ Branch 0 (56→58) not taken.
✓ Branch 1 (56→67) taken 1 times.
✗ Branch 2 (58→59) not taken.
✗ Branch 3 (58→241) not taken.
✗ Branch 4 (59→60) not taken.
✗ Branch 5 (59→237) not taken.
✗ Branch 6 (61→62) not taken.
✗ Branch 7 (61→235) not taken.
✗ Branch 8 (62→63) not taken.
✗ Branch 9 (62→233) not taken.
✓ Branch 10 (69→70) taken 1 times.
✗ Branch 11 (69→74) not taken.
1 ASSERT_FALSE(driver.shouldUninstall);
152
2/12
✗ Branch 0 (73→75) not taken.
✓ Branch 1 (73→84) taken 1 times.
✗ Branch 2 (75→76) not taken.
✗ Branch 3 (75→253) not taken.
✗ Branch 4 (76→77) not taken.
✗ Branch 5 (76→249) not taken.
✗ Branch 6 (78→79) not taken.
✗ Branch 7 (78→247) not taken.
✗ Branch 8 (79→80) not taken.
✗ Branch 9 (79→245) not taken.
✓ Branch 10 (86→87) taken 1 times.
✗ Branch 11 (86→91) not taken.
1 ASSERT_FALSE(driver.shouldExecute);
153
2/12
✗ Branch 0 (90→92) not taken.
✓ Branch 1 (90→101) taken 1 times.
✗ Branch 2 (92→93) not taken.
✗ Branch 3 (92→265) not taken.
✗ Branch 4 (93→94) not taken.
✗ Branch 5 (93→261) not taken.
✗ Branch 6 (95→96) not taken.
✗ Branch 7 (95→259) not taken.
✗ Branch 8 (96→97) not taken.
✗ Branch 9 (96→257) not taken.
✓ Branch 10 (103→104) taken 1 times.
✗ Branch 11 (103→106) not taken.
1 ASSERT_FALSE(driver.cliOptions.execute);
154
5/16
✓ Branch 0 (105→107) taken 1 times.
✗ Branch 1 (105→273) not taken.
✓ Branch 2 (107→108) taken 1 times.
✗ Branch 3 (107→271) not taken.
✓ Branch 4 (108→109) taken 1 times.
✗ Branch 5 (108→269) not taken.
✗ Branch 6 (112→113) not taken.
✓ Branch 7 (112→120) taken 1 times.
✗ Branch 8 (113→114) not taken.
✗ Branch 9 (113→280) not taken.
✗ Branch 10 (115→116) not taken.
✗ Branch 11 (115→277) not taken.
✗ Branch 12 (116→117) not taken.
✗ Branch 13 (116→275) not taken.
✓ Branch 14 (122→123) taken 1 times.
✗ Branch 15 (122→125) not taken.
1 ASSERT_EQ("../../media/test-project/test.spice", driver.cliOptions.mainSourceFile.relative_path().string());
155
3/12
✓ Branch 0 (124→126) taken 1 times.
✗ Branch 1 (124→284) not taken.
✗ Branch 2 (127→128) not taken.
✓ Branch 3 (127→135) taken 1 times.
✗ Branch 4 (128→129) not taken.
✗ Branch 5 (128→290) not taken.
✗ Branch 6 (130→131) not taken.
✗ Branch 7 (130→287) not taken.
✗ Branch 8 (131→132) not taken.
✗ Branch 9 (131→285) not taken.
✓ Branch 10 (137→138) taken 1 times.
✗ Branch 11 (137→142) not taken.
1 ASSERT_EQ(OptLevel::O0, driver.cliOptions.optLevel);
156
2/12
✗ Branch 0 (141→143) not taken.
✓ Branch 1 (141→152) taken 1 times.
✗ Branch 2 (143→144) not taken.
✗ Branch 3 (143→302) not taken.
✗ Branch 4 (144→145) not taken.
✗ Branch 5 (144→298) not taken.
✗ Branch 6 (146→147) not taken.
✗ Branch 7 (146→296) not taken.
✗ Branch 8 (147→148) not taken.
✗ Branch 9 (147→294) not taken.
✓ Branch 10 (154→155) taken 1 times.
✗ Branch 11 (154→159) not taken.
1 ASSERT_FALSE(driver.cliOptions.generateTestMain);
157
2/12
✗ Branch 0 (158→160) not taken.
✓ Branch 1 (158→169) taken 1 times.
✗ Branch 2 (160→161) not taken.
✗ Branch 3 (160→314) not taken.
✗ Branch 4 (161→162) not taken.
✗ Branch 5 (161→310) not taken.
✗ Branch 6 (163→164) not taken.
✗ Branch 7 (163→308) not taken.
✗ Branch 8 (164→165) not taken.
✗ Branch 9 (164→306) not taken.
✓ Branch 10 (171→172) taken 1 times.
✗ Branch 11 (171→176) not taken.
1 ASSERT_FALSE(driver.cliOptions.testMode);
158
2/12
✗ Branch 0 (175→177) not taken.
✓ Branch 1 (175→186) taken 1 times.
✗ Branch 2 (177→178) not taken.
✗ Branch 3 (177→326) not taken.
✗ Branch 4 (178→179) not taken.
✗ Branch 5 (178→322) not taken.
✗ Branch 6 (180→181) not taken.
✗ Branch 7 (180→320) not taken.
✗ Branch 8 (181→182) not taken.
✗ Branch 9 (181→318) not taken.
✓ Branch 10 (188→189) taken 1 times.
✗ Branch 11 (188→191) not taken.
1 ASSERT_FALSE(driver.cliOptions.noEntryFct);
159
1/2
✓ Branch 0 (193→194) taken 1 times.
✗ Branch 1 (193→196) not taken.
1 }
160
161 4 TEST(DriverTest, TestUninstallSubcommandMinimal) {
162 1 const char *argv[] = {"spice", "uninstall", "../../media/test-project/test.spice"};
163 static constexpr int argc = std::size(argv);
164
1/2
✓ Branch 0 (2→3) taken 1 times.
✗ Branch 1 (2→332) not taken.
1 Driver driver(true);
165
1/2
✓ Branch 0 (3→4) taken 1 times.
✗ Branch 1 (3→330) not taken.
1 driver.init();
166
4/14
✓ Branch 0 (4→5) taken 1 times.
✗ Branch 1 (4→199) not taken.
✓ Branch 2 (5→6) taken 1 times.
✗ Branch 3 (5→198) not taken.
✗ Branch 4 (7→8) not taken.
✓ Branch 5 (7→15) taken 1 times.
✗ Branch 6 (8→9) not taken.
✗ Branch 7 (8→205) not taken.
✗ Branch 8 (10→11) not taken.
✗ Branch 9 (10→202) not taken.
✗ Branch 10 (11→12) not taken.
✗ Branch 11 (11→200) not taken.
✓ Branch 12 (17→18) taken 1 times.
✗ Branch 13 (17→20) not taken.
1 ASSERT_EQ(EXIT_SUCCESS, driver.parse(argc, argv));
167
1/2
✓ Branch 0 (19→21) taken 1 times.
✗ Branch 1 (19→330) not taken.
1 driver.enrich();
168
169
2/12
✗ Branch 0 (23→24) not taken.
✓ Branch 1 (23→33) taken 1 times.
✗ Branch 2 (24→25) not taken.
✗ Branch 3 (24→217) not taken.
✗ Branch 4 (25→26) not taken.
✗ Branch 5 (25→213) not taken.
✗ Branch 6 (27→28) not taken.
✗ Branch 7 (27→211) not taken.
✗ Branch 8 (28→29) not taken.
✗ Branch 9 (28→209) not taken.
✓ Branch 10 (35→36) taken 1 times.
✗ Branch 11 (35→40) not taken.
1 ASSERT_FALSE(driver.shouldCompile);
170
2/12
✗ Branch 0 (39→41) not taken.
✓ Branch 1 (39→50) taken 1 times.
✗ Branch 2 (41→42) not taken.
✗ Branch 3 (41→229) not taken.
✗ Branch 4 (42→43) not taken.
✗ Branch 5 (42→225) not taken.
✗ Branch 6 (44→45) not taken.
✗ Branch 7 (44→223) not taken.
✗ Branch 8 (45→46) not taken.
✗ Branch 9 (45→221) not taken.
✓ Branch 10 (52→53) taken 1 times.
✗ Branch 11 (52→57) not taken.
1 ASSERT_FALSE(driver.shouldInstall);
171
2/12
✗ Branch 0 (56→58) not taken.
✓ Branch 1 (56→67) taken 1 times.
✗ Branch 2 (58→59) not taken.
✗ Branch 3 (58→241) not taken.
✗ Branch 4 (59→60) not taken.
✗ Branch 5 (59→237) not taken.
✗ Branch 6 (61→62) not taken.
✗ Branch 7 (61→235) not taken.
✗ Branch 8 (62→63) not taken.
✗ Branch 9 (62→233) not taken.
✓ Branch 10 (69→70) taken 1 times.
✗ Branch 11 (69→74) not taken.
1 ASSERT_TRUE(driver.shouldUninstall);
172
2/12
✗ Branch 0 (73→75) not taken.
✓ Branch 1 (73→84) taken 1 times.
✗ Branch 2 (75→76) not taken.
✗ Branch 3 (75→253) not taken.
✗ Branch 4 (76→77) not taken.
✗ Branch 5 (76→249) not taken.
✗ Branch 6 (78→79) not taken.
✗ Branch 7 (78→247) not taken.
✗ Branch 8 (79→80) not taken.
✗ Branch 9 (79→245) not taken.
✓ Branch 10 (86→87) taken 1 times.
✗ Branch 11 (86→91) not taken.
1 ASSERT_FALSE(driver.shouldExecute);
173
2/12
✗ Branch 0 (90→92) not taken.
✓ Branch 1 (90→101) taken 1 times.
✗ Branch 2 (92→93) not taken.
✗ Branch 3 (92→265) not taken.
✗ Branch 4 (93→94) not taken.
✗ Branch 5 (93→261) not taken.
✗ Branch 6 (95→96) not taken.
✗ Branch 7 (95→259) not taken.
✗ Branch 8 (96→97) not taken.
✗ Branch 9 (96→257) not taken.
✓ Branch 10 (103→104) taken 1 times.
✗ Branch 11 (103→106) not taken.
1 ASSERT_FALSE(driver.cliOptions.execute);
174
5/16
✓ Branch 0 (105→107) taken 1 times.
✗ Branch 1 (105→273) not taken.
✓ Branch 2 (107→108) taken 1 times.
✗ Branch 3 (107→271) not taken.
✓ Branch 4 (108→109) taken 1 times.
✗ Branch 5 (108→269) not taken.
✗ Branch 6 (112→113) not taken.
✓ Branch 7 (112→120) taken 1 times.
✗ Branch 8 (113→114) not taken.
✗ Branch 9 (113→280) not taken.
✗ Branch 10 (115→116) not taken.
✗ Branch 11 (115→277) not taken.
✗ Branch 12 (116→117) not taken.
✗ Branch 13 (116→275) not taken.
✓ Branch 14 (122→123) taken 1 times.
✗ Branch 15 (122→125) not taken.
1 ASSERT_EQ("../../media/test-project/test.spice", driver.cliOptions.mainSourceFile.relative_path().string());
175
3/12
✓ Branch 0 (124→126) taken 1 times.
✗ Branch 1 (124→284) not taken.
✗ Branch 2 (127→128) not taken.
✓ Branch 3 (127→135) taken 1 times.
✗ Branch 4 (128→129) not taken.
✗ Branch 5 (128→290) not taken.
✗ Branch 6 (130→131) not taken.
✗ Branch 7 (130→287) not taken.
✗ Branch 8 (131→132) not taken.
✗ Branch 9 (131→285) not taken.
✓ Branch 10 (137→138) taken 1 times.
✗ Branch 11 (137→142) not taken.
1 ASSERT_EQ(O0, driver.cliOptions.optLevel);
176
2/12
✗ Branch 0 (141→143) not taken.
✓ Branch 1 (141→152) taken 1 times.
✗ Branch 2 (143→144) not taken.
✗ Branch 3 (143→302) not taken.
✗ Branch 4 (144→145) not taken.
✗ Branch 5 (144→298) not taken.
✗ Branch 6 (146→147) not taken.
✗ Branch 7 (146→296) not taken.
✗ Branch 8 (147→148) not taken.
✗ Branch 9 (147→294) not taken.
✓ Branch 10 (154→155) taken 1 times.
✗ Branch 11 (154→159) not taken.
1 ASSERT_FALSE(driver.cliOptions.generateTestMain);
177
2/12
✗ Branch 0 (158→160) not taken.
✓ Branch 1 (158→169) taken 1 times.
✗ Branch 2 (160→161) not taken.
✗ Branch 3 (160→314) not taken.
✗ Branch 4 (161→162) not taken.
✗ Branch 5 (161→310) not taken.
✗ Branch 6 (163→164) not taken.
✗ Branch 7 (163→308) not taken.
✗ Branch 8 (164→165) not taken.
✗ Branch 9 (164→306) not taken.
✓ Branch 10 (171→172) taken 1 times.
✗ Branch 11 (171→176) not taken.
1 ASSERT_FALSE(driver.cliOptions.testMode);
178
2/12
✗ Branch 0 (175→177) not taken.
✓ Branch 1 (175→186) taken 1 times.
✗ Branch 2 (177→178) not taken.
✗ Branch 3 (177→326) not taken.
✗ Branch 4 (178→179) not taken.
✗ Branch 5 (178→322) not taken.
✗ Branch 6 (180→181) not taken.
✗ Branch 7 (180→320) not taken.
✗ Branch 8 (181→182) not taken.
✗ Branch 9 (181→318) not taken.
✓ Branch 10 (188→189) taken 1 times.
✗ Branch 11 (188→191) not taken.
1 ASSERT_FALSE(driver.cliOptions.noEntryFct);
179
1/2
✓ Branch 0 (193→194) taken 1 times.
✗ Branch 1 (193→196) not taken.
1 }
180
181 } // namespace spice::testing
182