summaryrefslogtreecommitdiffstats
path: root/src/arrow/r/tests/testthat/helper-skip.R
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/arrow/r/tests/testthat/helper-skip.R81
1 files changed, 81 insertions, 0 deletions
diff --git a/src/arrow/r/tests/testthat/helper-skip.R b/src/arrow/r/tests/testthat/helper-skip.R
new file mode 100644
index 000000000..4256ec4ab
--- /dev/null
+++ b/src/arrow/r/tests/testthat/helper-skip.R
@@ -0,0 +1,81 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+build_features <- c(
+ arrow_info()$capabilities,
+ # Special handling for "uncompressed", for tests that iterate over compressions
+ uncompressed = TRUE
+)
+
+skip_if_not_available <- function(feature) {
+ if (feature == "re2") {
+ # RE2 does not support valgrind (on purpose): https://github.com/google/re2/issues/177
+ skip_on_valgrind()
+ }
+
+ yes <- feature %in% names(build_features) && build_features[feature]
+ if (!yes) {
+ skip(paste("Arrow C++ not built with", feature))
+ }
+}
+
+skip_if_no_pyarrow <- function() {
+ skip_on_valgrind()
+ skip_on_os("windows")
+
+ skip_if_not_installed("reticulate")
+ if (!reticulate::py_module_available("pyarrow")) {
+ skip("pyarrow not available for testing")
+ }
+}
+
+skip_if_not_dev_mode <- function() {
+ skip_if_not(
+ identical(tolower(Sys.getenv("ARROW_R_DEV")), "true"),
+ "environment variable ARROW_R_DEV"
+ )
+}
+
+skip_if_not_running_large_memory_tests <- function() {
+ skip_if_not(
+ identical(tolower(Sys.getenv("ARROW_LARGE_MEMORY_TESTS")), "true"),
+ "environment variable ARROW_LARGE_MEMORY_TESTS"
+ )
+}
+
+skip_on_valgrind <- function() {
+ # This does not actually skip on valgrind because we can't exactly detect it.
+ # Instead, it skips on CRAN when the OS is linux + and the R version is development
+ # (which is where valgrind is run as of this code)
+ linux_dev <- identical(tolower(Sys.info()[["sysname"]]), "linux") &&
+ grepl("devel", R.version.string)
+
+ if (linux_dev) {
+ skip_on_cran()
+ }
+}
+
+skip_if_r_version <- function(r_version) {
+ if (getRversion() <= r_version) {
+ skip(paste("R version:", getRversion()))
+ }
+}
+
+process_is_running <- function(x) {
+ cmd <- sprintf("ps aux | grep '%s' | grep -v grep", x)
+ tryCatch(system(cmd, ignore.stdout = TRUE) == 0, error = function(e) FALSE)
+}