Commit Graph

195 Commits

Author SHA1 Message Date
Louis Dionne
a5923b4845 Remove support for Clang 3.5, 3.6, 3.7 and 3.8, and Xcode 8
Those are old compilers and removing support allows removing a couple
of workarounds. It also reduces the CI burden and will allow us to test
more recent and more relevant compilers.
2019-07-30 14:48:41 -04:00
Zach Laine
7adb3f4b31 Rename check to hana_check
If a "check" target exists, give it a dependency on hana_check. Also, add a custom target check that depends on hana_check otherwise.

Closes  (#422)
2018-09-20 14:47:24 -04:00
Jason Rice
91def72864 [CMake] Specify the toolchain file for the deploy test
Closes pr/toolchain (#382)
2018-01-07 09:26:21 -08:00
Louis Dionne
a82e0f08c9 [CMake] Specify the generator during the deploy test
This fixes the build on appveyor.
2017-11-26 21:28:45 -08:00
Louis Dionne
8847806d65 [CMake] Add a deployment test that checks the validity of HanaConfig.cmake 2017-11-26 17:50:04 -08:00
Louis Dionne
5e1b6c5039 [ext.std.tuple] Always enable the adapter, even on older libc++'s
This used to guard against a bug in the std::tuple implementation, but it
seems like this bug was fixed in subsequent minor releases of Clang 3.5 and
3.6, which we test against.
2017-11-26 14:18:08 -08:00
Louis Dionne
126cdb8e0d [CMake] Make the header tests generate a single executable
The idea was given to me by Daniel Pfeifer (@purpleKarrot), who said it may
actually help find ODR issues better. In any case, this simplifies the script
and reduces the (otherwise overwhelming) number of targets.
2017-11-25 13:00:53 -08:00
Louis Dionne
d1ea99a84e [CMake] Properly quote file paths 2017-06-24 14:53:10 -07:00
Louis Dionne
ece10d9e9b [CMake] Properly propagate dependencies on Boost headers 2017-03-30 10:25:03 -07:00
Louis Dionne
a0a8ecc061 [CMake] Do not include Boost headers globally 2017-03-29 22:08:04 -07:00
Louis Dionne
279dbaa9b5 [pair] Ensure that a pair of empty objects is empty too
Also, fix some overly loose constructors
2017-02-11 15:40:42 -08:00
Louis Dionne
40ca5afd7d Add a building block for EBO in containers 2017-02-11 10:26:56 -08:00
Louis Dionne
50336d4aeb [CMake] Use per-target properties instead of populating global flags 2017-02-10 08:07:44 -08:00
Louis Dionne
478b5cc690 [CMake] Handle Valgrind through CTest, without a custom boost_hana_add_test 2017-02-08 07:57:13 -08:00
Louis Dionne
9f18782648 [CMake] Remove nonexistent headers in excluded public header list 2017-02-07 19:30:10 -08:00
Louis Dionne
9895803ede Bump copyright year to 2017 2017-01-07 14:14:18 -08:00
Louis Dionne
477d15e7e3 Disable the type_name test for Clang < 3.6 2016-10-23 11:59:29 -07:00
Louis Dionne
772df8e7a3 [CMake] Rewrite the TestHeaders module 2016-10-10 20:52:54 -07:00
Louis Dionne
8f8794fd28 [CMake] Add the hana interface library
Also, simplify the example/test setup by removing the tests.quick target
2016-10-10 20:52:54 -07:00
Louis Dionne
429ec2be78 [CMake] Fix the condition for enabling the experimental type_name test 2016-10-10 20:51:42 -07:00
Louis Dionne
07d427a55f [CMake] Do not remove the experimental type_name test on AppleClang 2016-10-09 14:26:08 -07:00
Louis Dionne
f537928be1 Fix experimental::type_name, which is only supported on Clang 2016-10-03 20:15:33 -07:00
Louis Dionne
814a704d7f [CMake] Simplify the unit test CMakeLists 2016-08-30 21:54:12 -07:00
Louis Dionne
6798df624e [tests] Reorganize the test/_support folder
- Rename test/_support to test/_include
- Move stuff from test/_include/test to test/_include/support
- Move stuff in test/_include/support into global namespace
2016-02-22 19:09:50 -05:00
Louis Dionne
b952e0dfee [tests] Rename test/bugs directory to test/issues 2016-01-26 13:21:56 -05:00
Louis Dionne
7f1eeb975a [CMake] Exclude auto tests from the tests.quick target
Running the auto tests cause Appveyor builds to time out.
2016-01-04 17:39:05 -05:00
Louis Dionne
1026267959 [CMake] Modularize the checks for external packages 2016-01-04 14:58:11 -05:00
Louis Dionne
9a1d5551d5 [tests] Move all support headers to the _support subdirectory 2016-01-04 11:18:46 -05:00
Louis Dionne
3c2ecadd15 [tests] Move Github 75 bug to its own directory 2016-01-04 11:18:46 -05:00
Louis Dionne
c41a5cb6be Update copyright notices for 2016 2016-01-01 14:54:06 -05:00
Louis Dionne
28298d2cf1 [CMake] Exclude experimental/printable tests when Boost is missing 2015-12-21 21:14:50 -05:00
Louis Dionne
850dbf7ad7 Provide an experimental print function
Closes #200
Closes #219
2015-12-09 14:47:13 -05:00
Louis Dionne
0e4b8abe0e [Windows] Disable failing tests due to EBO bug, and fix broken example
The example/tap.cpp bug was actually interesting, so I'll document it
here. We were using `tap` with a function that performed side effects.
However, we relied on the side effects being done in a particular order
for the example to pass. This is a violation of what the documentation
says we're allowed to.

On Windows, the call convention is such that arguments are evaluated
from right to left, instead of left to right like on OS X and Linux.
Since `chain` uses `transform` and `transform` expands `f(x)...` inside
a function call, our function with side effects was being called in
reverse order as what we would have expected!

Morale: Listen to the documentation, or perish.
2015-11-18 20:18:34 -05:00
Louis Dionne
4782c8a0b6 [CMake] Simplify and optimize the handling of unit tests and examples 2015-11-14 14:13:27 -05:00
Louis Dionne
1d2e3a682b [CMake] Create a generic module to handle public header testing 2015-11-14 14:13:18 -05:00
Louis Dionne
5c2b4f1eb0 [Tests] Do not run the header tests under Valgrind 2015-11-07 12:05:41 -05:00
Louis Dionne
c9784816f4 Move /test/sandbox to /experimental
Closes #169
2015-09-16 12:48:09 -04:00
Louis Dionne
0893ae57f7 [Fusion adapters] Don't test the full laws, only the implemented methods
The Fusion adapters have been giving me trouble for a long time now.
The problem is that Hana's unit tests are more thorough than Fusion's,
and hence we keep uncovering Fusion bugs through Hana's unit tests.
This keeps on breaking the build and makes me lose valuable time trying
to workaround these bugs until they are fixed in Fusion's master branch.

Therefore, only the methods that are implemented by Fusion adapters are
tested to make sure they work as expected, but the other algorithms that
are derived from them are not tested on Fusion adapters.
2015-07-26 12:42:20 +02:00
Louis Dionne
1e89c69049 [CMake] Remove LIBCXX_ROOT cruft and properly explain the situation in the README
Also:
- Remove the boost_hana_add_executable function, which is now useless
- Properly set the LD_LIBRARY_PATH to link against a custom libc++
- Adjust the Travis build

Fixes #135
2015-06-24 20:07:13 -04:00
Louis Dionne
35cdf3b83a [Struct] Implement macros using ERB templates instead of Boost.Preprocessor
This is done because the resulting macros are much more straightforward
to debug when a user makes a mistake. Also, it avoids pulling yet another
dependency.

Also added some general purpose macros in detail/preprocessor.hpp.
2015-06-10 15:50:35 -04:00
Louis Dionne
7b1de7fe43 [Travis] Speed up the travis build
- Make sure the check.benchmarks are serialized
- Run Doxygen with Clang 3.6 instead of Clang trunk
- Download prebuilt Doxygen instead of building from source
- Run unit tests on two cores
2015-06-05 19:38:27 -04:00
Louis Dionne
647e695951 [CMake] Add the check target and fix minor annoyances 2015-05-30 12:23:01 -04:00
Louis Dionne
aa2edb08ce [CMake] Reduce the number of targets and modularize the code 2015-05-22 16:23:54 -04:00
Louis Dionne
2b0846a79a Fix ODR violations caused by multiple definitions in header
This commit fixes issue #75, but it does not fix the related issue #76.
It only makes sure that function objects are not defined multiple times,
but does not ensure the uniqueness of the addresses of the function
objects, which is much harder to get right.

Fixes #75
2015-05-21 16:38:00 -04:00
Louis Dionne
6e9a7a28c9 [Ext] Disable failing Fusion tests because of Fusion bugs 2015-05-20 13:33:42 -04:00
Louis Dionne
a9cf8bf9e7 [CMake] Exclude ext/boost/fusion/detail from the automatic header tests 2015-05-03 13:34:51 -04:00
Louis Dionne
e6d0fa9487 [CMake] Use Find modules to find optional external libraries 2015-04-28 10:46:44 -04:00
Louis Dionne
69c02987ef [Tests] Automatically discover test subparts 2015-04-25 23:32:39 -04:00
Louis Dionne
f87919b94b [Record] Rename to Struct and refactor
- Define the notion of move-independence, thus relaxing the requirements on accessors.
- Rename `members` to `accessors` and use `members` to get the members only
- Document the different ways of providing a model
- Make the model of Foldable more consistent

Fixes #53
2015-04-21 16:32:33 -04:00
Louis Dionne
ac2f5222cd [Travis] Run the unit tests under valgrind 2015-04-18 22:36:40 -04:00