22name : Test Suites
33
44on :
5- push :
6- branches : [ main, master, devel ]
7- pull_request :
8- branches : [ main, master, devel ]
5+ workflow_dispatch :
6+ inputs :
7+ run_cache_only :
8+ description : ' Run and cache dependency installations only'
9+ required : true
10+ default : ' no'
11+
12+ env :
13+ RSPM : https://packagemanager.posit.co/cran/latest # Enables Linux binaries from Posit
14+ R_KEEP_PKG_SOURCE : yes # Keeps sources for debugging if needed
15+
916
1017jobs :
11- # Job 1: nCompile and specific operator tests
12- test-nCompile :
18+ install-cache :
1319 runs-on : ubuntu-latest
14- name : nCompile and specific operator tests
15-
20+ if : github.event.inputs.run_cache_only == 'yes' || github.event.inputs.run_cache_only == 'no'
1621 steps :
1722 - uses : actions/checkout@v4
23+
1824 - uses : r-lib/actions/setup-r@v2
1925 with :
26+ r-version : ' release'
2027 use-public-rspm : true
21- - uses : r-lib/actions/setup-r-dependencies@v2
28+
29+ - name : Cache R packages
30+ uses : actions/cache@v3
31+ with :
32+ path : ${{ env.R_LIBS_USER }}
33+ key : ${{ runner.os }}-r-${{ hashFiles('nCompiler/DESCRIPTION', 'ci-extra-packages.txt') }}
34+ restore-keys : ${{ runner.os }}-r-
2235
2336 - name : Install system dependencies
2437 run : |
2841 libcurl4-openssl-dev \
2942 libssl-dev
3043
44+ - name : Install R dependencies
45+ run : |
46+ Rscript -e 'install.packages("remotes")'
47+ Rscript -e 'remotes::install_deps("nCompiler", dependencies = TRUE)'
48+
49+ - name : Install extra packages
50+ run : |
51+ Rscript -e '
52+ pkgs <- readLines("ci-extra-packages.txt")
53+ new_pkgs <- pkgs[!pkgs %in% installed.packages()[,"Package"]]
54+ if(length(new_pkgs)) install.packages(new_pkgs)
55+ '
56+
57+ - name : Install package
58+ run : R CMD INSTALL nCompiler
59+
60+ # Job 1: nCompile and specific operator tests
61+ test-nCompile :
62+ runs-on : ubuntu-latest
63+ needs : install_cache
64+ if : github.event.inputs.run_cache_only == 'no'
65+ name : nCompile and specific operator tests
66+
67+ steps :
68+ - uses : actions/checkout@v4
69+ - uses : r-lib/actions/setup-r@v2
70+ with :
71+ r-version : ' release'
72+ use-public-rspm : true
73+
74+ - name : Restore cache
75+ uses : actions/cache@v3
76+ with :
77+ path : ${{ env.R_LIBS_USER }}
78+ key : ${{ runner.os }}-r-${{ hashFiles('nCompiler/DESCRIPTION', 'ci-extra-packages.txt') }}
79+ restore-keys : ${{ runner.os }}-r-
80+
3181 - name : Run nCompile and other tests
3282 run : |
3383 testthat::test_dir("tests/testthat/uncompiled_tests", reporter = "progress")
@@ -39,49 +89,23 @@ jobs:
3989 # Job 2: nClass, types and serialization tests
4090 test-nClass :
4191 runs-on : ubuntu-latest
92+ needs : install_cache
93+ if : github.event.inputs.run_cache_only == 'no'
4294 name : nClass, types and serialization tests
4395
44- env :
45- RSPM : https://packagemanager.posit.co/cran/latest # Enables Linux binaries from Posit
46- R_KEEP_PKG_SOURCE : yes # Keeps sources for debugging if needed
47-
4896 steps :
4997 - uses : actions/checkout@v4
5098 - uses : r-lib/actions/setup-r@v2
5199 with :
52100 r-version : ' release'
53101 use-public-rspm : true
54102
55- - name : Cache R packages
103+ - name : Restore cache
56104 uses : actions/cache@v3
57105 with :
58106 path : ${{ env.R_LIBS_USER }}
59107 key : ${{ runner.os }}-r-${{ hashFiles('nCompiler/DESCRIPTION', 'ci-extra-packages.txt') }}
60108 restore-keys : ${{ runner.os }}-r-
61-
62- - name : Install system dependencies
63- run : |
64- sudo apt-get update
65- sudo apt-get install -y \
66- build-essential \
67- libcurl4-openssl-dev \
68- libssl-dev
69-
70- - name : Install R dependencies
71- run : |
72- Rscript -e 'install.packages("remotes")'
73- Rscript -e 'remotes::install_deps("nCompiler", dependencies = TRUE)'
74-
75- - name : Install extra packages
76- run : |
77- Rscript -e '
78- pkgs <- readLines("ci-extra-packages.txt")
79- new_pkgs <- pkgs[!pkgs %in% installed.packages()[,"Package"]]
80- if(length(new_pkgs)) install.packages(new_pkgs)
81- '
82-
83- - name : Install package
84- run : R CMD INSTALL nCompiler
85109
86110 - name : Run nClass, types and serialization tests
87111 run : |
@@ -93,22 +117,23 @@ jobs:
93117 # Job 3: Math tests
94118 test-math :
95119 runs-on : ubuntu-latest
120+ needs : install_cache
121+ if : github.event.inputs.run_cache_only == 'no'
96122 name : Math Tests
97123
98124 steps :
99125 - uses : actions/checkout@v4
100126 - uses : r-lib/actions/setup-r@v2
101127 with :
128+ r-version : ' release'
102129 use-public-rspm : true
103- - uses : r-lib/actions/setup-r-dependencies@v2
104130
105- - name : Install system dependencies
106- run : |
107- sudo apt-get update
108- sudo apt-get install -y \
109- build-essential \
110- libcurl4-openssl-dev \
111- libssl-dev
131+ - name : Restore cache
132+ uses : actions/cache@v3
133+ with :
134+ path : ${{ env.R_LIBS_USER }}
135+ key : ${{ runner.os }}-r-${{ hashFiles('nCompiler/DESCRIPTION', 'ci-extra-packages.txt') }}
136+ restore-keys : ${{ runner.os }}-r-
112137
113138 - name : Run Math tests
114139 run : |
@@ -118,22 +143,23 @@ jobs:
118143 # Job 4: tensorOps
119144 test-tensorOps :
120145 runs-on : ubuntu-latest
146+ needs : install_cache
147+ if : github.event.inputs.run_cache_only == 'no'
121148 name : TensorOps Tests
122149
123150 steps :
124151 - uses : actions/checkout@v4
125152 - uses : r-lib/actions/setup-r@v2
126153 with :
154+ r-version : ' release'
127155 use-public-rspm : true
128- - uses : r-lib/actions/setup-r-dependencies@v2
129156
130- - name : Install system dependencies
131- run : |
132- sudo apt-get update
133- sudo apt-get install -y \
134- build-essential \
135- libcurl4-openssl-dev \
136- libssl-dev
157+ - name : Restore cache
158+ uses : actions/cache@v3
159+ with :
160+ path : ${{ env.R_LIBS_USER }}
161+ key : ${{ runner.os }}-r-${{ hashFiles('nCompiler/DESCRIPTION', 'ci-extra-packages.txt') }}
162+ restore-keys : ${{ runner.os }}-r-
137163
138164 - name : Run TensorOps tests
139165 run : |
0 commit comments