@@ -443,6 +443,43 @@ public void when_readme_has_image_link_then_uses_raw_url()
443443 Assert . DoesNotContain ( "/blob/" , readme ) ;
444444 }
445445
446+ [ Fact ]
447+ public void when_readme_has_clickable_image_badge_with_relative_url_then_replaces_url ( )
448+ {
449+ var content = Path . GetTempFileName ( ) ;
450+ File . WriteAllText ( content , "[](osmfeula.txt)" ) ;
451+ task . Contents = new [ ]
452+ {
453+ new TaskItem ( content , new Metadata
454+ {
455+ { MetadataName . PackageId , task . Manifest . GetMetadata ( "Id" ) } ,
456+ { MetadataName . PackFolder , PackFolderKind . None } ,
457+ { MetadataName . PackagePath , "readme.md" }
458+ } ) ,
459+ } ;
460+
461+ task . Manifest . SetMetadata ( "Readme" , "readme.md" ) ;
462+ task . Manifest . SetMetadata ( "RepositoryType" , "git" ) ;
463+ task . Manifest . SetMetadata ( "RepositoryUrl" , "https://github.com/devlooped/nugetizer" ) ;
464+ task . Manifest . SetMetadata ( "RepositorySha" , "abc123def" ) ;
465+
466+ createPackage = true ;
467+ ExecuteTask ( out var manifest ) ;
468+
469+ Assert . NotNull ( manifest ) ;
470+
471+ var file = manifest . Files . FirstOrDefault ( f => Path . GetFileName ( f . Target ) == manifest . Metadata . Readme ) ;
472+ Assert . NotNull ( file ) ;
473+ Assert . True ( File . Exists ( file . Source ) ) ;
474+
475+ var readme = File . ReadAllText ( file . Source ) ;
476+
477+ // Should replace the relative URL in the clickable image badge
478+ Assert . Contains ( "https://raw.githubusercontent.com/devlooped/nugetizer/abc123def/osmfeula.txt" , readme ) ;
479+ // Should preserve the absolute image URL
480+ Assert . Contains ( "https://img.shields.io/badge/EULA-OSMF-blue" , readme ) ;
481+ }
482+
446483 [ Fact ]
447484 public void when_creating_package_with_simple_dependency_then_contains_dependency_group ( )
448485 {
0 commit comments