@@ -3,15 +3,19 @@ import path from "path";
33import * as core from "@actions/core" ;
44import * as artifact from "@actions/artifact" ;
55import { filesize } from "filesize" ;
6- import tar from "tar" ;
6+ import * as tar from "tar" ;
77import { describe , it , expect , vi } from "vitest" ;
88
99import uploadArtifact from "../src/upload-artifact" ;
1010import { getCacheKeyHash } from "../src/cache-functions" ;
1111import { EnvironmentVariables } from "../src/types/env-functions" ;
1212
1313vi . mock ( "@actions/core" ) ;
14- vi . mock ( "@actions/artifact" ) ;
14+ vi . mock ( "@actions/artifact" , ( ) => ( {
15+ DefaultArtifactClient : vi . fn ( ) . mockImplementation ( ( ) => ( {
16+ uploadArtifact : vi . fn ( ) ,
17+ } ) ) ,
18+ } ) ) ;
1519vi . mock ( "tar" ) ;
1620
1721const getArtifactName = (
@@ -80,9 +84,7 @@ const emptyObject = {};
8084
8185const uploadResult = ( ) =>
8286 Promise . resolve ( {
83- artifactName,
8487 size,
85- failedItems : [ ] ,
8688 } ) ;
8789
8890describe ( "uploadArtifact" , ( ) => {
@@ -93,7 +95,7 @@ describe("uploadArtifact", () => {
9395 ...env ,
9496 } ;
9597
96- ( artifact . create as vi . Mock ) . mockImplementationOnce ( ( ) => ( {
98+ ( artifact . DefaultArtifactClient as vi . Mock ) . mockImplementation ( ( ) => ( {
9799 uploadArtifact : uploadResult ,
98100 } ) ) ;
99101
@@ -146,14 +148,21 @@ describe("uploadArtifact", () => {
146148 ...env ,
147149 } ;
148150
149- const coverageArtifactName = `coverage-${ repo } -${ os } -${ compiler } ` ;
151+ const cacheKeySha = getCacheKeyHash (
152+ `coverage-${ repo } ` ,
153+ cacheSuffix ,
154+ env ,
155+ { } ,
156+ cmakeOptions ,
157+ sha ,
158+ ) ;
159+
160+ const coverageArtifactName = `${ os } -${ compiler } -coverage-${ repo } -${ cacheKeySha } ` ;
150161
151- ( artifact . create as vi . Mock ) . mockImplementationOnce ( ( ) => ( {
162+ ( artifact . DefaultArtifactClient as vi . Mock ) . mockImplementation ( ( ) => ( {
152163 uploadArtifact : ( ) =>
153164 Promise . resolve ( {
154- artifactName : coverageArtifactName ,
155165 size,
156- failedItems : [ ] ,
157166 } ) ,
158167 } ) ) ;
159168
@@ -169,7 +178,7 @@ describe("uploadArtifact", () => {
169178
170179 const isUploaded = await uploadArtifact (
171180 `coverage-${ packageName } ` ,
172- packageName ,
181+ `coverage- ${ packageName } ` ,
173182 sha ,
174183 installDir ,
175184 null ,
@@ -197,12 +206,10 @@ describe("uploadArtifact", () => {
197206
198207 const ecbuildArtifactName = `ecbuild-${ os } -cmake-${ testEnv . CMAKE_VERSION } -${ sha } ` ;
199208
200- ( artifact . create as vi . Mock ) . mockImplementationOnce ( ( ) => ( {
209+ ( artifact . DefaultArtifactClient as vi . Mock ) . mockImplementation ( ( ) => ( {
201210 uploadArtifact : ( ) =>
202211 Promise . resolve ( {
203- artifactName : ecbuildArtifactName ,
204212 size,
205- failedItems : [ ] ,
206213 } ) ,
207214 } ) ) ;
208215
@@ -290,7 +297,7 @@ describe("uploadArtifact", () => {
290297 ...env ,
291298 } ;
292299
293- ( artifact . create as vi . Mock ) . mockImplementation ( ( ) => ( {
300+ ( artifact . DefaultArtifactClient as vi . Mock ) . mockImplementation ( ( ) => ( {
294301 uploadArtifact : uploadResult ,
295302 } ) ) ;
296303
@@ -333,9 +340,11 @@ describe("uploadArtifact", () => {
333340 ...env ,
334341 } ;
335342
336- ( artifact . create as vi . Mock ) . mockImplementationOnce ( ( ) => ( {
337- uploadArtifact : uploadResult ,
338- } ) ) ;
343+ ( artifact . DefaultArtifactClient as vi . Mock ) . mockImplementation (
344+ ( ) => ( {
345+ uploadArtifact : uploadResult ,
346+ } ) ,
347+ ) ;
339348
340349 const statSync = vi . spyOn ( fs , "statSync" ) ;
341350 ( statSync as vi . Mock ) . mockImplementationOnce ( ( ) => ( {
@@ -369,7 +378,7 @@ describe("uploadArtifact", () => {
369378
370379 expect ( isUploaded ) . toBe ( false ) ;
371380
372- ( artifact . create as vi . Mock ) . mockReset ( ) ;
381+ ( artifact . DefaultArtifactClient as vi . Mock ) . mockReset ( ) ;
373382
374383 if ( ! ( error instanceof Error ) ) return ;
375384 expect ( core . warning ) . toHaveBeenCalledWith (
@@ -378,61 +387,14 @@ describe("uploadArtifact", () => {
378387 } ,
379388 ) ;
380389
381- it ( "returns false if artifact item upload has some failures" , async ( ) => {
382- expect . assertions ( 2 ) ;
383-
384- const testEnv = {
385- ...env ,
386- } ;
387-
388- ( artifact . create as vi . Mock ) . mockImplementationOnce ( ( ) => ( {
389- uploadArtifact : ( ) =>
390- Promise . resolve ( {
391- artifactName,
392- size,
393- failedItems : [ artifactName ] ,
394- } ) ,
395- } ) ) ;
396-
397- const statSync = vi . spyOn ( fs , "statSync" ) ;
398- ( statSync as vi . Mock ) . mockImplementationOnce ( ( ) => ( {
399- size,
400- } ) ) ;
401-
402- const writeFileSync = vi . spyOn ( fs , "writeFileSync" ) ;
403- writeFileSync . mockImplementationOnce ( ( path : string ) => {
404- if ( path === dependenciesPath ) return true ;
405- } ) ;
406-
407- const isUploaded = await uploadArtifact (
408- repository ,
409- packageName ,
410- sha ,
411- installDir ,
412- dependencies ,
413- os ,
414- compiler ,
415- testEnv ,
416- { } ,
417- githubToken ,
418- cacheSuffix ,
419- cmakeOptions ,
420- ) ;
421-
422- expect ( isUploaded ) . toBe ( false ) ;
423- expect ( core . warning ) . toHaveBeenCalledWith (
424- `Error uploading artifact for ${ repo } : ${ artifactName } ` ,
425- ) ;
426- } ) ;
427-
428390 it ( "returns false if artifact item upload returns empty result" , async ( ) => {
429391 expect . assertions ( 2 ) ;
430392
431393 const testEnv = {
432394 ...env ,
433395 } ;
434396
435- ( artifact . create as vi . Mock ) . mockImplementationOnce ( ( ) => ( {
397+ ( artifact . DefaultArtifactClient as vi . Mock ) . mockImplementation ( ( ) => ( {
436398 uploadArtifact : ( ) => Promise . resolve ( ) ,
437399 } ) ) ;
438400
@@ -480,9 +442,11 @@ describe("uploadArtifact", () => {
480442 ...env ,
481443 } ;
482444
483- ( artifact . create as vi . Mock ) . mockImplementationOnce ( ( ) => ( {
484- uploadArtifact : ( ) => Promise . reject ( error ) ,
485- } ) ) ;
445+ ( artifact . DefaultArtifactClient as vi . Mock ) . mockImplementation (
446+ ( ) => ( {
447+ uploadArtifact : ( ) => Promise . reject ( error ) ,
448+ } ) ,
449+ ) ;
486450
487451 const statSync = vi . spyOn ( fs , "statSync" ) ;
488452 ( statSync as vi . Mock ) . mockImplementationOnce ( ( ) => ( {
0 commit comments