fix: Resolve input sourceDir to absolute path (#3024)

Fixes #2993
This commit is contained in:
Shubham Garg 2024-08-01 17:40:37 +05:30 коммит произвёл GitHub
Родитель f4ac2d95c3
Коммит 244aeb3f68
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
4 изменённых файлов: 19 добавлений и 14 удалений

Просмотреть файл

@ -1,3 +1,5 @@
import path from 'path';
import { fs } from 'mz';
import defaultBuildExtension from './build.js';
@ -60,6 +62,7 @@ export default async function run(
getValidatedManifest = defaultGetValidatedManifest,
} = {},
) {
sourceDir = path.resolve(sourceDir);
log.info(`Running web extension from ${sourceDir}`);
if (preInstall) {
log.info(

Просмотреть файл

@ -417,7 +417,7 @@ Example: $0 --help run.
default: process.cwd(),
requiresArg: true,
type: 'string',
coerce: (arg) => (arg != null ? path.resolve(arg) : undefined),
coerce: (arg) => arg ?? undefined,
},
'artifacts-dir': {
alias: 'a',

Просмотреть файл

@ -128,6 +128,21 @@ describe('run', () => {
});
});
it('turns sourceDir into an absolute path', async () => {
const getFakeManifest = sinon.spy();
const cmd = await prepareRun();
await cmd.run(
{ sourceDir: '.' },
{ getValidatedManifest: getFakeManifest },
);
sinon.assert.calledOnce(desktopRunnerStub);
const runnerParams = desktopRunnerStub.firstCall.args[0];
const [{ sourceDir: expectedSourceDir }] = runnerParams.extensions;
assert.equal(expectedSourceDir, process.cwd());
});
it('passes the expected parameters to the extension runner', async () => {
const cmd = await prepareRun();
const runOptions = {

Просмотреть файл

@ -481,19 +481,6 @@ describe('program.main', () => {
sinon.assert.calledWith(fakeVersionGetter, projectRoot);
});
it('turns sourceDir into an absolute path', () => {
const fakeCommands = fake(commands, {
build: () => Promise.resolve(),
});
return execProgram(['build', '--source-dir', '..'], {
commands: fakeCommands,
}).then(() => {
sinon.assert.calledWithMatch(fakeCommands.build, {
sourceDir: path.resolve(path.join(process.cwd(), '..')),
});
});
});
it('normalizes the artifactsDir path', () => {
const fakeCommands = fake(commands, {
build: () => Promise.resolve(),