1context("Dependencies")
2
3test_that("Warned about dependency versions", {
4  # Should give a warning about grid version
5  expect_warning(load_all("testImportVersion"), "Need grid >=")
6  unload("testImportVersion")
7
8  # TODO: Add check for NOT giving a warning about compiler version
9  # Not possible with testthat?
10})
11
12
13test_that("Error on missing dependencies", {
14  # Should give a warning about missing package
15  expect_error(regexp =  "Dependency package[(]s[)] 'missingpackage' not available",
16    expect_warning(regexp = "missingpackage not available",
17      load_all("testImportMissing")))
18
19  # Loading process will be partially done; unload it
20  unload("testImportMissing")
21})
22
23test_that("Packages in depends are required", {
24  load_all("testDependMissing")
25  expect_true("package:bitops" %in% search())
26  unload("testDependMissing")
27  detach("package:bitops", unload = TRUE)
28})
29
30test_that("Parse dependencies", {
31  deps <- parse_deps("\nhttr (< 2.1),\nRCurl (>= 3),\nutils (== 2.12.1),\ntools,\nR (>= 2.10),\nmemoise")
32  expect_equal(nrow(deps), 5)
33  expect_false("R" %in% deps$name)
34
35  expect_equal(deps$compare, c("<", ">=", "==", NA, NA))
36  expect_equal(deps$version, c("2.1", "3", "2.12.1", NA, NA))
37
38
39  # Invalid version specifications
40  expect_error(parse_deps("\nhttr (< 2.1),\nRCurl (3.0)"))
41  expect_error(parse_deps("\nhttr (< 2.1),\nRCurl ( 3.0)"))
42  expect_error(parse_deps("\nhttr (< 2.1),\nRCurl (==3.0)"))
43  expect_error(parse_deps("\nhttr (< 2.1),\nRCurl (==3.0 )"))
44  expect_error(parse_deps("\nhttr (< 2.1),\nRCurl ( ==3.0)"))
45
46  # This should be OK (no error)
47  deps <- parse_deps("\nhttr (< 2.1),\nRCurl (==  3.0.1)")
48  expect_equal(deps$compare, c("<", "=="))
49  expect_equal(deps$version, c("2.1", "3.0.1"))
50})
51
52test_that("Declared dependencies are added to .Depends object", {
53  load_all("testDependsExists")
54  expect_equal(get(".Depends", "package:testDependsExists", inherits = FALSE),
55                "httr")
56  unload("testDependsExists")
57})
58