aboutsummaryrefslogtreecommitdiff
path: root/R
diff options
context:
space:
mode:
authorfelixcheung <felixcheung_m@hotmail.com>2016-01-19 16:33:48 -0800
committerShivaram Venkataraman <shivaram@cs.berkeley.edu>2016-01-19 16:33:48 -0800
commit37fefa66cbd61bc592aba42b0ed3aefc0cf3abb0 (patch)
tree574a1a66d2fb815ad1c3a341b2c22f5d4294608e /R
parent3e84ef0a54c53c45d7802cd2fecfa1c223580aee (diff)
downloadspark-37fefa66cbd61bc592aba42b0ed3aefc0cf3abb0.tar.gz
spark-37fefa66cbd61bc592aba42b0ed3aefc0cf3abb0.tar.bz2
spark-37fefa66cbd61bc592aba42b0ed3aefc0cf3abb0.zip
[SPARK-12168][SPARKR] Add automated tests for conflicted function in R
Currently this is reported when loading the SparkR package in R (probably would add is.nan) ``` Loading required package: methods Attaching package: ‘SparkR’ The following objects are masked from ‘package:stats’: cov, filter, lag, na.omit, predict, sd, var The following objects are masked from ‘package:base’: colnames, colnames<-, intersect, rank, rbind, sample, subset, summary, table, transform ``` Adding this test adds an automated way to track changes to masked method. Also, the second part of this test check for those functions that would not be accessible without namespace/package prefix. Incidentally, this might point to how we would fix those inaccessible functions in base or stats. Looking for feedback for adding this test. Author: felixcheung <felixcheung_m@hotmail.com> Closes #10171 from felixcheung/rmaskedtest.
Diffstat (limited to 'R')
-rw-r--r--R/pkg/NAMESPACE2
-rw-r--r--R/pkg/inst/tests/testthat/test_context.R23
2 files changed, 24 insertions, 1 deletions
diff --git a/R/pkg/NAMESPACE b/R/pkg/NAMESPACE
index 34d14373b9..27d2f9822f 100644
--- a/R/pkg/NAMESPACE
+++ b/R/pkg/NAMESPACE
@@ -271,10 +271,10 @@ export("as.DataFrame",
"createExternalTable",
"dropTempTable",
"jsonFile",
- "read.json",
"loadDF",
"parquetFile",
"read.df",
+ "read.json",
"read.parquet",
"read.text",
"sql",
diff --git a/R/pkg/inst/tests/testthat/test_context.R b/R/pkg/inst/tests/testthat/test_context.R
index 1707e314be..92dbd575c2 100644
--- a/R/pkg/inst/tests/testthat/test_context.R
+++ b/R/pkg/inst/tests/testthat/test_context.R
@@ -17,6 +17,29 @@
context("test functions in sparkR.R")
+test_that("Check masked functions", {
+ # Check that we are not masking any new function from base, stats, testthat unexpectedly
+ masked <- conflicts(detail = TRUE)$`package:SparkR`
+ expect_true("describe" %in% masked) # only when with testthat..
+ func <- lapply(masked, function(x) { capture.output(showMethods(x))[[1]] })
+ funcSparkROrEmpty <- grepl("\\(package SparkR\\)$|^$", func)
+ maskedBySparkR <- masked[funcSparkROrEmpty]
+ expect_equal(length(maskedBySparkR), 18)
+ expect_equal(sort(maskedBySparkR), sort(c("describe", "cov", "filter", "lag", "na.omit",
+ "predict", "sd", "var", "colnames", "colnames<-",
+ "intersect", "rank", "rbind", "sample", "subset",
+ "summary", "table", "transform")))
+ # above are those reported as masked when `library(SparkR)`
+ # note that many of these methods are still callable without base:: or stats:: prefix
+ # there should be a test for each of these, except followings, which are currently "broken"
+ funcHasAny <- unlist(lapply(masked, function(x) {
+ any(grepl("=\"ANY\"", capture.output(showMethods(x)[-1])))
+ }))
+ maskedCompletely <- masked[!funcHasAny]
+ expect_equal(length(maskedCompletely), 4)
+ expect_equal(sort(maskedCompletely), sort(c("cov", "filter", "sample", "table")))
+})
+
test_that("repeatedly starting and stopping SparkR", {
for (i in 1:4) {
sc <- sparkR.init()