Consolidate path handling for test data files. Added CERES_TEST_SRCDIR_POSTFIX macro. Added TestFileAbsolutePath function. Change-Id: I223b74af027bfb775447e062edab897395b21514
diff --git a/internal/ceres/schur_eliminator_test.cc b/internal/ceres/schur_eliminator_test.cc index 7fedb96..c14901f 100644 --- a/internal/ceres/schur_eliminator_test.cc +++ b/internal/ceres/schur_eliminator_test.cc
@@ -35,21 +35,18 @@ #include "ceres/block_sparse_matrix.h" #include "ceres/casts.h" #include "ceres/detect_structure.h" -#include "ceres/file.h" #include "ceres/internal/eigen.h" #include "ceres/internal/scoped_ptr.h" #include "ceres/linear_least_squares_problems.h" +#include "ceres/test_util.h" #include "ceres/triplet_sparse_matrix.h" #include "ceres/types.h" -#include "gflags/gflags.h" #include "glog/logging.h" #include "gtest/gtest.h" // TODO(sameeragarwal): Reduce the size of these tests and redo the // parameterization to be more efficient. -DECLARE_string(test_srcdir); - namespace ceres { namespace internal { @@ -219,9 +216,7 @@ #ifndef CERES_DONT_HAVE_PROTOCOL_BUFFERS TEST_F(SchurEliminatorTest, BlockProblem) { - const string input_file = - JoinPath(FLAGS_test_srcdir, - "problem-6-1384-000.lsqp"); // NOLINT + const string input_file = TestFileAbsolutePath("problem-6-1384-000.lsqp"); SetUpFromFilename(input_file); ComputeReferenceSolution(VectorRef(D.get(), A->num_cols()));
diff --git a/internal/ceres/system_test.cc b/internal/ceres/system_test.cc index b771268..7cdff21 100644 --- a/internal/ceres/system_test.cc +++ b/internal/ceres/system_test.cc
@@ -44,7 +44,6 @@ #include <string> #include "ceres/autodiff_cost_function.h" -#include "ceres/file.h" #include "ceres/problem.h" #include "ceres/rotation.h" #include "ceres/solver.h" @@ -55,8 +54,6 @@ #include "glog/logging.h" #include "gtest/gtest.h" -DECLARE_string(test_srcdir); - namespace ceres { namespace internal { @@ -311,8 +308,7 @@ class BundleAdjustmentProblem { public: BundleAdjustmentProblem() { - const string input_file = JoinPath(FLAGS_test_srcdir, - "problem-16-22106-pre.txt"); + const string input_file = TestFileAbsolutePath("problem-16-22106-pre.txt"); ReadData(input_file); BuildProblem(); }
diff --git a/internal/ceres/test_util.cc b/internal/ceres/test_util.cc index e98052d..8a1def7 100644 --- a/internal/ceres/test_util.cc +++ b/internal/ceres/test_util.cc
@@ -31,10 +31,20 @@ // Utility functions useful for testing. #include <cmath> +#include "ceres/file.h" #include "ceres/stringprintf.h" #include "glog/logging.h" #include "gtest/gtest.h" +DECLARE_string(test_srcdir); + +// This macro is used to inject additional path information specific +// to the build system. + +#ifndef CERES_TEST_SRCDIR_SUFFIX +#define CERES_TEST_SRCDIR_SUFFIX "" +#endif + namespace ceres { namespace internal { @@ -106,5 +116,11 @@ } } +string TestFileAbsolutePath(const string& filename) { + return JoinPath(FLAGS_test_srcdir + CERES_TEST_SRCDIR_SUFFIX, + filename); +} + + } // namespace internal } // namespace ceres
diff --git a/internal/ceres/test_util.h b/internal/ceres/test_util.h index 93dc343..4c530de 100644 --- a/internal/ceres/test_util.h +++ b/internal/ceres/test_util.h
@@ -28,6 +28,9 @@ // // Author: keir@google.com (Keir Mierle) +#include <string> +#include "ceres/internal/port.h" + #ifndef CERES_INTERNAL_TEST_UTIL_H_ #define CERES_INTERNAL_TEST_UTIL_H_ @@ -58,6 +61,10 @@ const double* q, double tolerance); +// Construct a fully qualified path for the test file depending on the +// local build/testing environment. +string TestFileAbsolutePath(const string& filename); + } // namespace internal } // namespace ceres
diff --git a/internal/ceres/visibility_based_preconditioner_test.cc b/internal/ceres/visibility_based_preconditioner_test.cc index 5c4a6e8..bf01acb 100644 --- a/internal/ceres/visibility_based_preconditioner_test.cc +++ b/internal/ceres/visibility_based_preconditioner_test.cc
@@ -45,11 +45,10 @@ #include "ceres/schur_eliminator.h" #include "ceres/stringprintf.h" #include "ceres/types.h" +#include "ceres/test_util.h" #include "glog/logging.h" #include "gtest/gtest.h" -DECLARE_string(test_srcdir); - namespace ceres { namespace internal { @@ -65,9 +64,7 @@ protected: void SetUp() { - string input_file = - JoinPath(FLAGS_test_srcdir, - "problem-6-1384-000.lsqp"); // NOLINT + string input_file = TestFileAbsolutePath("problem-6-1384-000.lsqp"); scoped_ptr<LinearLeastSquaresProblem> problem( CHECK_NOTNULL(CreateLinearLeastSquaresProblemFromFile(input_file)));