Browse Source

tests: infrastructure for implementing mock headers.

We need to duplicate the header directory entirely in order to be able
to replace header 'xyz.h' (so that 'include "xyz.h"' in other, real,
headers resolves to the mock).
Davin McCall 6 years ago
parent
commit
77ef4236c4
3 changed files with 27 additions and 5 deletions
  1. 1 0
      .gitignore
  2. 12 5
      src/tests/Makefile
  3. 14 0
      src/tests/test-includes/control.h

+ 1 - 0
.gitignore

@@ -7,3 +7,4 @@ test
 shutdown
 dinit-reboot
 src/tests/tests
+src/tests/includes

+ 12 - 5
src/tests/Makefile

@@ -1,26 +1,33 @@
 -include ../../mconfig
 
 objects = tests.o test-dinit.o
-parent_objs = service.o baseproc-service.o proc-service.o control.o dinit-log.o load_service.o # dinit.o
+parent_objs = service.o baseproc-service.o proc-service.o dinit-log.o load_service.o
 
 check: build-tests
 	./tests
 
-build-tests: tests
+build-tests: prepare-incdir tests
+
+# Create an "includes" directory populated with a combination of real and mock headers:
+prepare-incdir:
+	mkdir -p includes
+	rm -rf includes/*.h
+	cd includes; ln -sf ../../includes/*.h .
+	cd includes; ln -sf ../test-includes/*.h .
 
 tests: $(objects) $(parent_objs)
 	$(CXX) $(SANITIZEOPTS) -o tests $(objects) $(parent_objs) $(EXTRA_LIBS)
 
 $(objects): %.o: %.cc
-	$(CXX) $(CXXOPTS) $(SANITIZEOPTS) -I../includes -I../dasynq -c $< -o $@
+	$(CXX) $(CXXOPTS) $(SANITIZEOPTS) -Iincludes -I../dasynq -c $< -o $@
 
 $(parent_objs): %.o: ../%.cc
-	$(CXX) $(CXXOPTS) $(SANITIZEOPTS) -I../includes -I../dasynq -c $< -o $@
+	$(CXX) $(CXXOPTS) $(SANITIZEOPTS) -Iincludes -I../dasynq -c $< -o $@
 
 clean:
 	rm -f *.o *.d
 
 $(objects:.o=.d): %.d: %.cc
-	$(CXX) $(CXXOPTS) -I../includes -I../dasynq -MM -MG -MF $@ $<
+	$(CXX) $(CXXOPTS) -Iincludes -I../dasynq -MM -MG -MF $@ $<
 
 include $(objects:.o=.d)

+ 14 - 0
src/tests/test-includes/control.h

@@ -0,0 +1,14 @@
+// dummy control.h
+
+#include "dinit.h"
+
+class service_set;
+
+class control_conn_t
+{
+    public:
+    control_conn_t(eventloop_t &loop, service_set * services_p, int fd)
+    {
+        // active_control_conns++;
+    }
+};