aboutsummaryrefslogtreecommitdiff
path: root/tests/Jellyfin.Server.Implementations.Tests/Library
AgeCommit message (Collapse)Author
5 daysBackport pull request #18030 from jellyfin/release-12.zShadowghost
Stop wrong-type alternate version cleanup from recursing Original-merge: af368af0619ab04594169468790a6b61f55543b1 Merged-by: crobibero <cody@robibe.ro> Backported-by: Cody Robibero <cody@robibe.ro>
5 daysBackport pull request #18006 from jellyfin/release-12.zorut34iop
Preserve active scans when requesting a background library refresh Original-merge: 949e0585a65a91f90644a2475c1e1009e5d51e90 Merged-by: crobibero <cody@robibe.ro> Backported-by: Cody Robibero <cody@robibe.ro>
5 daysBackport pull request #17999 from jellyfin/release-12.zShadowghost
Don't queue by-name items for playback and reject source requests for them Original-merge: d3b2542f2193e0350e1dd88a2f3395fe8a9ca6f4 Merged-by: crobibero <cody@robibe.ro> Backported-by: Cody Robibero <cody@robibe.ro>
5 daysBackport pull request #17998 from jellyfin/release-12.zShadowghost
Fix forced-only not overriding remembered subtitles Original-merge: 95d7028f3afdd4419c664e917f43bee685b0ab7e Merged-by: crobibero <cody@robibe.ro> Backported-by: Cody Robibero <cody@robibe.ro>
5 daysBackport pull request #17842 from jellyfin/release-12.zShadowghost
Fix versions of a video still listing separately from their group and preserve manual merges Original-merge: cabec7ec28df671e3bb1c360c32db60b085f4084 Merged-by: crobibero <cody@robibe.ro> Backported-by: Cody Robibero <cody@robibe.ro>
14 daysShare played state across alternate versionsShadowghost
2026-09-01Find dead people and artists by id, not by nameShadowghost
2026-08-28Support anime provider ids on season foldersShadowghost
2026-08-25Fix testsShadowghost
2026-07-27Fix extras naming and version assignmentShadowghost
2026-07-25Merge pull request #17399 from Shadowghost/fix-extra-yearCody Robibero
Fix incorrect year on local trailers
2026-07-25Remove added comments (#17395 review)Paolo Antinori
2026-07-22fix: avoid NRE when sorting by user-dependent keys without a userPaolo Antinori
A query sorted by a user-dependent key (PlayCount, IsFavoriteOrLiked, DatePlayed, IsPlayed, IsUnplayed) but carrying no User caused a NullReferenceException inside UserDataManager.GetUserData, surfacing as "Failed to compare two elements in the array" (InvalidOperationException wrapping the NRE from the LINQ sort) and 500-ing the /Items request. Root cause: LibraryManager.GetComparer assigned comparer.User = user without a null guard, so PlayCountComparer.GetValue called UserDataManager.GetUserData(null, item), dereferencing user.Id. Two-part fix: - LibraryManager.GetComparer: when user is null and the sort key requires a user (IUserBaseItemComparer), substitute the SortName comparer so the result stays deterministic instead of 500-ing. SortName is the project's canonical tiebreaker (ItemsController injects it for album-by-artist). - UserDataManager.GetUserData: ArgumentNullException.ThrowIfNull(user) as defense in depth (matches the existing guards on the SaveUserData overloads in the same file). On master this overload was rewritten to use ResolveUserDataRow, so the NRE dereferences user.Id rather than user.InternalId as on the release branch — same bug, different line. Also fixes DateLastMediaAddedComparer being statically mis-tagged as IUserBaseItemComparer: its GetDate is static and never reads User, so it does not need one. Without this, the SortName fallback above would wrongly engage for DateLastContentAdded on anonymous queries (returning SortName order instead of date order). Re-tagged to IBaseItemComparer and dropped the unused User/UserManager/UserDataManager properties. Tests: - UserDataManagerTests.GetUserData_NullUser_ThrowsArgumentNullException: reproduces the crash (NRE -> now ArgumentNullException). Added to master's existing UserDataManagerTests. - LibraryManagerSortTests.Sort_UserDependentKey_NullUser_FallsBackToSortNameWithoutThrowing: Sort with a user-dependent key + null user no longer throws and returns items ordered by the SortName fallback (direction preserved). - LibraryManagerSortTests.Sort_DateLastContentAdded_NullUser_OrdersByDateNotSortName: guards that DateLastContentAdded still sorts by date with no user (fixture chosen so date-desc and SortName-desc disagree, so a revert is caught). Full Jellyfin.Server.Implementations.Tests suite: 642 passed, 0 failed. Fixes #17393
2026-07-21Fix incorrect year on local trailersShadowghost
2026-07-20Merge pull request #17320 from TaterTechStudios/fix/item-correct-selectorCody Robibero
Fix: Fetch the correct row matching the most up to date file
2026-07-20Merge pull request #17254 from sjakub/attribute_aliasesCody Robibero
Add additional attribute aliases and improve attribute detection
2026-07-15Move GetUserDataBatch to use ResolveUserDataRow when item.UserData isn't ↵Jordan Rushing
preloaded
2026-07-14remove PlaybackPositionTicks from MediaSourceInfoShadowghost
2026-07-13Fix: Fetch the correct row matching the most up to date fileJordan Rushing
2026-07-07Added more aliases for attributesJakub Schmidtke
Adds tvdb alias for tvdbid and imdb alias for imdbid. It also fixes an issue where tmdb alias was being ignored if it was followed by something like "tmdbidfoo". The same issue prevented imdb pattern matching from working, if it was followed by something like "imdbidfoo". It also allows for detecting the first matching occurence, whether it was an alias or not. Finally, it ignores attributes with values consisting of only whitespaces.
2026-06-09Coalesce alternate-version progress onto primary in resume filterShadowghost
2026-05-11Implement multiple versions for episodes.Shadowghost
2026-05-07Add OriginalLanguage as option to PreferredAudioLanguage (#12579)Erik W
* Add OriginalLanguage as option to PreferredAudioLanguage * Support for multiple original languages * Add original audio stream indicator * Fetch OriginalLanguage from TMDB * Adapt to EFCore refactor * Fix PlayDefaultAudioTrack OriginalLanguage behavior * Fix better PlayDefaultAudioTrack OriginalLanguage behavior * Add comment to ItemFields * Improved PlayDefaultAudioTrack behavior * Add migration for original language * Use sting.Equals for string comparisons * Always set dto OriginalLanguage * Remove OriginalLanguage from ItemFields --------- Co-authored-by: Lampan-git <lampan-git@users.noreply.github.com>
2026-05-06Merge branch 'master' into feature/season-provider-id-from-pathBond-009
2026-05-03Implement ignore rule cachingShadowghost
2026-03-25Parse provider IDs from season and episode folder/file namesMarc Brooks
Season and episode directories/files can now include provider ID attributes in their names (e.g. "Season 01 [tvdbid=22222]" or "Show S01E01 [tmdbid=99999].mkv"), consistent with the existing behavior for series folders. Supported providers: imdbid, tvdbid, tvmazeid, tmdbid. Adds TmdbSeasonExternalId and TmdbEpisodeExternalId so that the TMDB season and episode IDs are surfaced in the metadata editor. Seasons do not have their own IMDb IDs, so we don't support imdbid parsing in SeasonResolver. Instead, generate IMDb season URLs via ImdbExternalUrlProvider using the parent series' IMDb ID and the season number, matching the IMDb URL format: imdb.com/title/{seriesId}/episodes/?season={N} Add tests for the ExternalUrlProviders.
2026-02-02Merge pull request #14927 from nileshp87/patch-1Bond-009
Add curly brace and parentheses support for parsing attribute values
2026-02-02Fix testsBond-009
2026-01-28Backport pull request #16077 from jellyfin/release-10.11.ztheguymadmax
Revert hidden directory ignore pattern Original-merge: 644327eb762a907328c68ab9f5d61a151cd96897 Merged-by: crobibero <cody@robibe.ro> Backported-by: Bond_009 <bond.009@outlook.com>
2026-01-18Backport pull request #16029 from jellyfin/release-10.11.ztheguymadmax
Skip hidden directories and .ignore paths in library monitoring Original-merge: 2cb7fb52d2221d9daa39206089b578c2c0fcb549 Merged-by: crobibero <cody@robibe.ro> Backported-by: Bond_009 <bond.009@outlook.com>
2025-12-28Backport pull request #15746 from jellyfin/release-10.11.zShadowghost
Skip invalid ignore rules Original-merge: 6e60634c9f078cc01e343b07a0a6b2a5c230478c Merged-by: crobibero <cody@robibe.ro> Backported-by: Bond_009 <bond.009@outlook.com>
2025-12-10Add curly brace and parentheses support for parsing attribute values from pathsNilesh Patel
2025-07-26Enhance extra rules for video and audio file naming; update tests for new ↵Sven Cazier
naming conventions
2025-04-26Add .gitignore style ignoring (#13906)Tim Eisele
2024-04-13Chore: Adds unit tests to support (#11351)Jordan Fearnley
2023-12-18Fix testsBond_009
2023-12-08Convert CollectionType to use lowercase enum namesCody Robibero
2023-11-09Convert CollectionType, SpecialFolderType to enum (#9764)Cody Robibero
* Convert CollectionType, SpecialFolderType to enum * Hide internal enum CollectionType values * Apply suggestions from code review Co-authored-by: Shadowghost <Shadowghost@users.noreply.github.com> * Fix recent change * Update Jellyfin.Data/Attributes/OpenApiIgnoreEnumAttribute.cs Co-authored-by: Patrick Barron <barronpm@gmail.com> --------- Co-authored-by: Shadowghost <Shadowghost@users.noreply.github.com> Co-authored-by: Patrick Barron <barronpm@gmail.com>
2023-10-08Reduce string literal length by using verbatim stringStepan Goremykin
2023-09-27Ignore .zfs folderBond_009
Maybe helps with #10215 ?
2023-03-30Add DLL whitelist support for pluginsAmbulantRex
2023-03-18Add test for cleaning extra namesSenorSmartyPants
2023-03-06Fix cases where multiple files are resolved as a single bookJoe Rogers
2023-03-06Add tests for audio book resolvingJoe Rogers
2023-03-06Inject IDirectoryService where needed instead of passing it through ↵Joe Rogers
ItemResolveArgs
2023-03-06Remove some BaseItem references to make ItemResolveArgs more usable for testing.Joe Rogers
2023-01-07Deduplicate media stream ordering code (#9014)Bond-009
2022-12-14Fix debug builds (#8909)Bond-009
2022-05-17Fix default audio selection ignoring typeJoe Rogers
2022-04-30Add tests for preferred audio language selectionJoe Rogers