From dd0ff8ea54bb6e588585f848d32b18818aff7d4c Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 14 Apr 2022 10:00:08 +0100 Subject: [PATCH] Put docker rm in finally block --- cypress/plugins/synapsedocker/index.ts | 68 +++++++++++++------------- 1 file changed, 35 insertions(+), 33 deletions(-) diff --git a/cypress/plugins/synapsedocker/index.ts b/cypress/plugins/synapsedocker/index.ts index 91f6d87be52..0f029e7b2ed 100644 --- a/cypress/plugins/synapsedocker/index.ts +++ b/cypress/plugins/synapsedocker/index.ts @@ -135,41 +135,43 @@ async function synapseStop(id) { if (!synCfg) throw new Error("Unknown synapse ID"); - const synapseLogsPath = path.join("cypress", "synapselogs", id); - await fse.ensureDir(synapseLogsPath); - - const stdoutFile = await fse.open(path.join(synapseLogsPath, "stdout.log"), "w"); - const stderrFile = await fse.open(path.join(synapseLogsPath, "stderr.log"), "w"); - await new Promise((resolve, reject) => { - childProcess.spawn('docker', [ - "logs", - id, - ], { - stdio: ["ignore", stdoutFile, stderrFile], - }).once('close', resolve); - }); - await fse.close(stdoutFile); - await fse.close(stderrFile); - - await new Promise((resolve, reject) => { - childProcess.execFile('docker', [ - "stop", - id, - ], err => { - if (err) reject(err); - resolve(); + try { + const synapseLogsPath = path.join("cypress", "synapselogs", id); + await fse.ensureDir(synapseLogsPath); + + const stdoutFile = await fse.open(path.join(synapseLogsPath, "stdout.log"), "w"); + const stderrFile = await fse.open(path.join(synapseLogsPath, "stderr.log"), "w"); + await new Promise((resolve, reject) => { + childProcess.spawn('docker', [ + "logs", + id, + ], { + stdio: ["ignore", stdoutFile, stderrFile], + }).once('close', resolve); }); - }); - - await new Promise((resolve, reject) => { - childProcess.execFile('docker', [ - "rm", - id, - ], err => { - if (err) reject(err); - resolve(); + await fse.close(stdoutFile); + await fse.close(stderrFile); + + await new Promise((resolve, reject) => { + childProcess.execFile('docker', [ + "stop", + id, + ], err => { + if (err) reject(err); + resolve(); + }); }); - }); + } finally { + await new Promise((resolve, reject) => { + childProcess.execFile('docker', [ + "rm", + id, + ], err => { + if (err) reject(err); + resolve(); + }); + }); + } await fse.remove(synCfg.configDir);