1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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)
}
|