@@ -6,7 +6,6 @@ package nuget
66import (
77 "archive/zip"
88 "bytes"
9- "strings"
109 "testing"
1110
1211 "github.com/stretchr/testify/assert"
@@ -19,6 +18,7 @@ const (
1918 projectURL = "https://gitea.io"
2019 description = "Package Description"
2120 releaseNotes = "Package Release Notes"
21+ readme = "Readme"
2222 repositoryURL = "https://gitea.io/gitea/gitea"
2323 targetFramework = ".NETStandard2.1"
2424 dependencyID = "System.Text.Json"
@@ -36,6 +36,7 @@ const nuspecContent = `<?xml version="1.0" encoding="utf-8"?>
3636 <description>` + description + `</description>
3737 <releaseNotes>` + releaseNotes + `</releaseNotes>
3838 <repository url="` + repositoryURL + `" />
39+ <readme>README.md</readme>
3940 <dependencies>
4041 <group targetFramework="` + targetFramework + `">
4142 <dependency id="` + dependencyID + `" version="` + dependencyVersion + `" exclude="Build,Analyzers" />
@@ -60,75 +61,81 @@ const symbolsNuspecContent = `<?xml version="1.0" encoding="utf-8"?>
6061</package>`
6162
6263func TestParsePackageMetaData (t * testing.T ) {
63- createArchive := func (name , content string ) []byte {
64+ createArchive := func (files map [ string ] string ) []byte {
6465 var buf bytes.Buffer
6566 archive := zip .NewWriter (& buf )
66- w , _ := archive .Create (name )
67- w .Write ([]byte (content ))
67+ for name , content := range files {
68+ w , _ := archive .Create (name )
69+ w .Write ([]byte (content ))
70+ }
6871 archive .Close ()
6972 return buf .Bytes ()
7073 }
7174
7275 t .Run ("MissingNuspecFile" , func (t * testing.T ) {
73- data := createArchive ("dummy.txt" , "" )
76+ data := createArchive (map [ string ] string { "dummy.txt" : "" } )
7477
7578 np , err := ParsePackageMetaData (bytes .NewReader (data ), int64 (len (data )))
7679 assert .Nil (t , np )
7780 assert .ErrorIs (t , err , ErrMissingNuspecFile )
7881 })
7982
8083 t .Run ("MissingNuspecFileInRoot" , func (t * testing.T ) {
81- data := createArchive ("sub/package.nuspec" , "" )
84+ data := createArchive (map [ string ] string { "sub/package.nuspec" : "" } )
8285
8386 np , err := ParsePackageMetaData (bytes .NewReader (data ), int64 (len (data )))
8487 assert .Nil (t , np )
8588 assert .ErrorIs (t , err , ErrMissingNuspecFile )
8689 })
8790
8891 t .Run ("InvalidNuspecFile" , func (t * testing.T ) {
89- data := createArchive ("package.nuspec" , "" )
92+ data := createArchive (map [ string ] string { "package.nuspec" : "" } )
9093
9194 np , err := ParsePackageMetaData (bytes .NewReader (data ), int64 (len (data )))
9295 assert .Nil (t , np )
9396 assert .Error (t , err )
9497 })
9598
9699 t .Run ("InvalidPackageId" , func (t * testing.T ) {
97- data := createArchive ("package.nuspec" , `<?xml version="1.0" encoding="utf-8"?>
100+ data := createArchive (map [ string ] string { "package.nuspec" : `<?xml version="1.0" encoding="utf-8"?>
98101 <package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
99102 <metadata></metadata>
100- </package>` )
103+ </package>` } )
101104
102105 np , err := ParsePackageMetaData (bytes .NewReader (data ), int64 (len (data )))
103106 assert .Nil (t , np )
104107 assert .ErrorIs (t , err , ErrNuspecInvalidID )
105108 })
106109
107110 t .Run ("InvalidPackageVersion" , func (t * testing.T ) {
108- data := createArchive ("package.nuspec" , `<?xml version="1.0" encoding="utf-8"?>
111+ data := createArchive (map [ string ] string { "package.nuspec" : `<?xml version="1.0" encoding="utf-8"?>
109112 <package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
110113 <metadata>
111- <id>` + id + `</id>
114+ <id>` + id + `</id>
112115 </metadata>
113- </package>` )
116+ </package>` } )
114117
115118 np , err := ParsePackageMetaData (bytes .NewReader (data ), int64 (len (data )))
116119 assert .Nil (t , np )
117120 assert .ErrorIs (t , err , ErrNuspecInvalidVersion )
118121 })
119122
120- t .Run ("Valid " , func (t * testing.T ) {
121- data := createArchive ("package.nuspec" , nuspecContent )
123+ t .Run ("MissingReadme " , func (t * testing.T ) {
124+ data := createArchive (map [ string ] string { "package.nuspec" : nuspecContent } )
122125
123126 np , err := ParsePackageMetaData (bytes .NewReader (data ), int64 (len (data )))
124127 assert .NoError (t , err )
125128 assert .NotNil (t , np )
129+ assert .Empty (t , np .Metadata .Readme )
126130 })
127- }
128131
129- func TestParseNuspecMetaData (t * testing.T ) {
130132 t .Run ("Dependency Package" , func (t * testing.T ) {
131- np , err := ParseNuspecMetaData (strings .NewReader (nuspecContent ))
133+ data := createArchive (map [string ]string {
134+ "package.nuspec" : nuspecContent ,
135+ "README.md" : readme ,
136+ })
137+
138+ np , err := ParsePackageMetaData (bytes .NewReader (data ), int64 (len (data )))
132139 assert .NoError (t , err )
133140 assert .NotNil (t , np )
134141 assert .Equal (t , DependencyPackage , np .PackageType )
@@ -139,6 +146,7 @@ func TestParseNuspecMetaData(t *testing.T) {
139146 assert .Equal (t , projectURL , np .Metadata .ProjectURL )
140147 assert .Equal (t , description , np .Metadata .Description )
141148 assert .Equal (t , releaseNotes , np .Metadata .ReleaseNotes )
149+ assert .Equal (t , readme , np .Metadata .Readme )
142150 assert .Equal (t , repositoryURL , np .Metadata .RepositoryURL )
143151 assert .Len (t , np .Metadata .Dependencies , 1 )
144152 assert .Contains (t , np .Metadata .Dependencies , targetFramework )
@@ -148,21 +156,25 @@ func TestParseNuspecMetaData(t *testing.T) {
148156 assert .Equal (t , dependencyVersion , deps [0 ].Version )
149157
150158 t .Run ("NormalizedVersion" , func (t * testing.T ) {
151- np , err := ParseNuspecMetaData (strings .NewReader (`<?xml version="1.0" encoding="utf-8"?>
152- <package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
153- <metadata>
154- <id>test</id>
155- <version>1.04.5.2.5-rc.1+metadata</version>
156- </metadata>
157- </package>` ))
159+ data := createArchive (map [string ]string {"package.nuspec" : `<?xml version="1.0" encoding="utf-8"?>
160+ <package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
161+ <metadata>
162+ <id>test</id>
163+ <version>1.04.5.2.5-rc.1+metadata</version>
164+ </metadata>
165+ </package>` })
166+
167+ np , err := ParsePackageMetaData (bytes .NewReader (data ), int64 (len (data )))
158168 assert .NoError (t , err )
159169 assert .NotNil (t , np )
160170 assert .Equal (t , "1.4.5.2-rc.1" , np .Version )
161171 })
162172 })
163173
164174 t .Run ("Symbols Package" , func (t * testing.T ) {
165- np , err := ParseNuspecMetaData (strings .NewReader (symbolsNuspecContent ))
175+ data := createArchive (map [string ]string {"package.nuspec" : symbolsNuspecContent })
176+
177+ np , err := ParsePackageMetaData (bytes .NewReader (data ), int64 (len (data )))
166178 assert .NoError (t , err )
167179 assert .NotNil (t , np )
168180 assert .Equal (t , SymbolsPackage , np .PackageType )
0 commit comments