Skip to content

Commit 59764ce

Browse files
Merge branch 'release/0.7.0'
2 parents 6641ee1 + c2973e0 commit 59764ce

17 files changed

+639
-467
lines changed

.github/workflows/R-CMD-check.yaml

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,17 @@ jobs:
2222
- {os: macOS-latest, r: 'devel' }
2323
- {os: macOS-latest, r: 'release' }
2424
- {os: macOS-latest, r: 'oldrel' }
25-
- {os: ubuntu-20.04, r: 'devel' }
26-
- {os: ubuntu-20.04, r: 'release' }
27-
- {os: ubuntu-20.04, r: 'oldrel' }
28-
- {os: ubuntu-20.04, r: 'oldrel-1' }
29-
- {os: ubuntu-20.04, r: 'oldrel-2' }
30-
- {os: ubuntu-20.04, r: '3.4' }
25+
- {os: ubuntu-latest, r: 'devel' }
26+
- {os: ubuntu-latest, r: 'release' }
27+
- {os: ubuntu-latest, r: 'oldrel' }
28+
- {os: ubuntu-latest, r: 'oldrel-1' }
29+
- {os: ubuntu-latest, r: 'oldrel-2' }
30+
- {os: ubuntu-latest, r: '3.4' }
3131
- {os: windows-latest, r: 'release' , prune_functions: true, label: 'prune' }
3232
- {os: macOS-latest, r: 'release' , prune_functions: true, label: 'prune' }
33-
- {os: ubuntu-20.04, r: 'devel' , prune_functions: true, label: 'prune' }
34-
- {os: ubuntu-20.04, r: 'release' , prune_functions: true, label: 'prune' }
35-
- {os: ubuntu-20.04, r: 'oldrel' , prune_functions: true, label: 'prune' }
33+
- {os: ubuntu-latest, r: 'devel' , prune_functions: true, label: 'prune' }
34+
- {os: ubuntu-latest, r: 'release' , prune_functions: true, label: 'prune' }
35+
- {os: ubuntu-latest, r: 'oldrel' , prune_functions: true, label: 'prune' }
3636

3737
env:
3838
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
@@ -73,9 +73,6 @@ jobs:
7373
run: |
7474
install.packages(".", repos = NULL, type = "source") ## self vignette engine
7575
if (isTRUE(as.logical("${{ matrix.config.prune_functions }}"))) remotes::install_github("HenrikBengtsson/future", ref="feature/environments")
76-
## WORKAROUND:
77-
## parallelly 1.33.0 produces a breaking warning in R (< 4.0.0)
78-
if (getRversion() < "4.0.0" && packageVersion("parallelly") == "1.33.0") remotes::install_github("HenrikBengtsson/parallelly", ref="develop")
7976
shell: Rscript {0}
8077

8178
- name: Session info

.github/workflows/covr.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ jobs:
88

99
timeout-minutes: 30
1010

11-
runs-on: ubuntu-20.04
11+
runs-on: ubuntu-latest
1212

1313
name: covr
1414

@@ -17,7 +17,7 @@ jobs:
1717

1818
env:
1919
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
20-
RSPM: https://packagemanager.rstudio.com/cran/__linux__/focal/latest
20+
RSPM: https://packagemanager.rstudio.com/cran/__linux__/jammy/latest
2121
R_REMOTES_NO_ERRORS_FROM_WARNINGS: true
2222
## R CMD check
2323
_R_CHECK_LENGTH_1_CONDITION_: true

DESCRIPTION

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
Package: future.tests
22
Title: Test Suite for 'Future API' Backends
3-
Version: 0.6.0
3+
Version: 0.7.0
44
Authors@R: c(
55
person("Henrik", "Bengtsson", role = c("aut", "cre", "cph"), email = "[email protected]"),
66
person(family = "The R Consortium", comment = "Project was awared an Infrastructure Steering Committee (ISC) grant in 2017", role = "fnd"))
7-
Description: Backends implementing the 'Future' API, as defined by the 'future' package, should use the tests provided by this package to validate that they meet the minimal requirements of the 'Future' API. The tests can be performed easily from within R or from outside of R from the command line making it easy to include them package tests and in Continuous Integration (CI) pipelines.
7+
Description: Backends implementing the 'Future' API, as defined by the 'future' package, should use the tests provided by this package to validate that they meet the minimal requirements of the 'Future' API. The tests can be performed easily from within R or from outside of R from the command line making it straightforward to include them in package tests and in Continuous Integration (CI) pipelines.
88
Imports:
99
future (>= 1.22.1),
1010
cli,

Makefile.backend-tests

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ backend_results/%.out:
1414
test_plan=$*; \
1515
$(UNBUFFER) $(R_SCRIPT) -e "future.tests::check" --args --test-plan=$${test_plan/,/::} | tee backend_results/$*.out
1616

17-
backend_results/all: backend_results/future,sequential.out backend_results/future,multicore.out backend_results/future,multisession.out backend_results/future,cluster.out backend_results/future.callr,callr.out backend_results/future.batchtools,batchtools_local.out
17+
backend_results/all: backend_results/future,sequential.out backend_results/future,multicore.out backend_results/future,multisession.out backend_results/future,cluster.out backend_results/future.callr,callr.out backend_results/future.batchtools,batchtools_local.out backend_results/future.mirai,mirai_multisession.out
1818

1919
backend_results/summary:
2020
cd backend_results; \

NEWS.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,34 @@
1+
# Version 0.7.0 [2023-05-20]
2+
3+
## Bug Fixes
4+
5+
* Tests asserting correctness of `nbrOfWorkers()` could produce an
6+
"invalid format '%d'; use format %f, %e, %g or %a for numeric
7+
objects" error when trying to produce an assertion error on
8+
`nbrOfWorkers()` having an incorrect value. This could happen if
9+
`nbrOfWorkers()` returned a non-integer value, e.g. `+Inf`.
10+
11+
* Test asserting that the `workers` argument can be a function would
12+
not always work if testing with a hardcoded number of workers
13+
according to `plan()`.
14+
15+
* Test asserting that the `workers` argument can be a function would
16+
not work if the backend's default value was non-numeric, e.g. the
17+
`cluster` backend defaults to the character vector
18+
`parallelly::availableWorkers()`.
19+
20+
* Test asserting that lazy futures would be automatically launched
21+
and resolved relied on a legacy version of the Future API, where
22+
calling `resolved()` on a lazy future could leave it in a lazy
23+
state, which is no longer correct. A lazy future will always be
24+
launched if one calls `resolved()` on it.
25+
26+
* Test asserting that the **ff** package worked across multiple
27+
futures assumed that the package is loaded automatically by the
28+
future, which it is not. The could cause the test to fail for
29+
some future backends.
30+
31+
132
# Version 0.6.0 [2023-03-11]
233

334
## New Features

backend_results/future,cluster.out

Lines changed: 62 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,70 @@
11
── Settings ────────────────────────────────────────────────────────────────────
2-
- future.tests version : 0.4.0.9002
2+
- future.tests version : 0.6.0.9007
33
- R_FUTURE_TESTS_ROOT :
44
- Option 'future.tests.root': NULL
5-
- Default test set folder : /home/hb/R/x86_64-pc-linux-gnu-library/4.2-CBI-gcc9/future.tests/test-db
5+
- Default test set folder : /home/henrik/R/x86_64-pc-linux-gnu-library/4.3-CBI-gcc11/future.tests/test-db
66
- Max number of workers : 2
77
- Timeout : N/A
88

9-
── Running 51 test sets with plan(future::cluster) ─────────────────────────────
10-
ℹ Backend package: future 1.29.0.9002
11-
✔ future() - conditions (1 test) (205ms)
12-
✔ %<-% - conditions (1 test) (779ms)
13-
✔ future() - muffle conditions (1 test) (950ms)
14-
✔ Argument '...' (1 test) (1.3s)
15-
✔ Argument '...' from parent function (1 test) (1s)
16-
✔ Argument '...' - non existing (1 test) (1.1s)
17-
✔ Argument '...' - exception (1 test) (994ms)
18-
✔ Early signaling of errors (4 tests) (4.6s)
19-
✔ Early signaling of warnings (4 tests) (4.2s)
20-
✔ Early signaling of messages (4 tests) (3.6s)
21-
✔ %<-% - local evaluation (2 tests) (2.1s)
22-
✔ %<-% - local evaluation & global variable (2 tests) (2s)
23-
✔ %<-% - errors (2 tests) (1.5s)
24-
✔ %<-% - errors and listenv (2 tests) (1.9s)
25-
✔ %<-% & %->% (2 tests) (2s)
26-
✔ %<-% - nested (1 test) (1.3s)
27-
✔ futureAssign() - lazy evaluation (2 tests) (2.2s)
28-
✔ futureAssign() - potential task name clashes (1 test) (894ms)
29-
✔ futureAssign() - global variables with and without lazy evaluation (2 tests) (1.7s)
30-
✔ futureAssign() - lazy evaluation via disposable option (2 tests) (1.4s)
31-
✔ futureCall() (4 tests) (9s)
32-
✔ futureCall() - globals = list(a = 3) (2 tests) (4.6s)
33-
✔ futureCall() - globals = "a" (2 tests) (4.6s)
34-
✔ future() - rm() a global variable (2 tests) (1.6s)
35-
✔ future() - non-exported package objects (1 test) (760ms)
36-
✔ future() - NSE '...' (1 test) (823ms)
37-
✔ resolved() on lazy futures (1 test) (1s)
38-
✔ demo("mandelbrot", package = "future") (2 tests) (2.8s)
39-
✔ nbrOfWorkers() (1 test) (6ms)
40-
✔ future() - preserve R options (1 test) (1.4s)
41-
✔ future() - preserve R options (1 test) (1.1s)
42-
✔ plan() (1 test) (3ms)
43-
✔ plan() - workers=<numeric> (1 test) (1.5s)
44-
✔ plan() - workers=<function> (1 test) (4.1s)
45-
✔ plan() - workers=<invalid> (1 test) (5ms)
46-
✔ resolve() (8 tests) (11.7s)
47-
✔ resolve() - run-time exception (8 tests) (6.4s)
48-
✔ resolve(<list of futures and values>) (2 tests) (1.7s)
49-
✔ resolve(<list of futures>) (2 tests) (2.1s)
50-
✔ resolve(<named matrix list of futures and values>) - time ordering (1 test) (1.4s)
51-
✔ resolved() - assert non-blocking while launching lazy futures (1 test) (4.9s)
52-
✔ Random Number Generation (RNG) - seeds and preserving RNGkind (1 test) (1.1s)
53-
✔ Random Number Generation (RNG) - future (2 tests) (2.7s)
54-
✔ Random Number Generation (RNG) - %<-% (2 tests) (2.2s)
55-
✔ Orchestration Stability - future() does not update RNG state (1 test) (1.2s)
56-
✔ Orchestration Stability - run() does not update RNG state (1 test) (933ms)
57-
✔ Orchestration Stability - result() does not update RNG state (1 test) (792ms)
58-
✔ Orchestration Stability - value() does not update RNG state (1 test) (850ms)
59-
✔ future() - standard output (2 tests) (1.5s)
60-
✔ %<-% - standard output (2 tests) (1.5s)
61-
✔ value() - visibility (1 test) (799ms)
9+
── Running 54 test sets with plan(future::cluster) ─────────────────────────────
10+
ℹ Backend package: future 1.32.0
11+
✔ 1. future() - conditions (1 test) (101ms)
12+
✔ 2. %<-% - conditions (1 test) (287ms)
13+
✔ 3. future() - muffle conditions (1 test) (229ms)
14+
✔ 4. Argument '...' (1 test) (224ms)
15+
✔ 5. Argument '...' from parent function (1 test) (265ms)
16+
✔ 6. Argument '...' - non existing (1 test) (263ms)
17+
✔ 7. Argument '...' - exception (1 test) (267ms)
18+
✔ 8. Early signaling of errors (4 tests) (943ms)
19+
✔ 9. Early signaling of warnings (4 tests) (1s)
20+
✔ 10. Early signaling of messages (4 tests) (1s)
21+
✔ 11. %<-% - local evaluation (2 tests) (494ms)
22+
✔ 12. %<-% - local evaluation & global variable (2 tests) (535ms)
23+
✔ 13. %<-% - errors (2 tests) (423ms)
24+
✔ 14. %<-% - errors and listenv (2 tests) (673ms)
25+
✔ 15. %<-% & %->% (2 tests) (553ms)
26+
✔ 16. %<-% - nested (1 test) (286ms)
27+
✔ 17. futureAssign() - lazy evaluation (2 tests) (528ms)
28+
✔ 18. futureAssign() - potential task name clashes (1 test) (325ms)
29+
✔ 19. futureAssign() - global variables with and without lazy evaluation (2 tests) (655ms)
30+
✔ 20. futureAssign() - lazy evaluation via disposable option (2 tests) (526ms)
31+
✔ 21. futureCall() (4 tests) (3.1s)
32+
✔ 22. futureCall() - globals = list(a = 3) (2 tests) (1.6s)
33+
✔ 23. futureCall() - globals = "a" (2 tests) (1.6s)
34+
✔ 24. future() - rm() a global variable (2 tests) (531ms)
35+
✔ 25. future() - non-exported package objects (1 test) (387ms)
36+
✔ 26. future() - NSE '...' (1 test) (345ms)
37+
✔ 27. resolved() on lazy futures (1 test) (306ms)
38+
✔ 28. demo("mandelbrot", package = "future") (2 tests) (1.6s)
39+
✔ 29. nbrOfWorkers() (1 test) (4ms)
40+
✔ 30. future() - preserve R options (data.table) (1 test) (927ms)
41+
✔ 31. future() - 'data.table' inject (1 test) (548ms)
42+
✔ 32. future() - can load 'ff' package (1 test) (290ms)
43+
✔ 33. future() - can attach 'ff' package (1 test) (255ms)
44+
✔ 34. future() - preserve R options (ff) (1 test) (746ms)
45+
✔ 35. plan() (1 test) (1ms)
46+
✔ 36. plan() - workers=<numeric> (1 test) (396ms)
47+
✔ 37. plan() - workers=<function> (1 test) (1.5s)
48+
✔ 38. plan() - workers=<invalid> (1 test) (2ms)
49+
✔ 39. resolve() (8 tests) (6s)
50+
✔ 40. resolve() - run-time exception (8 tests) (2.1s)
51+
✔ 41. resolve(<list of futures and values>) (2 tests) (534ms)
52+
✔ 42. resolve(<list of futures>) (2 tests) (527ms)
53+
✔ 43. resolve(<named matrix list of futures and values>) - time ordering (1 test) (772ms)
54+
✔ 44. resolved() - assert non-blocking while launching lazy futures (1 test) (4.4s)
55+
✔ 45. Random Number Generation (RNG) - seeds and preserving RNGkind (1 test) (197ms)
56+
✔ 46. Random Number Generation (RNG) - future (2 tests) (894ms)
57+
✔ 47. Random Number Generation (RNG) - %<-% (2 tests) (957ms)
58+
✔ 48. Orchestration Stability - future() does not update RNG state (1 test) (307ms)
59+
✔ 49. Orchestration Stability - run() does not update RNG state (1 test) (288ms)
60+
✔ 50. Orchestration Stability - result() does not update RNG state (1 test) (255ms)
61+
✔ 51. Orchestration Stability - value() does not update RNG state (1 test) (252ms)
62+
✔ 52. future() - standard output (2 tests) (548ms)
63+
✔ 53. %<-% - standard output (2 tests) (484ms)
64+
✔ 54. value() - visibility (1 test) (273ms)
6265

63-
Number of tests: 95
64-
65-
Duration: 1m 53.8s
66-
67-
Results: 0 errors ✔ | 0 timeouts ✔
66+
Number of tests: 54
67+
Number of test steps: 98
68+
Duration: 43.4s
69+
Results: 98 ok ✔ | 0 skips ★ | 0 errors ✖ | 0 timeouts T
6870

0 commit comments

Comments
 (0)