also generate full matrix

This commit is contained in:
Robin Appelman 2023-11-10 17:14:56 +01:00
commit d594a6929d
4 changed files with 47 additions and 6 deletions

View file

@ -15,7 +15,16 @@ Get a version matrix of server versions to test the app against
### `matrix` ### `matrix`
Test matrix with server branch and php version Test matrix covering all server versions
### `php-matrix`
Test matrix covering all php versions
### `sparse-matrix`
Test matrix covering all php and server versions with minimal redundancy
### `full-matrix`
Test matrix covering all php and server version combinations
### `versions` ### `versions`

View file

@ -11,7 +11,13 @@ inputs:
default: '{}' default: '{}'
outputs: outputs:
matrix: matrix:
description: 'Test matrix with server branch and php version' description: 'Test matrix covering all server versions'
php-matrix:
description: 'Test matrix covering all php versions'
sparse-matrix:
description: 'Test matrix covering all php and server versions with minimal redundancy'
full-matrix:
description: 'Test matrix covering all php and server version combinations'
versions: versions:
description: 'List of supported nextcloud versions' description: 'List of supported nextcloud versions'
branches: branches:

17
dist/index.js vendored
View file

@ -42656,10 +42656,20 @@ function copy(obj) {
phpMatrix.forEach(row => { phpMatrix.forEach(row => {
const php = row['php-versions']; const php = row['php-versions'];
const candidateVersion = versionData.findLast(data => data.phpMin <= php && data.phpMax >= php); const candidateVersion = versionData.findLast(data => data.phpMin <= php && data.phpMax >= php);
console.log(php, candidateVersion);
row["server-versions"] = candidateVersion.branch; row["server-versions"] = candidateVersion.branch;
}); });
// matrix with every php and server combination
const fullMatrix = cartesianProduct({
"server-versions": versionData.map(data => data.branch),
"php-versions": php,
...matrixInput
}).filter(row => {
const php = row['php-versions'];
const version = versionData.find(version => version.branch === row['server-versions']);
return version.phpMin <= php && version.phpMax >= php;
});
// matrix with at least one item for every server and php version // matrix with at least one item for every server and php version
let testMatrix = phpMatrix.concat(serverMatrix).filter(onlyUnique); let testMatrix = phpMatrix.concat(serverMatrix).filter(onlyUnique);
@ -42682,9 +42692,12 @@ function copy(obj) {
core.setOutput("matrix", JSON.stringify({ core.setOutput("matrix", JSON.stringify({
include: serverMatrix include: serverMatrix
})); }));
core.setOutput("test-matrix", JSON.stringify({ core.setOutput("sparse-matrix", JSON.stringify({
include: testMatrix include: testMatrix
})); }));
core.setOutput("full-matrix", JSON.stringify({
include: fullMatrix
}));
core.setOutput("ocp-matrix", JSON.stringify({ core.setOutput("ocp-matrix", JSON.stringify({
include: serverMatrix.map(row => { include: serverMatrix.map(row => {

View file

@ -150,10 +150,20 @@ function copy(obj) {
phpMatrix.forEach(row => { phpMatrix.forEach(row => {
const php = row['php-versions']; const php = row['php-versions'];
const candidateVersion = versionData.findLast(data => data.phpMin <= php && data.phpMax >= php); const candidateVersion = versionData.findLast(data => data.phpMin <= php && data.phpMax >= php);
console.log(php, candidateVersion);
row["server-versions"] = candidateVersion.branch; row["server-versions"] = candidateVersion.branch;
}); });
// matrix with every php and server combination
const fullMatrix = cartesianProduct({
"server-versions": versionData.map(data => data.branch),
"php-versions": php,
...matrixInput
}).filter(row => {
const php = row['php-versions'];
const version = versionData.find(version => version.branch === row['server-versions']);
return version.phpMin <= php && version.phpMax >= php;
});
// matrix with at least one item for every server and php version // matrix with at least one item for every server and php version
let testMatrix = phpMatrix.concat(serverMatrix).filter(onlyUnique); let testMatrix = phpMatrix.concat(serverMatrix).filter(onlyUnique);
@ -176,9 +186,12 @@ function copy(obj) {
core.setOutput("matrix", JSON.stringify({ core.setOutput("matrix", JSON.stringify({
include: serverMatrix include: serverMatrix
})); }));
core.setOutput("test-matrix", JSON.stringify({ core.setOutput("sparse-matrix", JSON.stringify({
include: testMatrix include: testMatrix
})); }));
core.setOutput("full-matrix", JSON.stringify({
include: fullMatrix
}));
core.setOutput("ocp-matrix", JSON.stringify({ core.setOutput("ocp-matrix", JSON.stringify({
include: serverMatrix.map(row => { include: serverMatrix.map(row => {