PARQUET-1255: Fix error message when PARQUET_TEST_DATA isn't defined
Author: Antoine Pitrou <antoine@python.org>
Closes #448 from pitrou/PARQUET-1255 and squashes the following commits:
b162511 [Antoine Pitrou] PARQUET-1255: Fix error message when PARQUET_TEST_DATA isn't defined
diff --git a/src/parquet/arrow/arrow-reader-writer-test.cc b/src/parquet/arrow/arrow-reader-writer-test.cc
index 46218be..79a393f 100644
--- a/src/parquet/arrow/arrow-reader-writer-test.cc
+++ b/src/parquet/arrow/arrow-reader-writer-test.cc
@@ -39,6 +39,8 @@
#include "parquet/file_writer.h"
+#include "parquet/util/test-common.h"
+
#include "arrow/api.h"
#include "arrow/test-util.h"
#include "arrow/type_traits.h"
@@ -2100,8 +2102,7 @@
TEST(TestArrowReaderAdHoc, Int96BadMemoryAccess) {
// PARQUET-995
- const char* data_dir = std::getenv("PARQUET_TEST_DATA");
- std::string dir_string(data_dir);
+ std::string dir_string(test::get_data_dir());
std::stringstream ss;
ss << dir_string << "/"
<< "alltypes_plain.parquet";
@@ -2121,7 +2122,7 @@
std::tuple<std::string, std::shared_ptr<::DataType>>> {};
TEST_P(TestArrowReaderAdHocSpark, ReadDecimals) {
- std::string path(std::getenv("PARQUET_TEST_DATA"));
+ std::string path(test::get_data_dir());
std::string filename;
std::shared_ptr<::DataType> decimal_type;
diff --git a/src/parquet/reader-test.cc b/src/parquet/reader-test.cc
index c536fdc..d628f47 100644
--- a/src/parquet/reader-test.cc
+++ b/src/parquet/reader-test.cc
@@ -30,6 +30,7 @@
#include "parquet/file_reader.h"
#include "parquet/printer.h"
#include "parquet/util/memory.h"
+#include "parquet/util/test-common.h"
using std::string;
@@ -37,10 +38,8 @@
using ReadableFile = ::arrow::io::ReadableFile;
-const char* data_dir = std::getenv("PARQUET_TEST_DATA");
-
std::string alltypes_plain() {
- std::string dir_string(data_dir);
+ std::string dir_string(test::get_data_dir());
std::stringstream ss;
ss << dir_string << "/"
<< "alltypes_plain.parquet";
@@ -48,7 +47,7 @@
}
std::string nation_dict_truncated_data_page() {
- std::string dir_string(data_dir);
+ std::string dir_string(test::get_data_dir());
std::stringstream ss;
ss << dir_string << "/"
<< "nation.dict-malformed.parquet";
@@ -171,7 +170,7 @@
class TestLocalFile : public ::testing::Test {
public:
void SetUp() {
- std::string dir_string(data_dir);
+ std::string dir_string(test::get_data_dir());
std::stringstream ss;
ss << dir_string << "/"
diff --git a/src/parquet/util/test-common.h b/src/parquet/util/test-common.h
index ebf4851..22b748e 100644
--- a/src/parquet/util/test-common.h
+++ b/src/parquet/util/test-common.h
@@ -23,6 +23,7 @@
#include <random>
#include <vector>
+#include "parquet/exception.h"
#include "parquet/types.h"
using std::vector;
@@ -35,6 +36,20 @@
DoubleType, ByteArrayType, FLBAType>
ParquetTypes;
+class ParquetTestException : public parquet::ParquetException {
+ using ParquetException::ParquetException;
+};
+
+const char* get_data_dir() {
+ const auto result = std::getenv("PARQUET_TEST_DATA");
+ if (!result || !result[0]) {
+ throw ParquetTestException(
+ "Please point the PARQUET_TEST_DATA environment "
+ "variable to the test data directory");
+ }
+ return result;
+}
+
template <typename T>
static inline void assert_vector_equal(const vector<T>& left, const vector<T>& right) {
ASSERT_EQ(left.size(), right.size());