@@ -69,57 +69,71 @@ func TestParsePackage(t *testing.T) {
69
69
tw .Write ([]byte ("Package: gitea\n Version: 1.0.0\n Architecture: amd64\n " ))
70
70
tw .Close ()
71
71
72
- t .Run ("None" , func (t * testing.T ) {
73
- data := createArchive (map [string ][]byte {"control.tar" : buf .Bytes ()})
74
-
75
- p , err := ParsePackage (data )
76
- assert .NotNil (t , p )
77
- assert .NoError (t , err )
78
- assert .Equal (t , "gitea" , p .Name )
79
- })
80
-
81
- t .Run ("gz" , func (t * testing.T ) {
82
- var zbuf bytes.Buffer
83
- zw := gzip .NewWriter (& zbuf )
84
- zw .Write (buf .Bytes ())
85
- zw .Close ()
86
-
87
- data := createArchive (map [string ][]byte {"control.tar.gz" : zbuf .Bytes ()})
88
-
89
- p , err := ParsePackage (data )
90
- assert .NotNil (t , p )
91
- assert .NoError (t , err )
92
- assert .Equal (t , "gitea" , p .Name )
93
- })
94
-
95
- t .Run ("xz" , func (t * testing.T ) {
96
- var xbuf bytes.Buffer
97
- xw , _ := xz .NewWriter (& xbuf )
98
- xw .Write (buf .Bytes ())
99
- xw .Close ()
100
-
101
- data := createArchive (map [string ][]byte {"control.tar.xz" : xbuf .Bytes ()})
102
-
103
- p , err := ParsePackage (data )
104
- assert .NotNil (t , p )
105
- assert .NoError (t , err )
106
- assert .Equal (t , "gitea" , p .Name )
107
- })
72
+ cases := []struct {
73
+ Extension string
74
+ WriterFactory func (io.Writer ) io.WriteCloser
75
+ }{
76
+ {
77
+ Extension : "" ,
78
+ WriterFactory : func (w io.Writer ) io.WriteCloser {
79
+ return nopCloser {w }
80
+ },
81
+ },
82
+ {
83
+ Extension : ".gz" ,
84
+ WriterFactory : func (w io.Writer ) io.WriteCloser {
85
+ return gzip .NewWriter (w )
86
+ },
87
+ },
88
+ {
89
+ Extension : ".xz" ,
90
+ WriterFactory : func (w io.Writer ) io.WriteCloser {
91
+ xw , _ := xz .NewWriter (w )
92
+ return xw
93
+ },
94
+ },
95
+ {
96
+ Extension : ".zst" ,
97
+ WriterFactory : func (w io.Writer ) io.WriteCloser {
98
+ zw , _ := zstd .NewWriter (w )
99
+ return zw
100
+ },
101
+ },
102
+ }
108
103
109
- t .Run ("zst" , func (t * testing.T ) {
110
- var zbuf bytes.Buffer
111
- zw , _ := zstd .NewWriter (& zbuf )
112
- zw .Write (buf .Bytes ())
113
- zw .Close ()
104
+ for _ , c := range cases {
105
+ t .Run (c .Extension , func (t * testing.T ) {
106
+ var cbuf bytes.Buffer
107
+ w := c .WriterFactory (& cbuf )
108
+ w .Write (buf .Bytes ())
109
+ w .Close ()
110
+
111
+ data := createArchive (map [string ][]byte {"control.tar" + c .Extension : cbuf .Bytes ()})
112
+
113
+ p , err := ParsePackage (data )
114
+ assert .NotNil (t , p )
115
+ assert .NoError (t , err )
116
+ assert .Equal (t , "gitea" , p .Name )
117
+
118
+ t .Run ("TrailingSlash" , func (t * testing.T ) {
119
+ data := createArchive (map [string ][]byte {"control.tar" + c .Extension + "/" : cbuf .Bytes ()})
120
+
121
+ p , err := ParsePackage (data )
122
+ assert .NotNil (t , p )
123
+ assert .NoError (t , err )
124
+ assert .Equal (t , "gitea" , p .Name )
125
+ })
126
+ })
127
+ }
128
+ })
129
+ }
114
130
115
- data := createArchive (map [string ][]byte {"control.tar.zst" : zbuf .Bytes ()})
131
+ type nopCloser struct {
132
+ io.Writer
133
+ }
116
134
117
- p , err := ParsePackage (data )
118
- assert .NotNil (t , p )
119
- assert .NoError (t , err )
120
- assert .Equal (t , "gitea" , p .Name )
121
- })
122
- })
135
+ func (nopCloser ) Close () error {
136
+ return nil
123
137
}
124
138
125
139
func TestParseControlFile (t * testing.T ) {
0 commit comments