import {promises as fs} from 'fs' import * as path from 'path' import * as cacheUtils from '../src/internal/cacheUtils' beforeEach(() => { jest.resetModules() }); test('getArchiveFileSizeInBytes returns file size', () => { const filePath = path.join(__dirname, '__fixtures__', 'helloWorld.txt') const size = cacheUtils.getArchiveFileSizeInBytes(filePath) expect(size).toBe(11) }) test('unlinkFile unlinks file', async () => { const testDirectory = await fs.mkdtemp('unlinkFileTest') const testFile = path.join(testDirectory, 'test.txt') await fs.writeFile(testFile, 'hello world') await expect(fs.stat(testFile)).resolves.not.toThrow() await cacheUtils.unlinkFile(testFile) // This should throw as testFile should not exist await expect(fs.stat(testFile)).rejects.toThrow() await fs.rmdir(testDirectory) }) test('assertDefined throws if undefined', () => { expect(() => cacheUtils.assertDefined('test', undefined)).toThrowError() }) test('assertDefined returns value', () => { expect(cacheUtils.assertDefined('test', 5)).toBe(5) }) test('resolvePaths works on github workspace directory', async () => { const workspace = process.env['GITHUB_WORKSPACE'] ?? '.' const paths = await cacheUtils.resolvePaths([workspace]) expect(paths.length).toBeGreaterThan(0) }) test('isGhes returns false for github.com', async () => { process.env.GITHUB_SERVER_URL = 'https://github.com' expect(cacheUtils.isGhes()).toBe(false) }) test('isGhes returns false for ghe.com', async () => { process.env.GITHUB_SERVER_URL = 'https://somedomain.ghe.com' expect(cacheUtils.isGhes()).toBe(false) }) test('isGhes returns true for enterprise URL', async () => { process.env.GITHUB_SERVER_URL = 'https://my-enterprise.github.com' expect(cacheUtils.isGhes()).toBe(true) }) test('isGhes returns false for ghe.localhost', () => { process.env.GITHUB_SERVER_URL = 'https://my.domain.ghe.localhost' expect(cacheUtils.isGhes()).toBe(false) })