aboutsummaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)Author
2026-04-26Add test for keyframe duration overshoot clampingDylan Dellett-Wion
2026-04-25Honor episode NFO season during metadata mergeitz4blitz
Path-derived season numbers could win over explicit provider metadata during episode refresh, causing episodes to appear in the wrong season. Prefer provider-supplied season numbers in the provider merge phases without letting later backfill merges clobber them.
2026-04-25Fix dummy chapter handling for videos with a single chapter.ExpctING
2026-04-24Merge pull request #16666 from Shadowghost/xunit3Bond-009
Upgrade to xunit v3
2026-04-19Upgrade to xunit v3Shadowghost
2026-04-19Merge remote-tracking branch 'upstream/master' into perf-rebasedShadowghost
2026-04-15Added Tanzania countries.json (#14406)Eliya Wolfram Konzo
* Update countries.json Added Tanzania * Fix order countries.json * Fix tests --------- Co-authored-by: Bond_009 <bond.009@outlook.com>
2026-04-15fix: retain subtitles spanning HLS segment boundaries (#16594)Hilmar Gústafsson
fix: retain subtitles spanning HLS segment boundaries
2026-04-11Merge pull request #16380 from LTe/fix-subtitle-extraction-settingBond-009
Respect EnableSubtitleExtraction setting in subtitle delivery
2026-04-08Fix language display for ISO 639-2-only codes (e.g. mul, und)Lasath Fernando
LoadCultures() in LocalizationManager skipped all iso6392.txt entries without a two-letter ISO 639-1 code, dropping 302 of 496 languages including mul (Multiple languages), und (Undetermined), mis (Uncoded languages), zxx, and many real languages like Achinese, Akkadian, etc. This caused FindLanguageInfo() to return null for these codes, which meant: - ExternalPathParser could not recognize them as valid language codes in subtitle filenames, so the Language field was never set - DisplayTitle fell back to the raw code string (e.g. "Mul") Fix by allowing entries without two-letter codes to be loaded with an empty TwoLetterISOLanguageName. Also set LocalizedLanguage in ProbeResultNormalizer for ffprobe-detected streams (the DB repository path was already handled on master).
2026-04-07Merge remote-tracking branch 'upstream/master' into perf-rebasedShadowghost
2026-04-04Merge pull request #15902 from ZeusCraft10/fix/udp-discovery-cross-subnet-ipv6Joshua M. Boniface
2026-03-29fix(dto): prefer PlaylistsFolder primary image for playlists tilesBeatriz Teixeira
This patch fixes issue #16032 where the Playlists media folder ignored a user-uploaded Primary image and kept showing the generated collage. The root cause was DTO image precedence on UserView items for CollectionType.playlists. We now prefer the display parent (PlaylistsFolder) Primary image when available by clearing the UserView Primary tag and setting ParentPrimaryImageItemId/ParentPrimaryImageTag. Added tests cover both paths: parent custom image preferred, and fallback to existing UserView Primary when parent has none.
2026-03-29Only set IsAvc for video streamsBond_009
Also enables nullable for MediaStreamInfo Makes more properties nullable that aren't always present
2026-03-29recognize underscore and dot separators for multi-version grouping (#16465)upscaylman
* Add underscore and dot as multi-version file separators Extend IsEligibleForMultiVersion to recognize _ and . as valid separators between the base movie name and the version suffix. Common naming patterns like 'Movie_4K.mkv' or 'Movie.UHD.mkv' are now correctly grouped as alternate versions during library scan. * Address review: remove comment, add 3D recognition assertions --------- Co-authored-by: aimarshall615-creator <aimarshall615@gmail.com>
2026-03-27Merge pull request #16222 from tyage/fix/filename-truncation-bracketed-tagsBond-009
Fix filename truncation when bracketed tags appear mid-filename
2026-03-26Fix triple digit episode number handlingShadowghost
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-03-25Fix #16308: Community ratings not updating after changing .nfo file.Francisco Ernesto Planas Pestana
When "replace all metadata" was issued on a film, with the Web metadata scrapers and "save to local metadata" disabled, after changing the .nfo file, 'Community rating' was not updated in the server, remaining the cached value. Fixed by changing the flag on the 'MergeData' call (line 809 - MetadataService.cs) to use the option defined by the user and not the erroneous absolute 'false' value. Also, in the .nfo parser an option for 'communityrating' was added along with value conformity verifiers. Validation tests were added.
2026-03-13Merge pull request #16368 from redinsch/fix/image-language-priorityBond-009
Fix remote image language priority to prefer English over no-language
2026-03-13Respect EnableSubtitleExtraction setting in subtitle deliveryPiotr Niełacny
Wire up EnableSubtitleExtraction config to MediaEncoder.CanExtractSubtitles so the setting is actually respected. Gate subtitle extraction check behind PlayMethod.Transcode since DirectPlay has no competing ffmpeg process. Add parameterized tests for StreamBuilder.GetSubtitleProfile covering text and graphical codecs, profile format matching, and extraction setting behavior. Remove misplaced SubtitleEncoder extraction test.
2026-03-11Return BadRequest when an invalid set of filters is givenBond_009
2026-03-11Merge remote-tracking branch 'upstream/master' into perf-rebasedShadowghost
2026-03-08Use file-scoped namespace in EnumerableExtensionsTestsredinsch
2026-03-08Fix remote image language priority to prefer English over no-languageredinsch
Previously, images with no language were ranked higher (score 3) than English images (score 2), causing poorly rated languageless images to be selected over well-rated English alternatives for posters and logos. Swap the priority so English is preferred over no-language images. Backdrop images are unaffected as they have their own dedicated sorting. Add unit tests for OrderByLanguageDescending. Fixes #13310
2026-03-02If we have a country code in the rating, treat as unrated if the country ↵Shadowghost
does not have the rating
2026-03-01Fix StyleCop and xUnit analyzer errorsNoFear0411
- Add missing param and returns XML doc tags (SA1611, SA1615) - Remove trailing alignment whitespace in test attributes (SA1025) - Use nullable string parameter for null test case (xUnit1012)
2026-03-01Add startup mode to migrate or seed the database on cmdJPVenson
2026-03-01Fix near-1:1 SAR values falsely flagged as anamorphicNoFear0411
Encoders sometimes produce sample aspect ratios like 3201:3200 (0.03% off square) for content that has effectively square pixels. The exact string comparison against "1:1" marks these as anamorphic, which triggers unnecessary transcoding on clients that require non-anamorphic video. Parse the SAR ratio numerically and treat values within 1% of 1:1 as square pixels. This threshold is well clear of the nearest real anamorphic SAR (PAL 4:3 at 16:15 = 6.67% off).
2026-02-27Merge remote-tracking branch 'upstream/master' into perf-rebasedShadowghost
2026-02-18Fix malformed query string in StreamInfo.ToUrl() causing 500 error via proxiesCosmin Dumitru
StreamInfo.ToUrl() generated URLs like `/master.m3u8?&DeviceId=...` (note `?&`) because `?` was appended to the path and all parameters started with `&`. When the first optional parameter (DeviceProfileId) was null, the result was a malformed query string. This is harmless when clients hit Jellyfin directly (ASP.NET Core tolerates `?&`), but when accessed through a reverse proxy that parses and re-serializes the URL (e.g. Home Assistant ingress via aiohttp/yarl), `?&` becomes `?=&` — introducing an empty-key query parameter. ParseStreamOptions then crashes on `param.Key[0]` with IndexOutOfRangeException. Changes: - StreamInfo.ToUrl(): Track query start position and replace the first `&` with `?` after all parameters are appended, producing valid query strings - ParseStreamOptions: Guard against empty query parameter keys - Tests: Remove .Replace("?&", "?") workaround that masked the bug Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12Fix filename truncation when bracketed tags appear mid-filenametyage
2026-02-07Merge remote-tracking branch 'upstream/master' into perf-rebasedShadowghost
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-30Merge remote-tracking branch 'upstream/master' into perf-rebasedShadowghost
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-19Fix GetMediaSourceName_Valid testShadowghost
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>
2026-01-18Fix zh-CN subtitle language display (#15947)Bond-009
The DisplayTitle property was using .NET's CultureInfo.GetCultures(NeutralCultures) to resolve language display names. Since zh-CN is a specific culture (not neutral), it would fall back to the base 'zh' code, resulting in generic 'Chinese' instead of 'Chinese (Simplified)'. This change adds a LocalizedLanguage property to MediaStream that gets populated via LocalizationManager.FindLanguageInfo() when streams are retrieved from the database. This leverages Jellyfin's existing iso6392.txt mappings which correctly map zh-CN to 'Chinese (Simplified)'. The same pattern is already used for other localized strings like LocalizedDefault and LocalizedExternal.
2026-01-18Merge pull request #15926 from abitofevrything/feat/accurate_hls_seekingAbitofevrything
Refactor HLS transcode seeking
2026-01-14Replace AlphanumericComparator with new CompareOptions.NumericOrderingBond_009
2026-01-14Fix testsBond_009
2026-01-14Update to .NET 10.0Bond_009
2026-01-09Merge pull request #15956 from ↵Bond-009
ZeusCraft10/fix/issue-15945-unknown-type-deserialization fix: Handle unknown item types gracefully in DeserializeBaseItem
2026-01-05Fix KeyNotFoundException in CryptographyProvider.VerifyZeusCraft10
When a password hash is missing the 'iterations' parameter, Verify now throws a descriptive FormatException instead of KeyNotFoundException. - Extract GetIterationsParameter() helper method to avoid code duplication - Provide distinct error messages for missing vs invalid parameters - Add comprehensive unit tests for CryptographyProvider
2026-01-05fix: Handle unknown item types gracefully in DeserializeBaseItemZeusCraft10
When querying items with recursive=true, items with types from removed plugins would cause a 500 error. Now these items are skipped with a warning log instead of throwing an exception. Fixes #15945
2026-01-05Fix zh-CN subtitle language displayZeusCraft10
The DisplayTitle property was using .NET's CultureInfo.GetCultures(NeutralCultures) to resolve language display names. Since zh-CN is a specific culture (not neutral), it would fall back to the base 'zh' code, resulting in generic 'Chinese' instead of 'Chinese (Simplified)'. This change adds a LocalizedLanguage property to MediaStream that gets populated via LocalizationManager.FindLanguageInfo() when streams are retrieved from the database. This leverages Jellyfin's existing iso6392.txt mappings which correctly map zh-CN to 'Chinese (Simplified)'. The same pattern is already used for other localized strings like LocalizedDefault and LocalizedExternal.
2025-12-30Fix UDP Auto-Discovery returning IPv6 for cross-subnet IPv4 requestsZeusCraft10
Fixes #15898 When a UDP discovery request is relayed from a different IPv4 subnet, GetBindAddress() now correctly returns an IPv4 address instead of incorrectly falling back to ::1. Changes: - Loopback fallback now prefers address family matching the source IP - Interface fallback now prefers interfaces matching source address family - Added test case for cross-subnet IPv4 request scenario
2025-12-28Backport pull request #15807 from jellyfin/release-10.11.zgnattu
Enforce more strict webm check Original-merge: 8379b4634aeaf9827d07a41cf9ba8fd80c8c323e Merged-by: crobibero <cody@robibe.ro> Backported-by: Bond_009 <bond.009@outlook.com>