From 724b55689b64e0b4e9632fd3778060572cbda9c8 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 29 Dec 2022 11:55:38 +0100 Subject: [PATCH] create-app: avoid conflicting tmp dir for reading git config Signed-off-by: Patrik Oldsberg --- .changeset/sweet-tomatoes-cheer.md | 5 +++++ packages/create-app/src/lib/tasks.test.ts | 8 ++++---- packages/create-app/src/lib/tasks.ts | 4 +--- 3 files changed, 10 insertions(+), 7 deletions(-) create mode 100644 .changeset/sweet-tomatoes-cheer.md diff --git a/.changeset/sweet-tomatoes-cheer.md b/.changeset/sweet-tomatoes-cheer.md new file mode 100644 index 0000000000..d03a4b12c0 --- /dev/null +++ b/.changeset/sweet-tomatoes-cheer.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Avoid potential temporary directory conflict. diff --git a/packages/create-app/src/lib/tasks.test.ts b/packages/create-app/src/lib/tasks.test.ts index 8dc351ac97..2894f1ffe9 100644 --- a/packages/create-app/src/lib/tasks.test.ts +++ b/packages/create-app/src/lib/tasks.test.ts @@ -284,7 +284,7 @@ describe('tasks', () => { }); describe('readGitConfig', () => { - const tmpDir = resolvePath(os.tmpdir(), 'git-temp-dir'); + const tmpDirPrefix = resolvePath(os.tmpdir(), 'git-temp-dir-'); it('should return git config if git package is installed and git credentials are set', async () => { mockExec.mockImplementation((_command, _options, callback) => { @@ -299,17 +299,17 @@ describe('tasks', () => { expect(mockExec).toHaveBeenCalledTimes(3); expect(mockExec).toHaveBeenCalledWith( 'git init', - { cwd: tmpDir }, + { cwd: expect.stringContaining(tmpDirPrefix) }, expect.any(Function), ); expect(mockExec).toHaveBeenCalledWith( 'git commit --allow-empty -m "Initial commit"', - { cwd: tmpDir }, + { cwd: expect.stringContaining(tmpDirPrefix) }, expect.any(Function), ); expect(mockExec).toHaveBeenCalledWith( 'git branch --format="%(refname:short)"', - { cwd: tmpDir }, + { cwd: expect.stringContaining(tmpDirPrefix) }, expect.any(Function), ); }); diff --git a/packages/create-app/src/lib/tasks.ts b/packages/create-app/src/lib/tasks.ts index ff519912a8..23017c8ec7 100644 --- a/packages/create-app/src/lib/tasks.ts +++ b/packages/create-app/src/lib/tasks.ts @@ -248,11 +248,9 @@ export async function moveAppTask( * @throws if `exec` fails */ export async function readGitConfig(): Promise { - const tempDir = resolvePath(os.tmpdir(), 'git-temp-dir'); + const tempDir = await fs.mkdtemp(resolvePath(os.tmpdir(), 'git-temp-dir-')); try { - await fs.mkdir(tempDir); - await exec('git init', { cwd: tempDir }); await exec('git commit --allow-empty -m "Initial commit"', { cwd: tempDir,