GCC Code Coverage Report


Directory: src/
File: script_runtime/runtime.cpp
Date: 2024-12-30 15:39:09
Exec Total Coverage
Lines: 30 30 100.0%
Functions: 4 4 100.0%
Branches: 17 26 65.4%

Line Branch Exec Source
1 #include <cstdlib>
2 #include <fstream>
3 #include <iostream>
4 #include <script.h>
5 #include <string>
6 #include <vector>
7
8 4 inline void print_error(const char* msg)
9 {
10 4 std::cout << "\033[31m";
11 4 std::cout << "Error: " << msg << std::endl;
12 4 std::cout << "\033[0m";
13 4 }
14
15 2 void print_info(const char* msg)
16 {
17 2 std::cout << msg << std::endl;
18 2 }
19
20 4 auto runtime(const char* arg)
21 {
22
1/2
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
4 std::ifstream source{arg};
23
24
3/4
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✓ Branch 4 taken 3 times.
4 if (!source.is_open())
25 {
26
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 print_error("Could not open file.");
27 1 return false;
28 }
29
30
1/2
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 const std::vector<char> data(std::istreambuf_iterator<char>(source), {});
31
32
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
3 source.close();
33
34
2/4
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
3 std::cout << data.size() << "\n";
35
36
1/2
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
3 const auto res = script::runtime(data, print_info);
37
38
2/2
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
3 if (!res.empty())
39 {
40
1/2
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
2 print_error(res.c_str());
41 2 return false;
42 }
43
44 1 return true;
45 4 }
46
47 5 int main(int argc, char* argv[])
48 {
49
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
5 if (argc == 1)
50 {
51 1 print_error("Missing command line argument.");
52 1 return -1;
53 }
54
55 // todo: make option
56 4 std::cout << argv[1] << "\n";
57
58
2/2
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 1 times.
4 if (!runtime(argv[1]))
59 3 return EXIT_FAILURE;
60
61 1 return EXIT_SUCCESS;
62 }
63