This commit is contained in:
Gerard Ribugent Navarro 2026-01-27 08:46:45 +01:00 committed by GitHub
commit eb4f933afc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 43 additions and 8 deletions

View file

@ -81,8 +81,13 @@ async function installWrapper (pathToCLI) {
try { try {
source = path.resolve([__dirname, '..', 'wrapper', 'dist', 'index.js'].join(path.sep)); source = path.resolve([__dirname, '..', 'wrapper', 'dist', 'index.js'].join(path.sep));
target = [pathToCLI, 'terraform'].join(path.sep); target = [pathToCLI, 'terraform'].join(path.sep);
core.debug(`Copying ${source} to ${target}.`);
await io.cp(source, target); core.debug(`Reading wrapper from ${source} and updating shebang.`);
const wrapperContent = (await fs.readFile(source, 'utf8')).split('\n');
wrapperContent[0] = `#!${process.argv[0]}`;
core.debug(`Writing updated wrapper to ${target}.`);
await fs.writeFile(target, wrapperContent.join('\n'), { mode: 0o755 });
} catch (e) { } catch (e) {
core.error(`Unable to copy ${source} to ${target}.`); core.error(`Unable to copy ${source} to ${target}.`);
throw e; throw e;

View file

@ -27,6 +27,9 @@ const setup = require('../lib/setup-terraform');
// core.error = jest // core.error = jest
// .fn(console.error); // .fn(console.error);
const fsReadFileImplementation = fs.readFile;
const fsWriteFileImplementation = fs.writeFile;
describe('Setup Terraform', () => { describe('Setup Terraform', () => {
const HOME = process.env.HOME; const HOME = process.env.HOME;
const APPDATA = process.env.APPDATA; const APPDATA = process.env.APPDATA;
@ -553,8 +556,20 @@ describe('Setup Terraform', () => {
const ioMv = jest.spyOn(io, 'mv') const ioMv = jest.spyOn(io, 'mv')
.mockImplementation(() => {}); .mockImplementation(() => {});
const ioCp = jest.spyOn(io, 'cp') const fsReadFile = jest.spyOn(fs, 'readFile').mockImplementation((...args) => {
.mockImplementation(() => {}); if (args[0] === wrapperPath) {
return Promise.resolve('');
} else {
return fsReadFileImplementation(...args);
}
});
const fsWriteFile = jest.spyOn(fs, 'writeFile').mockImplementation((...args) => {
if (args[0] === `file${path.sep}terraform`) {
return Promise.resolve();
} else {
return fsWriteFileImplementation(...args);
}
});
core.getInput = jest core.getInput = jest
.fn() .fn()
@ -586,7 +601,8 @@ describe('Setup Terraform', () => {
await setup(); await setup();
expect(ioMv).toHaveBeenCalledWith(`file${path.sep}terraform`, `file${path.sep}terraform-bin`); expect(ioMv).toHaveBeenCalledWith(`file${path.sep}terraform`, `file${path.sep}terraform-bin`);
expect(ioCp).toHaveBeenCalledWith(wrapperPath, `file${path.sep}terraform`); expect(fsReadFile).toHaveBeenCalledWith(wrapperPath, 'utf8');
expect(fsWriteFile).toHaveBeenCalledWith(`file${path.sep}terraform`, expect.any(String), { mode: 0o755 });
}); });
test('installs wrapper on windows', async () => { test('installs wrapper on windows', async () => {
@ -597,8 +613,21 @@ describe('Setup Terraform', () => {
const ioMv = jest.spyOn(io, 'mv') const ioMv = jest.spyOn(io, 'mv')
.mockImplementation(() => {}); .mockImplementation(() => {});
const ioCp = jest.spyOn(io, 'cp') const fsReadFileImplementation = fs.readFile;
.mockImplementation(() => {}); const fsReadFile = jest.spyOn(fs, 'readFile').mockImplementation((...args) => {
if (args[0] === wrapperPath) {
return Promise.resolve('');
} else {
return fsReadFileImplementation(...args);
}
});
const fsWriteFile = jest.spyOn(fs, 'writeFile').mockImplementation((...args) => {
if (args[0] === `file${path.sep}terraform`) {
return Promise.resolve();
} else {
return fsWriteFileImplementation(...args);
}
});
core.getInput = jest core.getInput = jest
.fn() .fn()
@ -630,6 +659,7 @@ describe('Setup Terraform', () => {
await setup(); await setup();
expect(ioMv).toHaveBeenCalledWith(`file${path.sep}terraform.exe`, `file${path.sep}terraform-bin.exe`); expect(ioMv).toHaveBeenCalledWith(`file${path.sep}terraform.exe`, `file${path.sep}terraform-bin.exe`);
expect(ioCp).toHaveBeenCalledWith(wrapperPath, `file${path.sep}terraform`); expect(fsReadFile).toHaveBeenCalledWith(wrapperPath, 'utf8');
expect(fsWriteFile).toHaveBeenCalledWith(`file${path.sep}terraform`, expect.any(String), { mode: 0o755 });
}); });
}); });