@@ -176,6 +176,52 @@ test.serial("Publish a release with generics", async (t) => {
176176 t . true ( gitlab . isDone ( ) ) ;
177177} ) ;
178178
179+ test . serial ( "Publish a release with generics (without label - issue #823)" , async ( t ) => {
180+ const cwd = "test/fixtures/files" ;
181+ const owner = "test_user" ;
182+ const repo = "test_repo" ;
183+ const env = { GITLAB_TOKEN : "gitlab_token" } ;
184+ const nextRelease = { gitHead : "123" , gitTag : "v1.0.0" , notes : "Test release note body" , version : "1.0.0" } ;
185+ const options = { repositoryUrl : `https://gitlab.com/${ owner } /${ repo } .git` } ;
186+ const encodedProjectPath = encodeURIComponent ( `${ owner } /${ repo } ` ) ;
187+ const encodedGitTag = encodeURIComponent ( nextRelease . gitTag ) ;
188+ const encodedVersion = encodeURIComponent ( nextRelease . version ) ;
189+ const uploaded = { file : { url : "/uploads/file.css" } } ;
190+ const generic = { path : "file.css" , target : "generic_package" , status : "hidden" } ;
191+ const assets = [ generic ] ;
192+ const encodedLabel = encodeURIComponent ( generic . path ) ;
193+ const expectedUrl = `https://gitlab.com/api/v4/projects/${ encodedProjectPath } /packages/generic/release/${ encodedVersion } /${ encodedLabel } ` ;
194+ const gitlab = authenticate ( env )
195+ . post ( `/projects/${ encodedProjectPath } /releases` , {
196+ tag_name : nextRelease . gitTag ,
197+ description : nextRelease . notes ,
198+ assets : {
199+ links : [
200+ {
201+ name : "file.css" ,
202+ url : expectedUrl ,
203+ link_type : "package" ,
204+ } ,
205+ ] ,
206+ } ,
207+ } )
208+ . reply ( 200 ) ;
209+ const gitlabUpload = authenticate ( env )
210+ . put (
211+ `/projects/${ encodedProjectPath } /packages/generic/release/${ encodedVersion } /${ encodedLabel } ?status=${ generic . status } &select=package_file` ,
212+ / \. t e s t \s \{ \} / gm
213+ )
214+ . reply ( 200 , uploaded ) ;
215+
216+ const result = await publish ( { assets } , { env, cwd, options, nextRelease, logger : t . context . logger } ) ;
217+
218+ t . is ( result . url , `https://gitlab.com/${ owner } /${ repo } /-/releases/${ encodedGitTag } ` ) ;
219+ t . deepEqual ( t . context . log . args [ 0 ] , [ "Uploaded file: %s (%s)" , expectedUrl , uploaded . file . url ] ) ;
220+ t . deepEqual ( t . context . log . args [ 1 ] , [ "Published GitLab release: %s" , nextRelease . gitTag ] ) ;
221+ t . true ( gitlabUpload . isDone ( ) ) ;
222+ t . true ( gitlab . isDone ( ) ) ;
223+ } ) ;
224+
179225test . serial ( "Publish a release with generics and external storage provider (http)" , async ( t ) => {
180226 const cwd = "test/fixtures/files" ;
181227 const owner = "test_user" ;
0 commit comments