Skip to content

Commit

Permalink
Address review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
Phantsure authored Nov 14, 2022
1 parent 7181b91 commit 5548416
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 12 deletions.
15 changes: 8 additions & 7 deletions packages/cache/__tests__/tar.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ jest.mock('@actions/io')

const IS_WINDOWS = process.platform === 'win32'
const IS_MAC = process.platform === 'darwin'
const windowsGnuTar = `${process.env['PROGRAMFILES']}\\Git\\usr\\bin\\tar.exe`

const defaultTarPath = process.platform === 'darwin' ? 'gtar' : 'tar'

Expand Down Expand Up @@ -46,7 +47,7 @@ test('zstd extract tar', async () => {
: 'cache.tar'
const workspace = process.env['GITHUB_WORKSPACE']
const tarPath = IS_WINDOWS
? `${process.env['PROGRAMFILES']}\\Git\\usr\\bin\\tar.exe`
? windowsGnuTar
: defaultTarPath

await tar.extractTar(archivePath, CompressionMethod.Zstd)
Expand Down Expand Up @@ -82,7 +83,7 @@ test('gzip extract tar', async () => {

expect(mkdirMock).toHaveBeenCalledWith(workspace)
const tarPath = IS_WINDOWS
? `${process.env['PROGRAMFILES']}\\Git\\usr\\bin\\tar.exe`
? windowsGnuTar
: defaultTarPath
expect(execMock).toHaveBeenCalledTimes(1)
expect(execMock).toHaveBeenCalledWith(
Expand Down Expand Up @@ -144,7 +145,7 @@ test('zstd create tar', async () => {
await tar.createTar(archiveFolder, sourceDirectories, CompressionMethod.Zstd)

const tarPath = IS_WINDOWS
? `${process.env['PROGRAMFILES']}\\Git\\usr\\bin\\tar.exe`
? windowsGnuTar
: defaultTarPath

expect(execMock).toHaveBeenCalledTimes(1)
Expand Down Expand Up @@ -184,7 +185,7 @@ test('gzip create tar', async () => {
await tar.createTar(archiveFolder, sourceDirectories, CompressionMethod.Gzip)

const tarPath = IS_WINDOWS
? `${process.env['PROGRAMFILES']}\\Git\\usr\\bin\\tar.exe`
? windowsGnuTar
: defaultTarPath

expect(execMock).toHaveBeenCalledTimes(1)
Expand Down Expand Up @@ -221,7 +222,7 @@ test('zstd list tar', async () => {
await tar.listTar(archivePath, CompressionMethod.Zstd)

const tarPath = IS_WINDOWS
? `${process.env['PROGRAMFILES']}\\Git\\usr\\bin\\tar.exe`
? windowsGnuTar
: defaultTarPath
expect(execMock).toHaveBeenCalledTimes(1)
expect(execMock).toHaveBeenCalledWith(
Expand Down Expand Up @@ -249,7 +250,7 @@ test('zstdWithoutLong list tar', async () => {
await tar.listTar(archivePath, CompressionMethod.ZstdWithoutLong)

const tarPath = IS_WINDOWS
? `${process.env['PROGRAMFILES']}\\Git\\usr\\bin\\tar.exe`
? windowsGnuTar
: defaultTarPath
expect(execMock).toHaveBeenCalledTimes(1)
expect(execMock).toHaveBeenCalledWith(
Expand All @@ -276,7 +277,7 @@ test('gzip list tar', async () => {
await tar.listTar(archivePath, CompressionMethod.Gzip)

const tarPath = IS_WINDOWS
? `${process.env['PROGRAMFILES']}\\Git\\usr\\bin\\tar.exe`
? windowsGnuTar
: defaultTarPath
expect(execMock).toHaveBeenCalledTimes(1)
expect(execMock).toHaveBeenCalledWith(
Expand Down
11 changes: 6 additions & 5 deletions packages/cache/src/internal/tar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,15 @@ async function getTarPath(
args: string[],
compressionMethod: CompressionMethod
): Promise<string> {
var tarPath = await io.which('tar', true)
switch (process.platform) {
case 'win32': {
const systemTar = `${process.env['windir']}\\System32\\tar.exe`
const gnuTar = `${process.env['PROGRAMFILES']}\\Git\\usr\\bin\\tar.exe`
const systemTar = `${process.env['windir']}\\System32\\tar.exe`
if (existsSync(gnuTar)) {
// Use GNUtar as default on windows
args.push('--force-local')
return gnuTar
tarPath = gnuTar
} else if (
compressionMethod !== CompressionMethod.Gzip ||
(await utils.isGnuTarInstalled())
Expand All @@ -27,7 +28,7 @@ async function getTarPath(
// a bug with compressing large files with bsdtar + zstd
args.push('--force-local')
} else if (existsSync(systemTar)) {
return systemTar
tarPath = systemTar
}
break
}
Expand All @@ -36,14 +37,14 @@ async function getTarPath(
if (gnuTar) {
// fix permission denied errors when extracting BSD tar archive with GNU tar - https://github.com/actions/cache/issues/527
args.push('--delay-directory-restore')
return gnuTar
tarPath = gnuTar
}
break
}
default:
break
}
return await io.which('tar', true)
return tarPath
}

async function execTar(
Expand Down

0 comments on commit 5548416

Please sign in to comment.