diff --git a/.github/acceptance/expected-failures-10.16.6-full.md b/.github/acceptance/expected-failures-10.16.6-full.md new file mode 100644 index 0000000..f13d246 --- /dev/null +++ b/.github/acceptance/expected-failures-10.16.6-full.md @@ -0,0 +1,52 @@ +# Scenarios of ownCloud core 10.16.6's acceptance tests that are expected to fail against this +# image (full run). run.sh fails the job on any other failure, and on a listed +# scenario that passes. One entry per line, as in core's own lists: +# - [apiSuite/file.feature:12](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiSuite/file.feature#L12) + +## CLI + +# Found in this repository's CI. cliExternalStorage needs a second ownCloud server +# to mount over WebDAV; the others depend on how the image is set up. +- [cliDbConversion/dbConversion.feature:30](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliDbConversion/dbConversion.feature#L30) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:107](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L107) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:128](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L128) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:150](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L150) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:212](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L212) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:232](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L232) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:273](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L273) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:382](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L382) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:67](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L67) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:86](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L86) +- [cliMain/configKey.feature:81](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliMain/configKey.feature#L81) +- [cliManageApps/appsPath.feature:18](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliManageApps/appsPath.feature#L18) +- [cliManageApps/appsPath.feature:36](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliManageApps/appsPath.feature#L36) +- [cliManageApps/appsPath.feature:47](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliManageApps/appsPath.feature#L47) +- [cliProvisioning/resetUserPassword.feature:19](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliProvisioning/resetUserPassword.feature#L19) +- [cliProvisioning/resetUserPasswordOc10Issue36985.feature:8](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliProvisioning/resetUserPasswordOc10Issue36985.feature#L8) + +## API + +# From local full runs: these failed in the suite and fail again on their own against +# the published image. Check them against the first full run in CI. +- [apiMain/appManagement.feature:16](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiMain/appManagement.feature#L16) +- [apiMain/appManagement.feature:28](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiMain/appManagement.feature#L28) +- [apiMain/appManagement.feature:40](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiMain/appManagement.feature#L40) +- [apiMain/appManagement.feature:52](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiMain/appManagement.feature#L52) +- [apiMain/external-storage.feature:65](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiMain/external-storage.feature#L65) +- [apiShareManagementBasicToRoot/createShareFromLocalStorageToRootFolder.feature:109](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToRoot/createShareFromLocalStorageToRootFolder.feature#L109) +- [apiShareManagementBasicToRoot/createShareFromLocalStorageToRootFolder.feature:57](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToRoot/createShareFromLocalStorageToRootFolder.feature#L57) +- [apiShareManagementBasicToRoot/createShareFromLocalStorageToRootFolder.feature:83](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToRoot/createShareFromLocalStorageToRootFolder.feature#L83) +- [apiShareManagementBasicToShares/createShareFromLocalStorageToSharesFolder.feature:113](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareFromLocalStorageToSharesFolder.feature#L113) +- [apiShareManagementBasicToShares/createShareFromLocalStorageToSharesFolder.feature:114](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareFromLocalStorageToSharesFolder.feature#L114) +- [apiShareManagementBasicToShares/createShareFromLocalStorageToSharesFolder.feature:62](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareFromLocalStorageToSharesFolder.feature#L62) +- [apiShareManagementBasicToShares/createShareFromLocalStorageToSharesFolder.feature:87](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareFromLocalStorageToSharesFolder.feature#L87) +- [apiShareManagementBasicToShares/createShareFromLocalStorageToSharesFolder.feature:88](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareFromLocalStorageToSharesFolder.feature#L88) +- [apiShareManagementToRoot/moveReceivedShareFromLocalStorage.feature:40](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToRoot/moveReceivedShareFromLocalStorage.feature#L40) +- [apiShareManagementToRoot/moveReceivedShareFromLocalStorage.feature:63](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToRoot/moveReceivedShareFromLocalStorage.feature#L63) +- [apiShareManagementToRoot/moveReceivedShareFromLocalStorage.feature:64](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToRoot/moveReceivedShareFromLocalStorage.feature#L64) +- [apiShareManagementToShares/moveReceivedShareFromLocalStorage.feature:44](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/moveReceivedShareFromLocalStorage.feature#L44) +- [apiShareManagementToShares/moveReceivedShareFromLocalStorage.feature:68](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/moveReceivedShareFromLocalStorage.feature#L68) +- [apiShareManagementToShares/moveReceivedShareFromLocalStorage.feature:89](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/moveReceivedShareFromLocalStorage.feature#L89) +- [apiTrashbinRestore/trashbinRestore.feature:171](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiTrashbinRestore/trashbinRestore.feature#L171) +- [apiWebdavMove1/moveFileAsync.feature:266](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiWebdavMove1/moveFileAsync.feature#L266) +- [apiWebdavPreviews/previews.feature:281](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiWebdavPreviews/previews.feature#L281) diff --git a/.github/acceptance/expected-failures-10.16.6-smoke.md b/.github/acceptance/expected-failures-10.16.6-smoke.md new file mode 100644 index 0000000..b9d193b --- /dev/null +++ b/.github/acceptance/expected-failures-10.16.6-smoke.md @@ -0,0 +1,25 @@ +# Scenarios of ownCloud core 10.16.6's acceptance tests that are expected to fail against this +# image (smoke run). run.sh fails the job on any other failure, and on a listed +# scenario that passes. One entry per line, as in core's own lists: +# - [apiSuite/file.feature:12](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiSuite/file.feature#L12) + +## CLI + +# Found in this repository's CI. cliExternalStorage needs a second ownCloud server +# to mount over WebDAV; the others depend on how the image is set up. +- [cliDbConversion/dbConversion.feature:30](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliDbConversion/dbConversion.feature#L30) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:107](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L107) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:128](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L128) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:150](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L150) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:212](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L212) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:232](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L232) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:273](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L273) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:382](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L382) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:67](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L67) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:86](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L86) +- [cliMain/configKey.feature:81](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliMain/configKey.feature#L81) +- [cliManageApps/appsPath.feature:18](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliManageApps/appsPath.feature#L18) +- [cliManageApps/appsPath.feature:36](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliManageApps/appsPath.feature#L36) +- [cliManageApps/appsPath.feature:47](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliManageApps/appsPath.feature#L47) +- [cliProvisioning/resetUserPassword.feature:19](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliProvisioning/resetUserPassword.feature#L19) +- [cliProvisioning/resetUserPasswordOc10Issue36985.feature:8](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliProvisioning/resetUserPasswordOc10Issue36985.feature#L8) diff --git a/.github/acceptance/expected-failures-11.0.1-full.md b/.github/acceptance/expected-failures-11.0.1-full.md new file mode 100644 index 0000000..a98500a --- /dev/null +++ b/.github/acceptance/expected-failures-11.0.1-full.md @@ -0,0 +1,49 @@ +# Scenarios of ownCloud core 11.0.1's acceptance tests that are expected to fail against this +# image (full run). run.sh fails the job on any other failure, and on a listed +# scenario that passes. One entry per line, as in core's own lists: +# - [apiSuite/file.feature:12](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiSuite/file.feature#L12) + +## CLI + +# Found in this repository's CI. cliExternalStorage needs a second ownCloud server +# to mount over WebDAV; the others depend on how the image is set up. +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:107](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L107) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:128](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L128) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:150](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L150) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:212](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L212) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:232](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L232) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:273](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L273) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:382](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L382) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:67](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L67) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:86](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L86) +- [cliMain/configKey.feature:101](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliMain/configKey.feature#L101) +- [cliManageApps/appsPath.feature:18](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliManageApps/appsPath.feature#L18) +- [cliManageApps/appsPath.feature:36](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliManageApps/appsPath.feature#L36) +- [cliManageApps/appsPath.feature:47](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliManageApps/appsPath.feature#L47) +- [cliProvisioning/resetUserPassword.feature:19](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliProvisioning/resetUserPassword.feature#L19) +- [cliProvisioning/resetUserPasswordOc10Issue36985.feature:8](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliProvisioning/resetUserPasswordOc10Issue36985.feature#L8) + +## API + +# From local full runs: these failed in the suite and fail again on their own against +# the published image. Check them against the first full run in CI. +- [apiMain/appManagement.feature:16](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiMain/appManagement.feature#L16) +- [apiMain/appManagement.feature:28](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiMain/appManagement.feature#L28) +- [apiMain/appManagement.feature:40](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiMain/appManagement.feature#L40) +- [apiMain/appManagement.feature:52](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiMain/appManagement.feature#L52) +- [apiMain/external-storage.feature:65](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiMain/external-storage.feature#L65) +- [apiShareManagementBasicToRoot/createShareFromLocalStorageToRootFolder.feature:109](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToRoot/createShareFromLocalStorageToRootFolder.feature#L109) +- [apiShareManagementBasicToRoot/createShareFromLocalStorageToRootFolder.feature:57](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToRoot/createShareFromLocalStorageToRootFolder.feature#L57) +- [apiShareManagementBasicToRoot/createShareFromLocalStorageToRootFolder.feature:83](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToRoot/createShareFromLocalStorageToRootFolder.feature#L83) +- [apiShareManagementBasicToShares/createShareFromLocalStorageToSharesFolder.feature:113](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareFromLocalStorageToSharesFolder.feature#L113) +- [apiShareManagementBasicToShares/createShareFromLocalStorageToSharesFolder.feature:114](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareFromLocalStorageToSharesFolder.feature#L114) +- [apiShareManagementBasicToShares/createShareFromLocalStorageToSharesFolder.feature:62](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareFromLocalStorageToSharesFolder.feature#L62) +- [apiShareManagementBasicToShares/createShareFromLocalStorageToSharesFolder.feature:87](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareFromLocalStorageToSharesFolder.feature#L87) +- [apiShareManagementBasicToShares/createShareFromLocalStorageToSharesFolder.feature:88](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareFromLocalStorageToSharesFolder.feature#L88) +- [apiShareManagementToRoot/moveReceivedShareFromLocalStorage.feature:40](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToRoot/moveReceivedShareFromLocalStorage.feature#L40) +- [apiShareManagementToRoot/moveReceivedShareFromLocalStorage.feature:63](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToRoot/moveReceivedShareFromLocalStorage.feature#L63) +- [apiShareManagementToRoot/moveReceivedShareFromLocalStorage.feature:64](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToRoot/moveReceivedShareFromLocalStorage.feature#L64) +- [apiShareManagementToShares/moveReceivedShareFromLocalStorage.feature:44](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/moveReceivedShareFromLocalStorage.feature#L44) +- [apiShareManagementToShares/moveReceivedShareFromLocalStorage.feature:68](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/moveReceivedShareFromLocalStorage.feature#L68) +- [apiShareManagementToShares/moveReceivedShareFromLocalStorage.feature:89](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/moveReceivedShareFromLocalStorage.feature#L89) +- [apiTrashbinRestore/trashbinRestore.feature:171](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiTrashbinRestore/trashbinRestore.feature#L171) diff --git a/.github/acceptance/expected-failures-11.0.1-smoke.md b/.github/acceptance/expected-failures-11.0.1-smoke.md new file mode 100644 index 0000000..8f3d3cf --- /dev/null +++ b/.github/acceptance/expected-failures-11.0.1-smoke.md @@ -0,0 +1,24 @@ +# Scenarios of ownCloud core 11.0.1's acceptance tests that are expected to fail against this +# image (smoke run). run.sh fails the job on any other failure, and on a listed +# scenario that passes. One entry per line, as in core's own lists: +# - [apiSuite/file.feature:12](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiSuite/file.feature#L12) + +## CLI + +# Found in this repository's CI. cliExternalStorage needs a second ownCloud server +# to mount over WebDAV; the others depend on how the image is set up. +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:107](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L107) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:128](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L128) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:150](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L150) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:212](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L212) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:232](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L232) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:273](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L273) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:382](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L382) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:67](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L67) +- [cliExternalStorage/filesExternalWebdavOwncloud.feature:86](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliExternalStorage/filesExternalWebdavOwncloud.feature#L86) +- [cliMain/configKey.feature:101](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliMain/configKey.feature#L101) +- [cliManageApps/appsPath.feature:18](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliManageApps/appsPath.feature#L18) +- [cliManageApps/appsPath.feature:36](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliManageApps/appsPath.feature#L36) +- [cliManageApps/appsPath.feature:47](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliManageApps/appsPath.feature#L47) +- [cliProvisioning/resetUserPassword.feature:19](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliProvisioning/resetUserPassword.feature#L19) +- [cliProvisioning/resetUserPasswordOc10Issue36985.feature:8](https://github.com/owncloud/core/blob/master/tests/acceptance/features/cliProvisioning/resetUserPasswordOc10Issue36985.feature#L8) diff --git a/.github/acceptance/run-part.sh b/.github/acceptance/run-part.sh new file mode 100755 index 0000000..af53ee5 --- /dev/null +++ b/.github/acceptance/run-part.sh @@ -0,0 +1,81 @@ +#!/usr/bin/env bash +# Run one part of ownCloud core's acceptance tests against a server image. +# +# usage: run-part.sh +# image server image under test, e.g. owncloud/server:test +# php PHP version of the test runner (owncloudci/php:), 7.4 or 8.3 +# type suite type for run.sh: api or cli +# part part to run, 1..parts (run.sh --part) +# tags Behat tag filter +# +# environment: +# QA_DIR extracted owncloud-complete-*-qa tarball with Behat installed +# TESTING_DIR the owncloud/testing app +# EXPECTED_FAILURES_FILE optional, a run.sh expected-failures list +# LOG_DIR where to write the server and database logs +set -uo pipefail + +image=$1 php=$2 type=$3 part=$4 parts=$5 tags=$6 +: "${QA_DIR:?}" "${TESTING_DIR:?}" "${LOG_DIR:?}" +net=acceptance db=acceptance-db srv=acceptance-server +mkdir -p "${LOG_DIR}" + +cleanup() { + docker logs "${srv}" >"${LOG_DIR}/server.log" 2>&1 + docker logs "${db}" >"${LOG_DIR}/database.log" 2>&1 + docker rm -f "${srv}" "${db}" >/dev/null 2>&1 + docker network rm "${net}" >/dev/null 2>&1 +} +trap cleanup EXIT + +docker network create "${net}" >/dev/null + +docker run -d --name "${db}" --network "${net}" \ + -e MARIADB_ROOT_PASSWORD=owncloud -e MARIADB_DATABASE=owncloud \ + -e MARIADB_USER=owncloud -e MARIADB_PASSWORD=owncloud \ + mariadb:10.11 --max-allowed-packet=128M --innodb-log-file-size=64M >/dev/null +ready=false +for _ in $(seq 60); do + docker exec "${db}" healthcheck.sh --connect --innodb_initialized >/dev/null 2>&1 && ready=true && break + sleep 2 +done +[[ "${ready}" == true ]] || { echo "MariaDB did not become ready" >&2; exit 1; } + +docker run -d --name "${srv}" --network "${net}" \ + -e OWNCLOUD_DOMAIN="${srv}:8080" -e OWNCLOUD_TRUSTED_DOMAINS="${srv},localhost" \ + -e OWNCLOUD_DB_TYPE=mysql -e OWNCLOUD_DB_HOST="${db}" -e OWNCLOUD_DB_NAME=owncloud \ + -e OWNCLOUD_DB_USERNAME=owncloud -e OWNCLOUD_DB_PASSWORD=owncloud \ + -e OWNCLOUD_ADMIN_USERNAME=admin -e OWNCLOUD_ADMIN_PASSWORD=admin \ + "${image}" >/dev/null +# the image has no HEALTHCHECK; the entrypoint logs this once installation is done. +# Capture the logs first: under pipefail, grep -q closing the pipe early can fail it. +ready=false +for _ in $(seq 120); do + logs=$(docker logs "${srv}" 2>&1) + [[ "${logs}" == *'Starting apache daemon'* ]] && ready=true && break + [[ "$(docker inspect -f '{{.State.Running}}' "${srv}")" == true ]] || break + sleep 3 +done +[[ "${ready}" == true ]] || { echo "ownCloud server did not start" >&2; exit 1; } +sleep 3 + +docker cp "${TESTING_DIR}" "${srv}:/var/www/owncloud/apps/testing" && + docker exec -u 0 "${srv}" chown -R www-data:root /var/www/owncloud/apps/testing && + docker exec "${srv}" occ app:enable testing && + docker exec "${srv}" occ status || + { echo "installing the testing app failed" >&2; exit 1; } + +expected=() +if [[ -n "${EXPECTED_FAILURES_FILE:-}" ]]; then + expected=(-v "${EXPECTED_FAILURES_FILE}:/expected-failures.md:ro" -e EXPECTED_FAILURES_FILE=/expected-failures.md) +fi + +docker run --rm --network "${net}" -v "${QA_DIR}:/src" -w /src "${expected[@]}" \ + -e TEST_SERVER_URL="http://${srv}:8080" \ + -e ALT1_USER_PASSWORD='AaBb2Cc3Dd!' -e ALT2_USER_PASSWORD='AaBb2Cc4Dd!' \ + -e ALT3_USER_PASSWORD='AaBb2Cc5Dd!' -e ALT4_USER_PASSWORD='AaBb2Cc6Dd!' \ + -e ALTERNATE_ADMIN_PASSWORD='AaBb2Cc9D!' -e PUBLIC_LINK_SHARE_PASSWORD='AaBb2Cc3d!' \ + -e REGULAR_USER_PASSWORD='AaBb2Cc7Dd!' -e SUB_ADMIN_PASSWORD='AaBb2Cc8Dd!' \ + -e PLAIN_OUTPUT=true \ + "owncloudci/php:${php}" \ + bash tests/acceptance/run.sh --remote --type "${type}" --tags "${tags}" --part "${part}" "${parts}" diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml new file mode 100644 index 0000000..8c602f8 --- /dev/null +++ b/.github/workflows/acceptance.yml @@ -0,0 +1,173 @@ +name: Acceptance Tests + +# Runs ownCloud core's acceptance tests (tests/acceptance/run.sh from the +# release's -qa tarball) against the image built from this repository. +on: + workflow_call: + inputs: + version: + description: "ownCloud release, e.g. 11.0.1" + required: true + type: string + base: + description: "Build context, e.g. v24.04" + required: true + type: string + tarball: + description: "owncloud-complete release tarball" + required: true + type: string + qa-sha256: + description: "sha256 of the matching -qa tarball" + required: true + type: string + php: + description: "PHP version of the test runner image owncloudci/php" + required: true + type: string + full: + description: "Run the full API suite instead of the @smokeTest subset" + required: false + type: boolean + default: false + +env: + IMAGE: owncloud/server:acceptance + # owncloud/testing at a commit that supports ownCloud 10 and 11 and PHP 7.4 to 8.3; + # its last release predates PHP 8.3 + TESTING_APP_COMMIT: 5875b15b91b4ba154dcee143bc67907229428a40 + +jobs: + plan: + runs-on: ubuntu-latest + outputs: + suites: ${{ steps.suites.outputs.suites }} + steps: + - id: suites + env: + FULL: ${{ inputs.full }} + run: | + # @local_storage: uploads into a local mount created during the test get 423 + # Locked, and which scenarios fail changes from run to run, so no + # expected-failures list can hold them. Excluded until that is solved. + base='~@skip&&~@skipOnDockerContainerTesting&&~@federation-app-required&&~@local_storage' + if [ "${FULL}" = true ]; then + api_parts=10 api_tags="${base}" + else + api_parts=2 api_tags="@smokeTest&&${base}" + fi + cli_parts=2 + suites=$( + { for p in $(seq "${api_parts}"); do jq -nc --arg t "${api_tags}" --argjson p "$p" --argjson n "${api_parts}" '{type: "api", part: $p, parts: $n, tags: $t}'; done + for p in $(seq "${cli_parts}"); do jq -nc --arg t "${base}" --argjson p "$p" --argjson n "${cli_parts}" '{type: "cli", part: $p, parts: $n, tags: $t}'; done + } | jq -sc . + ) + echo "suites=${suites}" >> "$GITHUB_OUTPUT" + + image: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1 + + - name: Build image + uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0 + with: + context: ${{ inputs.base }} + file: ${{ inputs.base }}/Dockerfile.multiarch + platforms: linux/amd64 + build-args: | + TARBALL_URL=${{ inputs.tarball }} + tags: ${{ env.IMAGE }} + outputs: type=docker,dest=${{ runner.temp }}/image.tar + + - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 + with: + name: acceptance-image-${{ inputs.version }} + path: ${{ runner.temp }}/image.tar + retention-days: 1 + compression-level: 1 + + tests: + name: ${{ matrix.suite.type }} ${{ matrix.suite.part }}/${{ matrix.suite.parts }} + needs: [plan, image] + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + suite: ${{ fromJSON(needs.plan.outputs.suites) }} + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + + - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2 + with: + name: acceptance-image-${{ inputs.version }} + path: ${{ runner.temp }} + + - name: Load image + run: docker load -i "${RUNNER_TEMP}/image.tar" && rm "${RUNNER_TEMP}/image.tar" + + - name: Fetch the -qa tarball + env: + TARBALL: ${{ inputs.tarball }} + QA_SHA256: ${{ inputs.qa-sha256 }} + run: | + qa="${TARBALL%.tar.bz2}-qa.tar.bz2" + curl -sSfL --retry 3 -o "${RUNNER_TEMP}/qa.tar.bz2" "${qa}" + echo "${QA_SHA256} ${RUNNER_TEMP}/qa.tar.bz2" | sha256sum -c + mkdir "${RUNNER_TEMP}/qa" + tar -xjf "${RUNNER_TEMP}/qa.tar.bz2" -C "${RUNNER_TEMP}/qa" --strip-components 1 + # the release tarball ships its scripts 0644, and run.sh calls + # lint-expected-failures.sh directly + chmod +x "${RUNNER_TEMP}"/qa/tests/acceptance/*.sh + # run.sh checks that each expected failure really failed with + # `grep ${SUITE_SCENARIO}$`, but newer Behat (11.0.1's) appends " (on line N)" + # to the failed path, so every listed scenario counts as an unexpected pass. + # Allow the suffix; still owncloud/core master's code as of 2026-10. + run="${RUNNER_TEMP}/qa/tests/acceptance/run.sh" + # shellcheck disable=SC2016 # ${SUITE_SCENARIO} is text in run.sh, not ours to expand + sed -i 's/grep ${SUITE_SCENARIO}\$ > \/dev\/null/grep -E "${SUITE_SCENARIO}( [(]on line [0-9]+[)])?$" > \/dev\/null/' "${run}" + # shellcheck disable=SC2016 + grep -qF 'grep -E "${SUITE_SCENARIO}( [(]on line' "${run}" + + - name: Install Behat + env: + VERSION: ${{ inputs.version }} + PHP: ${{ inputs.php }} + # symfony/yaml 5.4.52 caps YAML collection aliases at 128, which the + # 10.16 behat.yml exceeds; Composer's advisory check blocks the older releases + run: | + mkdir -p "${RUNNER_TEMP}/qa/vendor-bin/behat" + curl -sSfL --retry 3 -o "${RUNNER_TEMP}/qa/vendor-bin/behat/composer.json" \ + "https://raw.githubusercontent.com/owncloud/core/v${VERSION}/vendor-bin/behat/composer.json" + docker run --rm -v "${RUNNER_TEMP}/qa:/src" -w /src/vendor-bin/behat "owncloudci/php:${PHP}" \ + bash -c "composer config audit.block-insecure false && composer require --no-update 'symfony/yaml:^5.4 <5.4.52' && composer install --no-progress" + + - name: Fetch the testing app + run: | + mkdir "${RUNNER_TEMP}/testing" + curl -sSfL --retry 3 "https://github.com/owncloud/testing/archive/${TESTING_APP_COMMIT}.tar.gz" \ + | tar -xz -C "${RUNNER_TEMP}/testing" --strip-components 1 + + - name: Run tests + env: + PHP: ${{ inputs.php }} + TYPE: ${{ matrix.suite.type }} + PART: ${{ matrix.suite.part }} + PARTS: ${{ matrix.suite.parts }} + TAGS: ${{ matrix.suite.tags }} + EXPECTED: .github/acceptance/expected-failures-${{ inputs.version }}-${{ case(inputs.full, 'full', 'smoke') }}.md + run: | + export QA_DIR="${RUNNER_TEMP}/qa" TESTING_DIR="${RUNNER_TEMP}/testing" LOG_DIR="${RUNNER_TEMP}/logs" + export EXPECTED_FAILURES_FILE="${GITHUB_WORKSPACE}/${EXPECTED}" + .github/acceptance/run-part.sh "${IMAGE}" "${PHP}" "${TYPE}" "${PART}" "${PARTS}" "${TAGS}" + + - name: Upload server logs + if: failure() + uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 + with: + name: acceptance-logs-${{ inputs.version }}-${{ matrix.suite.type }}-${{ matrix.suite.part }} + path: ${{ runner.temp }}/logs + retention-days: 7 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2708f20..eb02c02 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -7,13 +7,44 @@ on: pull_request: schedule: - cron: 0 0 * * 0 + workflow_dispatch: jobs: lint: uses: owncloud-docker/ubuntu/.github/workflows/lint-editorconfig.yml@master - build: + acceptance: + name: acceptance (${{ matrix.release.version }}) needs: lint + uses: ./.github/workflows/acceptance.yml + with: + version: ${{ matrix.release.version }} + base: ${{ matrix.release.base }} + tarball: ${{ matrix.release.tarball }} + qa-sha256: ${{ matrix.release.qa-sha256 }} + php: ${{ matrix.release.php }} + # The weekly and manual runs run the full API suite; pushes and PRs run its + # @smokeTest subset. The CLI suite always runs in full. + full: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }} + + strategy: + fail-fast: false + matrix: + release: + - version: 10.16.6 + tarball: https://github.com/owncloud/core/releases/download/v10.16.6/owncloud-complete-20261006.tar.bz2 + qa-sha256: 5b1bfa2ffc9b0156bf1cee446e56744883b69415948f634baf2bfa4c2d0ea0df + base: v22.04 + php: "7.4" + - version: 11.0.1 + tarball: https://github.com/owncloud/core/releases/download/v11.0.1/owncloud-complete-20260925.tar.bz2 + qa-sha256: 932006415aa75d7cc6161594997dab88cb1cef1960c62eef79d45436700942dc + base: v24.04 + php: "8.3" + + build: + # nothing is published unless the acceptance tests of both release lines pass + needs: [lint, acceptance] uses: owncloud-docker/ubuntu/.github/workflows/docker-build.yml@master with: docker-repo-name: owncloud/${{ github.event.repository.name }}