Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
288655b
ci: add initial acceptance test workflow
phil-davis May 19, 2026
8f7e289
ci: add some API acceptance test suites
phil-davis May 19, 2026
348bd49
ci: run only one test suite for now
phil-davis May 19, 2026
fbd3e39
ci: find out why no priv for /var/www/html
phil-davis May 19, 2026
243cb81
ci: temp reduce php unit workflows
phil-davis May 19, 2026
e6bbe57
ci: adjust /var/www permissions
phil-davis May 19, 2026
b9915b3
ci: adjust server install
phil-davis May 19, 2026
7d8b2df
ci: run apiFederationToRoot1 suite
phil-davis May 19, 2026
fff0a51
fix: avoid trying to access array offset on false
phil-davis May 20, 2026
cd4aff8
fix: handle passing null to normalizeUrl
phil-davis May 20, 2026
b3d7f75
ci: copy all files including hidden files
phil-davis May 20, 2026
86097fd
fix: support federation between systems in subdirectories
phil-davis May 20, 2026
faaa966
test(deps): bump behat-related minor version dependencies
phil-davis May 20, 2026
f4c85aa
test(deps): pin symfony/yaml to 7.4.11
phil-davis May 20, 2026
58d287e
test: remove unneeded colons from behat.yml
phil-davis May 20, 2026
82b0ef1
test: convert behat YML config to behat.php
phil-davis May 20, 2026
e06bb94
test: fix PHP code style of behat.php
phil-davis May 20, 2026
72b6fa3
test(deps): revert pin symfony/yaml to 7.4.11
phil-davis May 21, 2026
e172f2d
ci: run webUIComments test suite in CI
phil-davis May 21, 2026
f284a94
test: install all PHP extensions
phil-davis May 21, 2026
5b5cc79
ci: add more API acceptance test suites
phil-davis May 21, 2026
c7ea954
ci: add all API acceptance test suites
phil-davis May 21, 2026
c9b7c40
test: fix reference to server root
phil-davis May 25, 2026
3eaf9b6
test: fix
phil-davis May 25, 2026
496c820
ci: shorten acceptance test workflow names
phil-davis May 25, 2026
e36c16f
ci: install ImageMagick for Previews tests
phil-davis May 25, 2026
dec70c4
test: update preview test fixture
phil-davis May 25, 2026
f703813
ci: refactor server and federated folder
phil-davis May 25, 2026
6c2fc72
ci: add some CLI acceptance tests
phil-davis May 25, 2026
2fb970b
ci: provide email server for cliProvisioning
phil-davis May 25, 2026
5469899
ci: explicitly specify utf8mb4 for database
phil-davis May 25, 2026
823d7b8
ci: enable UFT-8 Unicode characters for acceptance tests
phil-davis May 25, 2026
990903e
ci: examine locale
phil-davis May 25, 2026
95d6975
test: override dumb terminal setting with xterm
phil-davis Jun 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
526 changes: 526 additions & 0 deletions .github/workflows/acceptance.yml

Large diffs are not rendered by default.

115 changes: 115 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,118 @@ jobs:
uses: ./.github/workflows/php-unit.yml
with:
php-versions: '["8.3"]'

acceptance-api:
name: API Tests
uses: ./.github/workflows/acceptance.yml
with:
do-api-tests: true
server-folder: 'server'
test-suites: "[
'apiAuth',
'apiAuthOcs',
'apiAuthWebDav',
'apiCapabilities',
'apiComments',
'apiFavorites',
'apiMain',
'apiProvisioning-v1',
'apiProvisioning-v2',
'apiProvisioningGroups-v1',
'apiProvisioningGroups-v2',
'apiShareCreateSpecialToRoot1',
'apiShareCreateSpecialToRoot2',
'apiShareCreateSpecialToShares1',
'apiShareCreateSpecialToShares2',
'apiSharees',
'apiShareManagementBasicToRoot',
'apiShareManagementBasicToShares',
'apiShareManagementToRoot',
'apiShareManagementToShares',
'apiShareOperationsToRoot1',
'apiShareOperationsToRoot2',
'apiShareOperationsToShares1',
'apiShareOperationsToShares2',
'apiSharePublicLink1',
'apiSharePublicLink2',
'apiSharePublicLink3',
'apiShareReshareToRoot1',
'apiShareReshareToRoot2',
'apiShareReshareToRoot3',
'apiShareReshareToShares1',
'apiShareReshareToShares2',
'apiShareReshareToShares3',
'apiShareUpdateToRoot',
'apiShareUpdateToShares',
'apiTags',
'apiTranslation',
'apiTrashbin',
'apiTrashbinRestore',
'apiVersions',
'apiWebdavDelete',
'apiWebdavEtagPropagation1',
'apiWebdavEtagPropagation2',
'apiWebdavLocks',
'apiWebdavLocks2',
'apiWebdavLocks3',
'apiWebdavLocksUnlock',
'apiWebdavMove1',
'apiWebdavMove2',
'apiWebdavOperations',
'apiWebdavProperties1',
'apiWebdavProperties2',
'apiWebdavUpload1',
'apiWebdavUpload2',
'apiWebdavUploadTUS']"

acceptance-api-notifications:
name: API Tests Notifications
uses: ./.github/workflows/acceptance.yml
with:
do-api-tests: true
server-folder: 'server'
additional-app: 'notifications'
test-suites: "['apiSharingNotificationsToRoot', 'apiSharingNotificationsToShares']"

acceptance-api-previews:
name: API Tests Previews
uses: ./.github/workflows/acceptance.yml
with:
do-api-tests: true
additional-packages: 'imagemagick'
server-folder: 'server'
test-suites: "['apiWebdavPreviews']"

acceptance-api-federation:
name: API Tests Federation
uses: ./.github/workflows/acceptance.yml
with:
do-api-tests: true
server-folder: 'server'
federated-folder: 'federated'
test-suites: "['apiFederationToRoot1', 'apiFederationToRoot2', 'apiFederationToShares1', 'apiFederationToShares2']"

acceptance-cli:
name: CLI Tests
uses: ./.github/workflows/acceptance.yml
with:
do-cli-tests: true
server-folder: 'server'
test-suites: "['cliMain', 'cliTrashbin']"

acceptance-cli-email:
name: CLI Tests
uses: ./.github/workflows/acceptance.yml
with:
do-cli-tests: true
use-email-server: true
server-folder: 'server'
test-suites: "['cliProvisioning']"

acceptance-webui:
name: WebUI Tests
uses: ./.github/workflows/acceptance.yml
with:
do-webui-tests: true
server-folder: 'server'
test-suites: "['webUIComments']"
11 changes: 2 additions & 9 deletions .github/workflows/php-unit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,6 @@ jobs:
matrix:
php: ${{ fromJSON(inputs.php-versions) }}
database: [sqlite]
include:
- php: "8.3"
database: "mysql:8.0"
- php: "8.3"
database: "mariadb:10.6"
- php: "8.3"
database: "mariadb:10.11"
- php: "8.3"
database: "postgres:10.21"

services:
mysql:
Expand All @@ -42,6 +33,8 @@ jobs:
--health-interval=10s
--health-timeout=5s
--health-retries=3
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
ports:
- 3306:3306
postgres:
Expand Down
3 changes: 3 additions & 0 deletions apps/federation/lib/DbHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,9 @@ protected function hash($url) {
* @return string
*/
protected function normalizeUrl($url) {
if ($url === null) {
$url = '';
}
$normalized = $url;

if (\strpos($url, 'https://') === 0) {
Expand Down
8 changes: 8 additions & 0 deletions apps/files_sharing/lib/External/Manager.php
Original file line number Diff line number Diff line change
Expand Up @@ -573,20 +573,28 @@ protected function testUrl(IClientService $clientService, string $remote, bool $
public function testRemoteUrl(IClientService $clientService, string $remote) {
$parsed_host = parse_url($remote, PHP_URL_HOST);
$parsed_port = parse_url($remote, PHP_URL_PORT);
$parsed_path = parse_url($remote, PHP_URL_PATH);
if (\is_string($parsed_host)) {
$remote = $parsed_host;
if ($parsed_port !== null) {
$remote .= ':' . $parsed_port;
}
if ($parsed_path !== null) {
$remote .= $parsed_path;
}
} else {
$string_to_parse = 'http://' . $remote;
$parsed_host = parse_url($string_to_parse, PHP_URL_HOST);
$parsed_port = parse_url($string_to_parse, PHP_URL_PORT);
$parsed_path = parse_url($string_to_parse, PHP_URL_PATH);
if (\is_string($parsed_host)) {
$remote = $parsed_host;
if ($parsed_port !== null) {
$remote .= ':' . $parsed_port;
}
if ($parsed_path !== null) {
$remote .= $parsed_path;
}
}
}
try {
Expand Down
2 changes: 1 addition & 1 deletion lib/private/Files/Storage/Wrapper/Encryption.php
Original file line number Diff line number Diff line change
Expand Up @@ -472,7 +472,7 @@ public function fopen($path, $mode) {
if (!empty($encryptionModuleId)) {
$encryptionModule = $this->encryptionManager->getEncryptionModule($encryptionModuleId);
$shouldEncrypt = true;
} elseif (empty($encryptionModuleId) && $info['encrypted'] === true) {
} elseif ($info !== false && $info->isEncrypted()) {
// we come from a old installation. No header and/or no module defined
// but the file is encrypted. In this case we need to use the
// OC_DEFAULT_MODULE to read the file
Expand Down
Loading
Loading