@@ -17,6 +17,8 @@ import (
17
17
const (
18
18
name = "gitea/composer-package"
19
19
description = "Package Description"
20
+ readme = "Package Readme"
21
+ comments = "Package Comment"
20
22
packageType = "composer-plugin"
21
23
author = "Gitea Authors"
22
24
@@ -41,7 +43,8 @@ const composerContent = `{
41
43
},
42
44
"require": {
43
45
"php": ">=7.2 || ^8.0"
44
- }
46
+ },
47
+ "_comments": "` + comments + `"
45
48
}`
46
49
47
50
func TestLicenseUnmarshal (t * testing.T ) {
@@ -54,70 +57,91 @@ func TestLicenseUnmarshal(t *testing.T) {
54
57
assert .Equal (t , "MIT" , l [0 ])
55
58
}
56
59
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
+
57
70
func TestParsePackage (t * testing.T ) {
58
- createArchive := func (name , content string ) []byte {
71
+ createArchive := func (files map [ string ] string ) []byte {
59
72
var buf bytes.Buffer
60
73
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
+ }
63
78
archive .Close ()
64
79
return buf .Bytes ()
65
80
}
66
81
67
82
t .Run ("MissingComposerFile" , func (t * testing.T ) {
68
- data := createArchive ("dummy.txt" , "" )
83
+ data := createArchive (map [ string ] string { "dummy.txt" : "" } )
69
84
70
85
cp , err := ParsePackage (bytes .NewReader (data ), int64 (len (data )))
71
86
assert .Nil (t , cp )
72
87
assert .ErrorIs (t , err , ErrMissingComposerFile )
73
88
})
74
89
75
90
t .Run ("MissingComposerFileInRoot" , func (t * testing.T ) {
76
- data := createArchive ("sub/sub/composer.json" , "" )
91
+ data := createArchive (map [ string ] string { "sub/sub/composer.json" : "" } )
77
92
78
93
cp , err := ParsePackage (bytes .NewReader (data ), int64 (len (data )))
79
94
assert .Nil (t , cp )
80
95
assert .ErrorIs (t , err , ErrMissingComposerFile )
81
96
})
82
97
83
98
t .Run ("InvalidComposerFile" , func (t * testing.T ) {
84
- data := createArchive ("composer.json" , "" )
99
+ data := createArchive (map [ string ] string { "composer.json" : "" } )
85
100
86
101
cp , err := ParsePackage (bytes .NewReader (data ), int64 (len (data )))
87
102
assert .Nil (t , cp )
88
103
assert .Error (t , err )
89
104
})
90
105
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" : "{}" } )
93
108
94
109
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 (`{}` ))
103
110
assert .Nil (t , cp )
104
111
assert .ErrorIs (t , err , ErrInvalidName )
105
112
})
106
113
107
114
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 )))
109
118
assert .Nil (t , cp )
110
119
assert .ErrorIs (t , err , ErrInvalidVersion )
111
120
})
112
121
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
+
113
132
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 )))
115
136
assert .NoError (t , err )
116
137
assert .NotNil (t , cp )
117
138
118
139
assert .Equal (t , name , cp .Name )
119
140
assert .Empty (t , cp .Version )
120
141
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 ])
121
145
assert .Len (t , cp .Metadata .Authors , 1 )
122
146
assert .Equal (t , author , cp .Metadata .Authors [0 ].Name )
123
147
assert .Equal (t , email , cp .Metadata .Authors [0 ].Email )
0 commit comments