aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2021-08-22 11:21:07 -0300
committerEuAndreh <eu@euandre.org>2021-08-22 11:42:34 -0300
commit3a4b3fa01b6ead1e23434c533302a2a9fddfd89e (patch)
tree5a4f5b1e9e5d78e057ed2b49d6d94269dd586a98 /src/main.c
parentsrc/gistatic.c: Remove .logo bogus color attribute (diff)
downloadgistatic-3a4b3fa01b6ead1e23434c533302a2a9fddfd89e.tar.gz
gistatic-3a4b3fa01b6ead1e23434c533302a2a9fddfd89e.tar.xz
Have a single top-level main for running unit-tests
Instead of each .c file becoming a self-standing .t executable file, and being run for executing the unit tests local to the file, now each .c becomes a .to object (akin to a .o object, but one where the -DTEST flag is given to the compiler). After that, all the .to objects are linked together in a gistatic-tests executable, in a equivalent way that all .o files get linked together in a gistatic executable. This change was necessary in order to allow dependencies between objects. The next task will be making a tar of a repository tree checkout, and src/gistatic.{o,to} will start depending on src/tar.{o,to}. If each file has its own main function when -DTEST is given, then I wont be able to link them together. I took the opportunity that I had to change the Makefile, and I improved the dependency between targets and dependencies greatly. From what I can tell now, it is correct.
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
index 52c749f..34214ea 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1,5 +1,20 @@
+#include "tar.h"
#include "gistatic.h"
+#include <stdlib.h>
+
+#ifdef TEST
+static void unit_tests(void) {
+ unit_tests_tar();
+ unit_tests_gistatic();
+}
+#endif
+
int main(int argc, char *argv[]) {
+#ifdef TEST
+ unit_tests();
+ return EXIT_SUCCESS;
+#endif
+
return gistatic_main(argc, argv);
}