-
Notifications
You must be signed in to change notification settings - Fork 0
Initial swift_cc* wrappers #3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
| @@ -0,0 +1,43 @@ | |||
| # Name for a unit test | |||
| UNIT = "unit" | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bazel has a built in convention for splitting up tests that's similiar to how we distinguish unit vs integration tests.
The convention is small vs large tests: https://bazel.build/reference/test-encyclopedia#tag-conventions.
The you filter with bazel test --test_size_filters=small.
Putting this behind a constant means we can change this to the conventional way if we want without a big refactor.
Adds wrappers for native cc rules to enforce Swift conventions around C/C++ code.
With this change, UBSAN failures in CI should now have symbol
information, facilitating hunting done these issues:
```
[----------] 5 tests from ValidatorTest
[ RUN ] ValidatorTest.FailsWithSanityChecker
external/starling-core/public_types/include/public_types/optional/optional_object.h:904:46: runtime error: load of value 48, which is not a valid value for type 'bool'
error: failed to decompress '.debug_aranges', zlib is not available
error: failed to decompress '.debug_info', zlib is not available
error: failed to decompress '.debug_abbrev', zlib is not available
error: failed to decompress '.debug_line', zlib is not available
error: failed to decompress '.debug_str', zlib is not available
error: failed to decompress '.debug_loc', zlib is not available
error: failed to decompress '.debug_ranges', zlib is not available
#0 0x1576c5c in swift::optional<double>::operator=(swift::optional<double>&&) /proc/self/cwd/external/starling-core/public_types/include/public_types/optional/optional_object.h
#1 0x185142c in sensorfusion::InertialNavigationSystem::CorrectedInertialData::operator=(sensorfusion::InertialNavigationSystem::CorrectedInertialData&&) /proc/self/cwd/sensorfusion/include/sensorfusion/deadreckoning/inertial_navigation_system.h:49:10
#2 0x1851386 in sensorfusion::InertialNavigationSystem::InertialState::operator=(sensorfusion::InertialNavigationSystem::InertialState&&) /proc/self/cwd/sensorfusion/include/sensorfusion/deadreckoning/inertial_navigation_system.h:70:10
#3 0x1ac4f8d in sensorfusion::InertialNavigationSystem::reset() /proc/self/cwd/sensorfusion/src/deadreckoning/inertial_navigation_system.cc:37:19
#4 0x1a0a2fd in sensorfusion::ErrorEstimator::reset_filter() /proc/self/cwd/sensorfusion/src/deadreckoning/error_ekf.cc:130:9
#5 0x1a09919 in sensorfusion::ErrorEstimator::ErrorEstimator(sensorfusion::configuration::Configuration const&, sensorfusion::InertialNavigationSystem*) /proc/self/cwd/sensorfusion/src/deadreckoning/error_ekf.cc:51:3
#6 0x1916708 in (anonymous namespace)::ValidatorTest::ValidatorTest() /proc/self/cwd/sensorfusion/test/unit/test_sanity_checkers.cc:48:9
#7 0x19165c0 in (anonymous namespace)::ValidatorTest_FailsWithSanityChecker_Test::ValidatorTest_FailsWithSanityChecker_Test() /proc/self/cwd/sensorfusion/test/unit/test_sanity_checkers.cc:256:1
#8 0x19165c0 in testing::internal::TestFactoryImpl<(anonymous namespace)::ValidatorTest_FailsWithSanityChecker_Test>::CreateTest() /proc/self/cwd/external/gtest/googletest/include/gtest/internal/gtest-internal.h:472:44
#9 0x1de353c in testing::Test* testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::TestFactoryBase, testing::Test*>(testing::internal::TestFactoryBase*, testing::Test* (testing::internal::TestFactoryBase::*)(), char const*) /proc/self/cwd/external/gtest/googletest/src/gtest.cc:2607:10
#10 0x1de353c in testing::Test* testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::TestFactoryBase, testing::Test*>(testing::internal::TestFactoryBase*, testing::Test* (testing::internal::TestFactoryBase::*)(), char const*) /proc/self/cwd/external/gtest/googletest/src/gtest.cc:2643:14
#11 0x1dd068d in testing::TestInfo::Run() /proc/self/cwd/external/gtest/googletest/src/gtest.cc:2851:22
#12 0x1dd1106 in testing::TestSuite::Run() /proc/self/cwd/external/gtest/googletest/src/gtest.cc:3015:28
#13 0x1ddd5f8 in testing::internal::UnitTestImpl::RunAllTests() /proc/self/cwd/external/gtest/googletest/src/gtest.cc:5855:44
#14 0x1de458c in bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /proc/self/cwd/external/gtest/googletest/src/gtest.cc:2607:10
#15 0x1de458c in bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /proc/self/cwd/external/gtest/googletest/src/gtest.cc:2643:14
#16 0x1ddcfd2 in testing::UnitTest::Run() /proc/self/cwd/external/gtest/googletest/src/gtest.cc:5438:10
#17 0x1cf80f8 in RUN_ALL_TESTS() /proc/self/cwd/external/gtest/googletest/include/gtest/gtest.h:2490:46
#18 0x1cf80f8 in (anonymous namespace)::test_runner(void*) /proc/self/cwd/starling_test_support/src/main.cc:43:18
#19 0x1cf80f8 in (anonymous namespace)::run_tests() /proc/self/cwd/starling_test_support/src/main.cc:80:5
#20 0x1cf8065 in main /proc/self/cwd/starling_test_support/src/main.cc:95:16
#21 0x7fffff488d09 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x23d09) (BuildId: 2b86a1968781038c0766b17c1ea11a2a71d7d907)
#22 0x1541e89 in _start (/home/jenkins/.cache/bazel/_bazel_jenkins/4535647fbb1b448ea04035fc06e4558a/execroot/starling/bazel-out/k8-dbg-ubsan/bin/sensorfusion/sensorfusion_unit_test+0x1541e89) (BuildId: 84737abdebf3f7092985f88abda709e0)
```
Adds equivalents to our
swift_add*wrappers in cmake.The only one that's currently implemented is
swift_cc_test:The wrapper enforces that tests must be declared either
UNITorINTEGRATIONso that they can be run separately.In our cmake build this results in different targets:
do-all-unit-testsanddo-all-integration-tests.The bazel way to achieve this is using
tag filters:bazel test --test_tag_filters=unit //...Also note that with bazel we don't need any of the logic required in our cmake build to group the test targets together.
If you want to run all tests defined in the
WORKSPACE(project):bazel test //....If you want to run all tests in a "package" (defined by a
BUILD.bazelfile):bazel test //c/observation_adjuster:allIf you want a single test target:
bazel test //c:gnss_converters:gnss_converters_test.The new wrappers are tested here: https://github.com/swift-nav/gnss-converters-private/pull/1340