On 02/12/2017 2:19 PM, Bill Denney wrote:
On Dec 2, 2017, at 09:43, Duncan Murdoch <murdoch.dun...@gmail.com> wrote:
I don't think there's anything better than Bill's solution, though I imagine it is
possible to ask for translation of the message. For example, sqrt(-1) currently gives a
warning with English message "NaNs produced".
Another idea just occurred to me. Get the current error text as I'm expecting
it from R by generating the error in a tryCatch and then test for equality to
that string. With that, changes in R (or other packages) would be
automatically updated, and it would still be a precise test for the error I'm
wanting to confirm in my test:
tryCatch(as.data.frame(structure(1, class="foo")), error=function(e) e$message)
Capture the output of that tryCatch and test for equality.
Then, it will be robust to language changes and to changes in R or other
packages.
I'm going to implement that unless someone indicates something that I'm missing.
That sounds like a really good idea. It should work in your use case,
though in cases where the error message includes information about the
arguments that led to the error (e.g. vignette("foobar") says "vignette
‘foobar’ not found" in English and "vignette ‘foobar’ introuvable" in
French) it might be harder.
Duncan Murdoch
Thanks,
Bill
I can ask to translate that into the current session language using
gettext("NaNs produced", domain = "R")
Figuring out the right thing for "domain" is likely a little painful: it
depends on which package produced the message, and how.
I don't know if CRAN tests would complain if you tested for equality between a
warning message and the result of gettext(): it's still true that if the
English warning changed, the test would fail.
Duncan Murdoch
______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel