Use a small, standalone testing framework instead of googletest.
authorNico Weber <nicolasweber@gmx.de>
Thu, 18 Sep 2014 02:48:26 +0000 (19:48 -0700)
committerNico Weber <nicolasweber@gmx.de>
Thu, 18 Sep 2014 02:48:26 +0000 (19:48 -0700)
commitb2fe56caaf0bed497ee480003f10486c18d8de9a
tree8d32bf2472cb6fd4344650f24b38421221fcc738
parent1d9184c3adbfabacb844b0a715a64b08998c204f
Use a small, standalone testing framework instead of googletest.

Ninja currently uses googletest for testing. That makes building
ninja_test somewhat annoying since it requires that one passes
--with-gtest PATH to configure. It turns out just implementing the bits
of googletest that ninja uses needs about the same amount of code than
making the --with-gtest flag in configure.py work and making googletest
print test results in a way we want (!)

In addition to making configuration simpler, this also makes compiling
tests much faster: On my system, touching src/build_test.cc (the slowest
file to build in ninja) and rebuilding ninja_tests is twice as fast than
without this patch. Building all is noticeably faster too: 5.6s with
this patch, 9.1s without this patch (38% faster).

The most noticeable things missing: EXPECT_* and ASSERT_* don't support
streaming notes to them with operator<<, and for failing tests the lhs
and rhs are not printed. That's so that this header does not have to
include sstream, which slows down building ninja_test almost 20%.
If this turns out to be annoying, we can maybe add it.
14 files changed:
configure.py
src/build_test.cc
src/depfile_parser_test.cc
src/deps_log_test.cc
src/disk_interface_test.cc
src/includes_normalize_test.cc
src/lexer_test.cc
src/manifest_parser_test.cc
src/msvc_helper_test.cc
src/ninja_test.cc
src/state_test.cc
src/subprocess_test.cc
src/test.cc
src/test.h