Benjamin Gaussorgues
fc8a7884d5
fix(ci): fix Memcached CI job
...
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-06-17 14:20:05 +02:00
Andy Scherzinger
f0486b9e9c
Merge pull request #61341 from nextcloud/backport/61150/stable34
...
[stable34] Speedup tests execution
2026-06-16 20:20:21 +02:00
Côme Chilliet
de970b65fe
fix: Do not set last-password-confirm for apptoken sessions
...
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-16 14:28:20 +00:00
Louis Chmn
ae08b8f843
test(View): Setup users and groups once
...
Signed-off-by: Louis Chmn <louis@chmn.me>
2026-06-16 14:21:05 +00:00
Carl Schwan
a3e0b2d084
perf(UserConfigTest): Don't recreate database between invocation
...
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-06-16 14:21:05 +00:00
Louis Chmn
e92d435120
test(App): Setup users and groups once
...
Signed-off-by: Louis Chmn <louis@chmn.me>
2026-06-16 14:21:04 +00:00
Carl Schwan
0a807f2bb5
perf(AppConfigIntegrationTest): Avoid creating too many times AppConfig
...
Reuse instance by merging some tests based on DataProviders
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-06-16 14:21:04 +00:00
Carl Schwan
8a270ee825
perf: Test chunking with a lower amount of entries
...
Use a lower array_chunk values when running the code in the tests for
the comment manager.
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-06-16 14:21:04 +00:00
Carl Schwan
33f30d1086
perf(tests): Cache encryption result in UserConfigTest
...
So that we don't need to encrypt stuff all the time.
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-06-16 14:21:04 +00:00
Carl Schwan
011d979e7e
perf(tests): Don't encrypt the same value each time
...
We have a static class, so we can save the results accross the > 100
tests cases in this class.
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-06-16 14:21:04 +00:00
Carl Schwan
4e88fa4060
perf(tests): Remove worked command tests that relies on timeout
...
It's testing something basic and takes more than a second each time to
run.
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-06-16 14:21:04 +00:00
Josh
93c0b9c541
test(s3): drop unnecessarily added fclose
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-06-16 15:15:51 +02:00
Josh
8528a2095d
test(s3): make testFileSizes EOF assertion more robust
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-06-16 15:15:34 +02:00
Andy Scherzinger
9882418ba8
Merge pull request #61249 from nextcloud/backport/60972/stable34
...
[stable34] Job run history cleanup
2026-06-16 13:11:25 +02:00
Côme Chilliet
d29d978900
chore: Fix CreateSessionTokenCommandTest and add test for ephemeral session
...
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-15 16:48:13 +02:00
Benjamin Gaussorgues
a570d6dc5d
feat(snowflake): allows to generate Snowflake IDs matching a timestamp
...
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-06-12 19:40:16 +02:00
Benjamin Gaussorgues
368c4ae515
feat(utils): add getter for serverid with proper default
...
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-06-12 19:40:16 +02:00
Joas Schilling
fa23d8ea77
fix(settings): Fix appstore icon color in settings menu
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-06-09 14:57:59 +02:00
John Molakvoæ
677044db61
Revert "[stable34] refactor(NavigationManager): move navigation definitions into apps"
2026-06-05 10:39:22 +02:00
Ferdinand Thiessen
e5297a1d04
refactor(NavigationManager): move navigation definitions into apps
...
The manager itself does not need to know what hardcoded-things an app provides,
instead the apps itself should handle this.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-06-03 20:09:48 +02:00
Andy Scherzinger
8a84c44882
Merge pull request #60921 from nextcloud/backport/60728/stable34
...
[stable34] fix(MailPlugin): Stop applying the offset twice and the limit per wide/exact
2026-06-03 08:42:59 +02:00
Andy Scherzinger
132929bd61
Merge pull request #60924 from nextcloud/backport/59813/stable34
...
[stable34] fix(sharing): set STATUS_ACCEPTED when creating USERGROUP subshare on…
2026-06-03 08:42:07 +02:00
Josh
5d86468ca8
test(cache): avoid ordering assumptions in testExtended
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-06-02 11:56:50 +00:00
Anna Larch
9af4a2bb5a
fix(sharing): restore STATUS_ACCEPTED for OC-migrated group share subshares
...
When an ownCloud-migrated group share (which has no per-user USERGROUP
subshare) is renamed for the first time, DefaultShareProvider::move()
inserted a new USERGROUP row without setting `accepted`. The column
defaulted to 0 (STATUS_PENDING), causing MountProvider to skip the
share on the next login — the shared file disappeared for the recipient.
Fix: set accepted = STATUS_ACCEPTED explicitly on the INSERT in
DefaultShareProvider::move() for the TYPE_GROUP branch.
Secondary fix: SharedMount::moveMount() silently returned true when
updateFileTarget() threw (e.g. group no longer exists on an OC-migrated
instance). Set $result = false in the catch block so View::rename()
propagates the failure instead of silently corrupting VFS state.
An opt-in occ command (sharing:fix-owncloud-group-shares) with --dry-run
support is included to repair existing broken instances. It targets only
TYPE_USERGROUP subshares with accepted=STATUS_PENDING and permissions!=0
(shares that were accepted but broken by the missing column default),
leaving explicitly declined shares (permissions=0) untouched.
AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Anna Larch <anna@nextcloud.com>
2026-06-02 09:14:34 +00:00
provokateurin
f603358186
fix(MailPlugin): Stop applying the offset twice and the limit per wide/exact
...
Signed-off-by: provokateurin <kate@provokateurin.de>
2026-06-02 08:21:45 +02:00
provokateurin
2e9f3b3c63
perf(MailPlugin): Optimize checking group memberships
...
Signed-off-by: provokateurin <kate@provokateurin.de>
2026-06-02 08:19:54 +02:00
provokateurin
b2ccbd389b
fix(MailPlugin): Use correct type for exact id match
...
Signed-off-by: provokateurin <kate@provokateurin.de>
2026-06-02 08:19:54 +02:00
Andy Scherzinger
92034d8288
Merge pull request #60812 from nextcloud/backport/60751/stable34
...
[stable34] test(share20): replace addToAssertionCount checkbox tests in Share20 ManagerTest
2026-06-02 00:30:23 +02:00
Andy Scherzinger
0d5267d64c
Merge pull request #60781 from nextcloud/backport/60739/stable34
...
[stable34] test(ci): enforce PHPUnit time limits with sensible timeout values
2026-06-01 23:32:05 +02:00
Andy Scherzinger
a11567ef0e
Merge pull request #60762 from nextcloud/backport/60744/stable34
...
[stable34] test(db): call parent::tearDown() in DB test classes that skipped it
2026-06-01 23:29:28 +02:00
Anna Larch
5c0e7ae9c7
test(share20): replace addToAssertionCount checkbox tests in Share20 ManagerTest
...
Signed-off-by: Anna Larch <anna@nextcloud.com>
AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 23:21:28 +02:00
Andy Scherzinger
865f079415
Merge pull request #60820 from nextcloud/backport/59677/stable34
...
[stable34] fix(appconfig,userconfig): restore pre-migration fallback for ownCloud migration
2026-06-01 22:33:38 +02:00
Benjamin Gaussorgues
e612661d71
feat(jobs): add command to list executed background jobs
...
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-05-29 13:10:15 +00:00
Anna Larch
148c79734d
fix(appconfig,userconfig): restore pre-migration fallback for ownCloud migration
...
AppConfig and UserConfig unconditionally queried NC-only columns (type,
lazy, flags, indexed) that don't exist in ownCloud's database schema,
breaking ownCloud → Nextcloud upgrades entirely before the schema
migration steps could run.
Restore the fallback pattern in both classes: on first loadConfig() call,
if a DBException with REASON_INVALID_FIELD_NAME is thrown, set
$migrationCompleted = false and retry selecting only the columns present
in ownCloud's schema. INSERT and UPDATE statements also omit NC-only
columns when $migrationCompleted is false.
The catch block also guards against infinite recursion: if $migrationCompleted
is already false when the exception fires, the exception is re-thrown
instead of triggering another recursive call.
Fixes: https://github.com/nextcloud/server/issues/57340
Signed-off-by: Anna Larch <anna@nextcloud.com>
AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 18:43:14 +00:00
Benjamin Gaussorgues
f936e54b8d
feat(jobs): allow to keep track of job executions
...
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-05-28 10:20:07 +00:00
Benjamin Gaussorgues
9269ac210f
feat(jobs): introduce background job classes registry
...
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-05-28 10:20:06 +00:00
Anna Larch
f793aa3337
test(ci): enforce PHPUnit time limits with sensible timeout values
...
PHPUnit's enforceTimeLimit was disabled, meaning the timeoutForSmallTests,
timeoutForMediumTests and timeoutForLargeTests config values had no effect.
Enable enforcement and set realistic limits: 60s/300s/600s for
small/medium/large, with a 300s default for unannotated tests.
Also clear disable_functions in the PHP development ini preset across all
PHPUnit workflows so pcntl_signal is available — without it the signal
handler that drives timeout enforcement cannot be registered.
Signed-off-by: Anna Larch <anna@nextcloud.com>
AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Anna Larch <anna@nextcloud.com>
2026-05-28 10:04:05 +02:00
Anna Larch
c2c5805e96
test(db): call parent::tearDown() in DB test classes that skipped it
...
Eight test classes overrode tearDown() for custom DB cleanup but never
called parent::tearDown(). TestCase::tearDown() does three things these
tests were silently skipping after every test method:
- ILockingProvider::releaseAll() — unreleased locks bleed into subsequent
tests and can cause deadlocks or unexpected NotFoundException
- Storage::getGlobalCache()->clearCache() — stale filecache entries from
share/storage tests cause unrelated ObjectStore tests to receive false
from fopen() (fseek() then fails with "Argument must be of type resource")
- UserMountCache::flush() — stale mount cache causes share lookups in
later tests to fail with ShareNotFound
AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Anna Larch <anna@nextcloud.com>
2026-05-27 17:52:52 +02:00
Peter Ringelmann
2efd282a24
fix(settings,oauth2): preserve wipe state across admin deletion paths
...
Signed-off-by: Peter Ringelmann <peter.ringelmann@nextcloud.com>
2026-05-26 19:21:58 +00:00
Andy Scherzinger
01fe7cb4e5
Merge pull request #60593 from nextcloud/backport/60286/stable34
...
[stable34] fix(AppStore/Fetcher): catch GenericFileException when reading cache file in Fetcher
2026-05-22 09:03:00 +02:00
Stephan Orbaugh
09a0b4349d
Merge pull request #60564 from nextcloud/backport/60546/stable34
...
[stable34] fix: handle NAT64 addresses in isLocalAddress
2026-05-20 16:13:35 +02:00
Anna Larch
adcd78ae16
fix(appstore): address review comments on GenericFileException handling
...
- Attempt delete before logging the warning, so the warning only fires
when we know recovery will succeed
- Log an error (not silently return) when delete itself fails
- Use catch (\Exception) without variable (PHP 8)
- Replace willReturnArgument(1) with explicit willReturn(true) in test
- Add blank lines between logical blocks in test for readability
Signed-off-by: Anna Larch <anna@nextcloud.com>
AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 11:21:22 +02:00
Anna Larch
53b72bdf9d
fix(appstore): catch GenericFileException when reading cache file in Fetcher
...
When the appstore cache file exists but getContent() throws a
GenericFileException (I/O error or OS-level permission failure), explicitly
delete the file and recreate it before writing fresh data — mirroring the
NotFoundException recovery path. If deletion itself fails, return [] cleanly.
Previously, the unhandled exception caused the entire apps settings page to
crash. The new test covers both the recovery path and deletion failure.
Signed-off-by: Anna Larch <anna@nextcloud.com>
AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 11:21:22 +02:00
Enjeck C.
d263d13bcd
feat(occ): make it possible to remove an arbitrary number of users to a group
...
Signed-off-by: Enjeck C. <patrathewhiz@gmail.com>
2026-05-20 09:01:30 +00:00
Arthur Schiwon
c22d4d0be6
feat(occ): make it possible to add an arbitrary number of users to a group
...
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2026-05-20 09:01:30 +00:00
Robin Appelman
3274518b6d
fix: handle NAT64 addresses in isLocalAddress
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-05-19 15:37:20 +00:00
Ferdinand Thiessen
957917035c
Merge pull request #60071 from nextcloud/chore/legacy
...
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (master, main, 8.4, main, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, guests_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / changes (push) Waiting to run
Psalm static code analysis / static-code-analysis (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-security (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-ocp (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-ncu (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-strict (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-summary (push) Blocked by required conditions
chore(OC_App): migrate more legacy function and usage
2026-05-14 22:48:24 +02:00
Benjamin Gaussorgues
91a4172e35
Merge pull request #60225 from nextcloud/remove-cache-order
...
perf: remove unneeded sort in getFolderContentsById
2026-05-13 16:49:24 +02:00
Ferdinand Thiessen
1c23feae3d
refactor: migrate usage of OC_App to AppManager
...
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-05-13 14:01:49 +02:00
Carl Schwan
fcb956b5ab
Merge pull request #59753 from nextcloud/work/carl/remove-orderById
...
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (master, main, 8.4, main, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, guests_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / changes (push) Waiting to run
Psalm static code analysis / static-code-analysis (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-security (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-ocp (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-ncu (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-strict (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-summary (push) Blocked by required conditions
perf(share): Remove useless order by id
2026-05-13 12:21:48 +02:00