Improved unit test structure
authorrodrigosiqueira <rodrigosiqueiramelo@gmail.com>
Sat, 10 Dec 2016 20:21:56 +0000 (18:21 -0200)
committerrodrigosiqueira <rodrigosiqueiramelo@gmail.com>
Sat, 10 Dec 2016 20:21:56 +0000 (18:21 -0200)
Signed-off-by: rodrigosiqueira <rodrigosiqueiramelo@gmail.com>
Signed-off-by: chaws <18oliveira.charles@gmail.com>
* Merged run-all-unitest inside unit-test target
* Fixed Makefile dependencies
* Updated documentation about unit test

CodingReadme
Makefile
tests/unit/Makefile

index d2e975dab0976ab215e321cb4d536936fdae684d..041f3b1fa1763e200b6e36d5da848ba0e61f0e14 100644 (file)
@@ -436,8 +436,8 @@ test. However, it is strongly recommended that you take a look to the official
 repository (https://github.com/google/googletest) and refers to that if you
 have any problem to install it. Follow the steps below:
 
-* Install: cmake
-* Clone google test project from: //github.com/rodrigosiqueira/logbook.git and
+* Install: cmake and pthread
+* Clone google test project from: https://github.com/google/googletest and
   enter in the project directory
 * Inside project directory, type:
 
index 340fe12296953a94a16a43d9325791193c2d0672..cf40309ce4ce5c6925db2e5c581f8eaeec07e065 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -455,9 +455,6 @@ unit-test: libyosys.so
        @$(MAKE) -C $(UNITESTPATH) CXX="$(CXX)" CPPFLAGS="$(CPPFLAGS)" \
                CXXFLAGS="$(CXXFLAGS)" LDLIBS="$(LDLIBS)" ROOTPATH="$(CURDIR)"
 
-run-all-unitest:
-       @$(MAKE) -C $(UNITESTPATH) run-tests
-
 clean-unit-test:
        @$(MAKE) -C $(UNITESTPATH) clean
 
index 16f65ec206331d03224bc8d7c00b7083771b479e..447a5f619566c7a7e82891ecda1cbd03af6cccd0 100644 (file)
@@ -2,26 +2,33 @@ GTESTFLAG := -lgtest -lgtest_main
 RPATH := -Wl,-rpath
 EXTRAFLAGS := -lyosys
 
-ALLTESTFILE := $(wildcard ./**/*Test.cc)
 OBJTEST := objtest
 BINTEST := bintest
 
-all: prepare $(ALLTESTFILE:%Test.cc=%Test.o)
+ALLTESTFILE := $(shell find -name '*Test.cc' -printf '%P ')
+TESTDIRS := $(sort $(dir $(ALLTESTFILE)))
+TESTS := $(addprefix $(BINTEST)/, $(basename $(ALLTESTFILE:%Test.cc=%Test.o)))
 
-%Test.o: %Test.cc
-       $(CXX) -o $(OBJTEST)/$(notdir $@) -c -I$(ROOTPATH) $(CPPFLAGS) $(CXXFLAGS) $<
-       $(CXX) -L$(ROOTPATH) $(RPATH)=$(ROOTPATH) -o \
-               $(BINTEST)/$(basename $(notdir $@)) $(OBJTEST)/$(notdir $@) $(LDLIBS) \
+# Prevent make from removing our .o files
+.SECONDARY:
+
+all: prepare $(TESTS) run-tests
+
+$(BINTEST)/%: $(OBJTEST)/%.o
+       $(CXX) -L$(ROOTPATH) $(RPATH)=$(ROOTPATH) -o $@ $^ $(LDLIBS) \
                $(GTESTFLAG) $(EXTRAFLAGS)
-       
+
+$(OBJTEST)/%.o: $(basename $(subst $(OBJTEST),.,%)).cc
+       $(CXX) -o $@ -c -I$(ROOTPATH) $(CPPFLAGS) $(CXXFLAGS) $^
+
 .PHONY: prepare run-tests clean
 
-run-tests:
-       $(CURDIR)/$(BINTEST)/*
+run-tests: $(TESTS)
+       $(subst Test ,Test; ,$^)
 
 prepare:
-       mkdir -p $(OBJTEST)
-       mkdir -p $(BINTEST)
+       mkdir -p $(addprefix $(BINTEST)/,$(TESTDIRS))
+       mkdir -p $(addprefix $(OBJTEST)/,$(TESTDIRS))
 
 clean:
        rm -rf $(OBJTEST)