diff --git a/.gitignore b/.gitignore index fd41a2e3..b82214e9 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,5 @@ android doc/xml benchmarks/files/numbers/*.json + +*.o diff --git a/.travis.yml b/.travis.yml index ffe05ec6..4af6bf74 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ matrix: - make clean - touch src/json.hpp - make json_unit CXXFLAGS="-fprofile-arcs -ftest-coverage -std=c++11 -lstdc++" CXX=$COMPILER - - ./json_unit "*" + - test/json_unit "*" - coveralls --exclude test/src/catch.hpp --exclude test/src/unit.cpp --include src/json.hpp --gcov-options '\-lp' --gcov 'gcov-4.9' - bash <(curl -s https://codecov.io/bash) env: COMPILER=g++-4.9 @@ -164,9 +164,9 @@ script: - uname -a - $COMPILER --version - make CXX=$COMPILER - - ./json_unit "*" + - test/json_unit "*" - if [ `which valgrind` ]; then - valgrind --error-exitcode=1 --leak-check=full ./json_unit ; + valgrind --error-exitcode=1 --leak-check=full test/json_unit ; fi - if [ `which brew` ]; then brew update ; diff --git a/Makefile b/Makefile index 70e8859d..199d65da 100644 --- a/Makefile +++ b/Makefile @@ -12,18 +12,20 @@ clean: rm -fr json_unit json_benchmarks fuzz fuzz-testing *.dSYM rm -fr benchmarks/files/numbers/*.json $(MAKE) clean -Cdoc + $(MAKE) clean -Ctest ########################################################################## # unit tests ########################################################################## -# additional flags -FLAGS = -Wall -Wextra -pedantic -Weffc++ -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat=2 -Winit-self -Wmissing-declarations -Wmissing-include-dirs -Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-overflow=5 -Wswitch -Wundef -Wno-unused -Wnon-virtual-dtor -Wreorder -Wdeprecated -Wfloat-equal +# build unit tests +json_unit: + @$(MAKE) -C test -# build unit tests (TODO: Does this want its own makefile?) -json_unit: test/src/unit.cpp src/json.hpp test/src/catch.hpp - $(CXX) -std=c++11 $(CXXFLAGS) $(FLAGS) $(CPPFLAGS) -I src -I test $< $(LDFLAGS) -o $@ +# run unit tests +check: json_unit + test/json_unit "*" ########################################################################## diff --git a/README.md b/README.md index c0bb61b1..722bf880 100644 --- a/README.md +++ b/README.md @@ -501,8 +501,7 @@ Thanks a lot for helping out! To compile and run the tests, you need to execute ```sh -$ make -$ ./json_unit "*" +$ make check =============================================================================== All tests passed (8905012 assertions in 32 test cases) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index c66b19c8..4d12de37 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -3,6 +3,7 @@ set(JSON_UNITTEST_TARGET_NAME "json_unit") add_executable(${JSON_UNITTEST_TARGET_NAME} "src/catch.hpp" "src/unit.cpp" + "src/unit-runner.cpp" ) set_target_properties(${JSON_UNITTEST_TARGET_NAME} PROPERTIES diff --git a/test/Makefile b/test/Makefile new file mode 100644 index 00000000..0d4edec7 --- /dev/null +++ b/test/Makefile @@ -0,0 +1,21 @@ +########################################################################## +# unit tests +########################################################################## + +# additional flags +CXXFLAGS += -std=c++11 -Wall -Wextra -pedantic -Weffc++ -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat=2 -Winit-self -Wmissing-declarations -Wmissing-include-dirs -Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-overflow=5 -Wswitch -Wundef -Wno-unused -Wnon-virtual-dtor -Wreorder -Wdeprecated -Wfloat-equal +INCDIRS = -I ../src -I . + +SOURCES = src/unit-runner.cpp src/unit.cpp +OBJECTS = $(SOURCES:.cpp=.o) + +all: json_unit + +json_unit: $(OBJECTS) ../src/json.hpp src/catch.hpp + $(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJECTS) -o $@ + +%.o: %.cpp + $(CXX) $(CXXFLAGS) $(INCDIRS) -c $< -o $@ + +clean: + rm -fr json_unit $(OBJECTS) diff --git a/test/src/unit-runner.cpp b/test/src/unit-runner.cpp new file mode 100644 index 00000000..ec957b7a --- /dev/null +++ b/test/src/unit-runner.cpp @@ -0,0 +1,30 @@ +/* + __ _____ _____ _____ + __| | __| | | | JSON for Modern C++ (test suite) +| | |__ | | | | | | version 2.0.2 +|_____|_____|_____|_|___| https://github.com/nlohmann/json + +Licensed under the MIT License . +Copyright (c) 2013-2016 Niels Lohmann . + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#define CATCH_CONFIG_MAIN +#include "catch.hpp" diff --git a/test/src/unit.cpp b/test/src/unit.cpp index 79a4bb09..a5c348bb 100644 --- a/test/src/unit.cpp +++ b/test/src/unit.cpp @@ -26,12 +26,12 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -#define CATCH_CONFIG_MAIN #include "catch.hpp" #include #include #include +#include #include #include #include