@@ -6,7 +6,6 @@ package nuget
6
6
import (
7
7
"archive/zip"
8
8
"bytes"
9
- "strings"
10
9
"testing"
11
10
12
11
"github.com/stretchr/testify/assert"
@@ -19,6 +18,7 @@ const (
19
18
projectURL = "https://gitea.io"
20
19
description = "Package Description"
21
20
releaseNotes = "Package Release Notes"
21
+ readme = "Readme"
22
22
repositoryURL = "https://gitea.io/gitea/gitea"
23
23
targetFramework = ".NETStandard2.1"
24
24
dependencyID = "System.Text.Json"
@@ -36,6 +36,7 @@ const nuspecContent = `<?xml version="1.0" encoding="utf-8"?>
36
36
<description>` + description + `</description>
37
37
<releaseNotes>` + releaseNotes + `</releaseNotes>
38
38
<repository url="` + repositoryURL + `" />
39
+ <readme>README.md</readme>
39
40
<dependencies>
40
41
<group targetFramework="` + targetFramework + `">
41
42
<dependency id="` + dependencyID + `" version="` + dependencyVersion + `" exclude="Build,Analyzers" />
@@ -60,85 +61,93 @@ const symbolsNuspecContent = `<?xml version="1.0" encoding="utf-8"?>
60
61
</package>`
61
62
62
63
func TestParsePackageMetaData (t * testing.T ) {
63
- createArchive := func (name , content string ) []byte {
64
+ createArchive := func (files map [ string ] string ) []byte {
64
65
var buf bytes.Buffer
65
66
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
+ }
68
71
archive .Close ()
69
72
return buf .Bytes ()
70
73
}
71
74
72
75
t .Run ("MissingNuspecFile" , func (t * testing.T ) {
73
- data := createArchive ("dummy.txt" , "" )
76
+ data := createArchive (map [ string ] string { "dummy.txt" : "" } )
74
77
75
78
np , err := ParsePackageMetaData (bytes .NewReader (data ), int64 (len (data )))
76
79
assert .Nil (t , np )
77
80
assert .ErrorIs (t , err , ErrMissingNuspecFile )
78
81
})
79
82
80
83
t .Run ("MissingNuspecFileInRoot" , func (t * testing.T ) {
81
- data := createArchive ("sub/package.nuspec" , "" )
84
+ data := createArchive (map [ string ] string { "sub/package.nuspec" : "" } )
82
85
83
86
np , err := ParsePackageMetaData (bytes .NewReader (data ), int64 (len (data )))
84
87
assert .Nil (t , np )
85
88
assert .ErrorIs (t , err , ErrMissingNuspecFile )
86
89
})
87
90
88
91
t .Run ("InvalidNuspecFile" , func (t * testing.T ) {
89
- data := createArchive ("package.nuspec" , "" )
92
+ data := createArchive (map [ string ] string { "package.nuspec" : "" } )
90
93
91
94
np , err := ParsePackageMetaData (bytes .NewReader (data ), int64 (len (data )))
92
95
assert .Nil (t , np )
93
96
assert .Error (t , err )
94
97
})
95
98
96
99
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"?>
98
101
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
99
102
<metadata></metadata>
100
- </package>` )
103
+ </package>` } )
101
104
102
105
np , err := ParsePackageMetaData (bytes .NewReader (data ), int64 (len (data )))
103
106
assert .Nil (t , np )
104
107
assert .ErrorIs (t , err , ErrNuspecInvalidID )
105
108
})
106
109
107
110
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"?>
109
112
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
110
113
<metadata>
111
- <id>` + id + `</id>
114
+ <id>` + id + `</id>
112
115
</metadata>
113
- </package>` )
116
+ </package>` } )
114
117
115
118
np , err := ParsePackageMetaData (bytes .NewReader (data ), int64 (len (data )))
116
119
assert .Nil (t , np )
117
120
assert .ErrorIs (t , err , ErrNuspecInvalidVersion )
118
121
})
119
122
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 } )
122
125
123
126
np , err := ParsePackageMetaData (bytes .NewReader (data ), int64 (len (data )))
124
127
assert .NoError (t , err )
125
128
assert .NotNil (t , np )
129
+ assert .Empty (t , np .Metadata .Readme )
126
130
})
127
- }
128
131
129
- func TestParseNuspecMetaData (t * testing.T ) {
130
132
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 )))
132
139
assert .NoError (t , err )
133
140
assert .NotNil (t , np )
134
141
assert .Equal (t , DependencyPackage , np .PackageType )
142
+ assert .Equal (t , nuspecContent , np .NuspecContent .String ())
135
143
136
144
assert .Equal (t , id , np .ID )
137
145
assert .Equal (t , semver , np .Version )
138
146
assert .Equal (t , authors , np .Metadata .Authors )
139
147
assert .Equal (t , projectURL , np .Metadata .ProjectURL )
140
148
assert .Equal (t , description , np .Metadata .Description )
141
149
assert .Equal (t , releaseNotes , np .Metadata .ReleaseNotes )
150
+ assert .Equal (t , readme , np .Metadata .Readme )
142
151
assert .Equal (t , repositoryURL , np .Metadata .RepositoryURL )
143
152
assert .Len (t , np .Metadata .Dependencies , 1 )
144
153
assert .Contains (t , np .Metadata .Dependencies , targetFramework )
@@ -148,21 +157,25 @@ func TestParseNuspecMetaData(t *testing.T) {
148
157
assert .Equal (t , dependencyVersion , deps [0 ].Version )
149
158
150
159
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>` ))
160
+ data := createArchive (map [string ]string {"package.nuspec" : `<?xml version="1.0" encoding="utf-8"?>
161
+ <package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
162
+ <metadata>
163
+ <id>test</id>
164
+ <version>1.04.5.2.5-rc.1+metadata</version>
165
+ </metadata>
166
+ </package>` })
167
+
168
+ np , err := ParsePackageMetaData (bytes .NewReader (data ), int64 (len (data )))
158
169
assert .NoError (t , err )
159
170
assert .NotNil (t , np )
160
171
assert .Equal (t , "1.4.5.2-rc.1" , np .Version )
161
172
})
162
173
})
163
174
164
175
t .Run ("Symbols Package" , func (t * testing.T ) {
165
- np , err := ParseNuspecMetaData (strings .NewReader (symbolsNuspecContent ))
176
+ data := createArchive (map [string ]string {"package.nuspec" : symbolsNuspecContent })
177
+
178
+ np , err := ParsePackageMetaData (bytes .NewReader (data ), int64 (len (data )))
166
179
assert .NoError (t , err )
167
180
assert .NotNil (t , np )
168
181
assert .Equal (t , SymbolsPackage , np .PackageType )
0 commit comments