diff --git a/.hgignore b/.hgignore index c845b48c74bd501a2e95f5b6e1a377492620f86d..22ff51c1833cd50d9f6033765a28498516bfc05a 100644 --- a/.hgignore +++ b/.hgignore @@ -8,6 +8,7 @@ ^mx.fastr/eclipse-config-libs.zip ^mx.fastr/eclipse-config.zip ^mx.fastr/netbeans-config.zip +^com.oracle.truffle.r.test/rpackages/testrlibs_user ^build/ ^build-nograal/ ^dist/ diff --git a/com.oracle.truffle.r.test/rpackages/justr/vanilla/DESCRIPTION b/com.oracle.truffle.r.test/rpackages/justr/vanilla/DESCRIPTION new file mode 100644 index 0000000000000000000000000000000000000000..e06d3895df142bfe0e42b60763c712f849215831 --- /dev/null +++ b/com.oracle.truffle.r.test/rpackages/justr/vanilla/DESCRIPTION @@ -0,0 +1,9 @@ +Package: vanilla +Type: Package +Title: Tests the package loading implementation +Version: 1.0 +Date: 2014-08-21 +Author: FastR Tester +Maintainer: FastR Tester <fastr@yahoogroups.com> +Description: Tests the package loading implementation +License: GPL-2 diff --git a/com.oracle.truffle.r.test/rpackages/justr/vanilla/NAMESPACE b/com.oracle.truffle.r.test/rpackages/justr/vanilla/NAMESPACE new file mode 100644 index 0000000000000000000000000000000000000000..16685286e4092711ae3bacc843642d89607952a5 --- /dev/null +++ b/com.oracle.truffle.r.test/rpackages/justr/vanilla/NAMESPACE @@ -0,0 +1 @@ +export(vanilla) diff --git a/com.oracle.truffle.r.test/rpackages/justr/vanilla/R/vanilla.R b/com.oracle.truffle.r.test/rpackages/justr/vanilla/R/vanilla.R new file mode 100644 index 0000000000000000000000000000000000000000..19c05192f9379132a6c4b0108ee793de543305d3 --- /dev/null +++ b/com.oracle.truffle.r.test/rpackages/justr/vanilla/R/vanilla.R @@ -0,0 +1,2 @@ +vanilla <- +function() print("A vanilla R package") diff --git a/com.oracle.truffle.r.test/rpackages/justr/vanilla/man/vanilla-package.Rd b/com.oracle.truffle.r.test/rpackages/justr/vanilla/man/vanilla-package.Rd new file mode 100644 index 0000000000000000000000000000000000000000..6eb09347288037adc989fefb0e401917fd6690b6 --- /dev/null +++ b/com.oracle.truffle.r.test/rpackages/justr/vanilla/man/vanilla-package.Rd @@ -0,0 +1,31 @@ +\name{vanilla-package} +\alias{vanilla-package} +\alias{vanilla} +\docType{package} +\title{Tests the package loading implementation} +\description{Tests the package loading implementation} +\details{ +\tabular{ll}{ +Package: \tab vanilla\cr +Type: \tab Package\cr +Version: \tab 1.0\cr +Date: \tab 2014-08-21\cr +License: \tab GPL-2\cr +} + +} +\author{ +The FastR Team + +Maintainer: fastr@yahoogroups.com +} +\references{ +} + +\keyword{ package } +\seealso{ + +} +\examples{ + +} diff --git a/com.oracle.truffle.r.test/rpackages/justr/vanilla/man/vanilla.Rd b/com.oracle.truffle.r.test/rpackages/justr/vanilla/man/vanilla.Rd new file mode 100644 index 0000000000000000000000000000000000000000..21eb5aea52a0a02c81da888f0f2b011a8a8fa4c5 --- /dev/null +++ b/com.oracle.truffle.r.test/rpackages/justr/vanilla/man/vanilla.Rd @@ -0,0 +1,35 @@ +\name{vanilla} +\alias{vanilla} +%- Also NEED an '\alias' for EACH other topic documented here. +\title{ +vanilla +} +\description{ +prints A vaniila R package +} +\usage{ +vanilla() +} + +\details{ + +} +\value{ +invisble NULL +} +\references{ + +} +\author{ +FastR Team +} +\note{ + +} + +\seealso{ +% +} +\examples{ +vanilla() +} diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test index 8d0017b14f5a2089ff4bd44b9e3a68ee11556313..0cd4f57a88aeafd5cd677331aa4dad95a071185a 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test @@ -1,3 +1,13 @@ +##com.oracle.truffle.r.test.rffi.TestUserRNG.testUserRNG +#{ dyn.load("com.oracle.truffle.r.test.native/urand/lib/liburand.dylib"); RNGkind("user"); print(RNGkind()); set.seed(4567); runif(10) } +[1] "user-supplied" "Inversion" + [1] 0.45336386 0.38848030 0.94576608 0.11726267 0.21542351 0.08672997 + [7] 0.35201276 0.16919220 0.93579263 0.26084486 + +##com.oracle.truffle.r.test.rpackages.TestRPackages.testLoadVanilla +#{ library("vanilla", lib.loc = "com.oracle.truffle.r.test/rpackages/testrlibs_user"); vanilla() } +[1] "A vanilla R package" + ##com.oracle.truffle.r.test.simple.TestSimpleArithmetic.testArithmeticUpdate #{ x <- 3 ; f <- function(z) { if (z) { x <- 1 } ; x <- 1L + x ; x } ; f(FALSE) } [1] 4 diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/rpackages/RPackagesWhiteList.test b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/rpackages/RPackagesWhiteList.test new file mode 100644 index 0000000000000000000000000000000000000000..f81e11fa718d142940ec46c08e7f5d44b136dbc8 --- /dev/null +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/rpackages/RPackagesWhiteList.test @@ -0,0 +1 @@ +{ library("vanilla", lib.loc = "com.oracle.truffle.r.test/rpackages/testrlibs_user"); vanilla() }|Warning message:\non.exit ignored\nWarning message:\non.exit ignored\nWarning message:\non.exit ignored\nWarning message:\non.exit ignored\nWarning message:\non.exit ignored\nWarning message:\non.exit ignored\nWarning message:\non.exit ignored\nWarning message:\non.exit ignored\nWarning message:\non.exit ignored\nWarning message:\non.exit ignored\nWarning message:\non.exit ignored\nWarning message:\non.exit ignored\nWarning message:\non.exit ignored\nWarning message:\non.exit ignored\nWarning message:\non.exit ignored\nWarning message:\non.exit ignored\nWarning message:\non.exit ignored\n[1] "A vanilla R package"|[1] "A vanilla R package" diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/rpackages/TestRPackages.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/rpackages/TestRPackages.java new file mode 100644 index 0000000000000000000000000000000000000000..73cdfc22fd8dcde2280b05742b85ba1e7209ac7b --- /dev/null +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/rpackages/TestRPackages.java @@ -0,0 +1,48 @@ +package com.oracle.truffle.r.test.rpackages; + +import java.nio.file.*; +import java.util.*; + +import org.junit.*; + +import com.oracle.truffle.r.runtime.*; +import com.oracle.truffle.r.test.*; + +/** + * Tests related to the loading, etc. of R packages. + */ +public class TestRPackages extends TestBase { + private static class ThisWhiteList extends WhiteList { + + protected ThisWhiteList() { + super("RPackagesWhiteList.test"); + } + + } + + @Test + public void testLoadVanilla() { + Path cwd = Paths.get(System.getProperty("user.dir")); + Path rpackages = Paths.get(REnvVars.rHome(), "com.oracle.truffle.r.test", "rpackages"); + Path rpackagesLibs = rpackages.resolve("testrlibs_user"); + Path relLibsPath = cwd.relativize(rpackagesLibs); + if (!relLibsPath.toFile().exists()) { + relLibsPath.toFile().mkdir(); + } + Path rpackagesDists = rpackages.resolve("distributions"); + Path vanilla = rpackagesDists.resolve("vanilla_1.0.tar.gz"); + // install the package (using GnuR for now) + ProcessBuilder pb = new ProcessBuilder("R", "CMD", "install", vanilla.toString()); + Map<String, String> env = pb.environment(); + env.put("R_LIBS_USER", rpackagesLibs.toString()); + try { + Process install = pb.start(); + int rc = install.waitFor(); + assertTrue(rc == 0); + assertTemplateEval(new ThisWhiteList(), TestBase.template("{ library(\"vanilla\", lib.loc = \"%0\"); vanilla() }", new String[]{relLibsPath.toString()})); + } catch (Exception ex) { + assertFalse(); + } + } + +} diff --git a/mx.fastr/mx_fastr.py b/mx.fastr/mx_fastr.py index a25a4bf063bb7bfb1cafd281b6f663344d9e7d75..e0855a0071fadf6fd28f76a9d6c903f4890717c0 100644 --- a/mx.fastr/mx_fastr.py +++ b/mx.fastr/mx_fastr.py @@ -114,8 +114,8 @@ def _fastr_gate_body(args, tasks): if rc1 != 0: mx.abort('unit tests expected output check failed') tasks.append(t.stop()) - t = mx.GateTask('UnitTests: simple') - rc2 = junit(['--tests', _simple_unit_tests()]) + t = mx.GateTask('UnitTests: gate') + rc2 = junit(['--tests', _gate_unit_tests()]) if rc2 != 0: mx.abort('unit tests failed') tasks.append(t.stop()) @@ -246,11 +246,20 @@ def junit_default(args): def _simple_unit_tests(): return 'com.oracle.truffle.r.test.simple' -def _testgen_unit_tests(): +def _testrgen_unit_tests(): return 'com.oracle.truffle.r.test.testrgen' +def _rffi_unit_tests(): + return 'com.oracle.truffle.r.test.rffi' + +def _rpackages_unit_tests(): + return 'com.oracle.truffle.r.test.rpackages' + +def _gate_unit_tests(): + return _simple_unit_tests() + ',' + _rffi_unit_tests() + ',' + _rpackages_unit_tests() + def _all_unit_tests(): - return _simple_unit_tests() + ',' + _testgen_unit_tests() + return _gate_unit_tests() + ',' + _testrgen_unit_tests() def testgen(args): '''generate the expected output for unit tests, and All/Failing test classes'''