@@ -17,6 +17,8 @@ import (
1717const (
1818 name = "gitea/composer-package"
1919 description = "Package Description"
20+ readme = "Package Readme"
21+ comments = "Package Comment"
2022 packageType = "composer-plugin"
2123 author = "Gitea Authors"
2224@@ -41,7 +43,8 @@ const composerContent = `{
4143 },
4244 "require": {
4345 "php": ">=7.2 || ^8.0"
44- }
46+ },
47+ "_comments": "` + comments + `"
4548}`
4649
4750func TestLicenseUnmarshal (t * testing.T ) {
@@ -54,70 +57,91 @@ func TestLicenseUnmarshal(t *testing.T) {
5457 assert .Equal (t , "MIT" , l [0 ])
5558}
5659
60+ func TestCommentsUnmarshal (t * testing.T ) {
61+ var c Comments
62+ assert .NoError (t , json .NewDecoder (strings .NewReader (`["comment"]` )).Decode (& c ))
63+ assert .Len (t , c , 1 )
64+ assert .Equal (t , "comment" , c [0 ])
65+ assert .NoError (t , json .NewDecoder (strings .NewReader (`"comment"` )).Decode (& c ))
66+ assert .Len (t , c , 1 )
67+ assert .Equal (t , "comment" , c [0 ])
68+ }
69+
5770func TestParsePackage (t * testing.T ) {
58- createArchive := func (name , content string ) []byte {
71+ createArchive := func (files map [ string ] string ) []byte {
5972 var buf bytes.Buffer
6073 archive := zip .NewWriter (& buf )
61- w , _ := archive .Create (name )
62- w .Write ([]byte (content ))
74+ for name , content := range files {
75+ w , _ := archive .Create (name )
76+ w .Write ([]byte (content ))
77+ }
6378 archive .Close ()
6479 return buf .Bytes ()
6580 }
6681
6782 t .Run ("MissingComposerFile" , func (t * testing.T ) {
68- data := createArchive ("dummy.txt" , "" )
83+ data := createArchive (map [ string ] string { "dummy.txt" : "" } )
6984
7085 cp , err := ParsePackage (bytes .NewReader (data ), int64 (len (data )))
7186 assert .Nil (t , cp )
7287 assert .ErrorIs (t , err , ErrMissingComposerFile )
7388 })
7489
7590 t .Run ("MissingComposerFileInRoot" , func (t * testing.T ) {
76- data := createArchive ("sub/sub/composer.json" , "" )
91+ data := createArchive (map [ string ] string { "sub/sub/composer.json" : "" } )
7792
7893 cp , err := ParsePackage (bytes .NewReader (data ), int64 (len (data )))
7994 assert .Nil (t , cp )
8095 assert .ErrorIs (t , err , ErrMissingComposerFile )
8196 })
8297
8398 t .Run ("InvalidComposerFile" , func (t * testing.T ) {
84- data := createArchive ("composer.json" , "" )
99+ data := createArchive (map [ string ] string { "composer.json" : "" } )
85100
86101 cp , err := ParsePackage (bytes .NewReader (data ), int64 (len (data )))
87102 assert .Nil (t , cp )
88103 assert .Error (t , err )
89104 })
90105
91- t .Run ("Valid " , func (t * testing.T ) {
92- data := createArchive ("composer.json" , composerContent )
106+ t .Run ("InvalidPackageName " , func (t * testing.T ) {
107+ data := createArchive (map [ string ] string { "composer.json" : "{}" } )
93108
94109 cp , err := ParsePackage (bytes .NewReader (data ), int64 (len (data )))
95- assert .NoError (t , err )
96- assert .NotNil (t , cp )
97- })
98- }
99-
100- func TestParseComposerFile (t * testing.T ) {
101- t .Run ("InvalidPackageName" , func (t * testing.T ) {
102- cp , err := ParseComposerFile (strings .NewReader (`{}` ))
103110 assert .Nil (t , cp )
104111 assert .ErrorIs (t , err , ErrInvalidName )
105112 })
106113
107114 t .Run ("InvalidPackageVersion" , func (t * testing.T ) {
108- cp , err := ParseComposerFile (strings .NewReader (`{"name": "gitea/composer-package", "version": "1.a.3"}` ))
115+ data := createArchive (map [string ]string {"composer.json" : `{"name": "gitea/composer-package", "version": "1.a.3"}` })
116+
117+ cp , err := ParsePackage (bytes .NewReader (data ), int64 (len (data )))
109118 assert .Nil (t , cp )
110119 assert .ErrorIs (t , err , ErrInvalidVersion )
111120 })
112121
122+ t .Run ("InvalidReadmePath" , func (t * testing.T ) {
123+ data := createArchive (map [string ]string {"composer.json" : `{"name": "gitea/composer-package", "readme": "sub/README.md"}` })
124+
125+ cp , err := ParsePackage (bytes .NewReader (data ), int64 (len (data )))
126+ assert .NoError (t , err )
127+ assert .NotNil (t , cp )
128+
129+ assert .Empty (t , cp .Metadata .Readme )
130+ })
131+
113132 t .Run ("Valid" , func (t * testing.T ) {
114- cp , err := ParseComposerFile (strings .NewReader (composerContent ))
133+ data := createArchive (map [string ]string {"composer.json" : composerContent , "README.md" : readme })
134+
135+ cp , err := ParsePackage (bytes .NewReader (data ), int64 (len (data )))
115136 assert .NoError (t , err )
116137 assert .NotNil (t , cp )
117138
118139 assert .Equal (t , name , cp .Name )
119140 assert .Empty (t , cp .Version )
120141 assert .Equal (t , description , cp .Metadata .Description )
142+ assert .Equal (t , readme , cp .Metadata .Readme )
143+ assert .Len (t , cp .Metadata .Comments , 1 )
144+ assert .Equal (t , comments , cp .Metadata .Comments [0 ])
121145 assert .Len (t , cp .Metadata .Authors , 1 )
122146 assert .Equal (t , author , cp .Metadata .Authors [0 ].Name )
123147 assert .Equal (t , email , cp .Metadata .Authors [0 ].Email )
0 commit comments