New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
test() won't work after check() when S4 methods are involved #60
Comments
Here's more information. The problem disappears when I use check("lubridate", document = F). Also these combinations of code work:
and these do not. They give the error above
|
Even more minimally: load_all("lubridate")
document("lubridate") which is presumably happening because we get two sets of classes defined in two different environments. |
Probably the best solution to this is to run in a separate R instance, and some how manually capture the caches and save to disk. |
Another approach library(parallel)
safe_expr <- function(expr) mccollect(mcparallel(expr))[[1]]
safe_expr(a <- 1:10)
safe_expr(library(ggplot2))
a
qplot |
Fixed in #126. |
...and vice versa
For example, after running
test produces the following error
It seems test is trying to reload the S4 methods of lubridate, but gets confused because the methods are already loaded from check(). As a result, test isn't sure how to differentiate the methods it wants to load. The same thing happens when I run check() after test().
The error comes from R's behavior: The same thing happens outside of devtools if I try redefining existing S4 methods. I can use removeMethod("[<-,Interval,ANY") to postpone the error message until R encounters the next pre-existing S4 method - but I really need to remove all at once.
Can check() and test() remove S4 methods on exit?
Garrett
The text was updated successfully, but these errors were encountered: