mirror of
https://code.forgejo.org/actions/setup-node
synced 2025-06-19 18:10:26 +02:00
mirror-url -implementation
This commit is contained in:
parent
802632921f
commit
1b0ef2d227
13 changed files with 1223 additions and 184 deletions
|
@ -1,4 +1,5 @@
|
|||
import * as core from '@actions/core';
|
||||
import 'jest';
|
||||
import * as exec from '@actions/exec';
|
||||
import * as tc from '@actions/tool-cache';
|
||||
import * as cache from '@actions/cache';
|
||||
|
@ -14,6 +15,11 @@ import * as main from '../src/main';
|
|||
import * as util from '../src/util';
|
||||
import OfficialBuilds from '../src/distributions/official_builds/official_builds';
|
||||
|
||||
import * as installerFactory from '../src/distributions/installer-factory';
|
||||
jest.mock('../src/distributions/installer-factory', () => ({
|
||||
getNodejsDistribution: jest.fn()
|
||||
}));
|
||||
|
||||
describe('main tests', () => {
|
||||
let inputs = {} as any;
|
||||
let os = {} as any;
|
||||
|
@ -280,4 +286,93 @@ describe('main tests', () => {
|
|||
);
|
||||
});
|
||||
});
|
||||
|
||||
// Create a mock object that satisfies the BaseDistribution interface
|
||||
const createMockNodejsDistribution = () => ({
|
||||
setupNodeJs: jest.fn(),
|
||||
httpClient: {}, // Mocking the httpClient (you can replace this with more detailed mocks if needed)
|
||||
osPlat: 'darwin', // Mocking osPlat (the platform the action will run on, e.g., 'darwin', 'win32', 'linux')
|
||||
nodeInfo: {
|
||||
version: '14.x',
|
||||
arch: 'x64',
|
||||
platform: 'darwin'
|
||||
},
|
||||
getDistributionUrl: jest.fn().mockReturnValue('https://nodejs.org/dist/'), // Example URL
|
||||
install: jest.fn(),
|
||||
validate: jest.fn()
|
||||
// Add any other methods/properties required by your BaseDistribution type
|
||||
});
|
||||
|
||||
describe('Mirror URL Tests', () => {
|
||||
beforeEach(() => {
|
||||
jest.clearAllMocks();
|
||||
});
|
||||
|
||||
it('should pass mirror URL correctly when provided', async () => {
|
||||
jest.spyOn(core, 'getInput').mockImplementation((name: string) => {
|
||||
if (name === 'mirror-url') return 'https://custom-mirror-url.com';
|
||||
if (name === 'node-version') return '14.x';
|
||||
return '';
|
||||
});
|
||||
|
||||
const mockNodejsDistribution = createMockNodejsDistribution();
|
||||
(installerFactory.getNodejsDistribution as jest.Mock).mockReturnValue(
|
||||
mockNodejsDistribution
|
||||
);
|
||||
|
||||
await main.run();
|
||||
|
||||
// Ensure setupNodeJs is called with the correct parameters, including the mirror URL
|
||||
expect(mockNodejsDistribution.setupNodeJs).toHaveBeenCalledWith({
|
||||
versionSpec: '14.x',
|
||||
checkLatest: false,
|
||||
auth: undefined,
|
||||
stable: true,
|
||||
arch: 'x64',
|
||||
mirrorURL: 'https://custom-mirror-url.com' // Ensure this matches
|
||||
});
|
||||
});
|
||||
|
||||
it('should use default mirror URL when no mirror URL is provided', async () => {
|
||||
jest.spyOn(core, 'getInput').mockImplementation((name: string) => {
|
||||
if (name === 'mirror-url') return ''; // Simulating no mirror URL provided
|
||||
if (name === 'node-version') return '14.x';
|
||||
return '';
|
||||
});
|
||||
|
||||
const mockNodejsDistribution = createMockNodejsDistribution();
|
||||
(installerFactory.getNodejsDistribution as jest.Mock).mockReturnValue(
|
||||
mockNodejsDistribution
|
||||
);
|
||||
|
||||
await main.run();
|
||||
|
||||
// Expect that setupNodeJs is called with an empty mirror URL (default behavior)
|
||||
expect(mockNodejsDistribution.setupNodeJs).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
mirrorURL: '' // Default URL is expected to be handled internally
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
it('should handle mirror URL with spaces correctly', async () => {
|
||||
const mirrorURL = 'https://custom-mirror-url.com ';
|
||||
const expectedTrimmedURL = 'https://custom-mirror-url.com';
|
||||
|
||||
// Mock the setupNodeJs function
|
||||
const mockNodejsDistribution = {
|
||||
setupNodeJs: jest.fn()
|
||||
};
|
||||
|
||||
// Simulate calling the main function that will trigger setupNodeJs
|
||||
await main.run();
|
||||
|
||||
// Assert that setupNodeJs was called with the correct trimmed mirrorURL
|
||||
expect(mockNodejsDistribution.setupNodeJs).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
mirrorURL: expectedTrimmedURL // Ensure the URL is trimmed properly
|
||||
})
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue