From 30df7a124476f6a607842da959e7d00365860ab6 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Mon, 11 Mar 2019 10:46:15 +0100
Subject: [PATCH] fix(composer): catch/throw disk space

---
 lib/manager/composer/artifacts.js       |  5 +++++
 test/manager/composer/artifacts.spec.js | 15 +++++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/lib/manager/composer/artifacts.js b/lib/manager/composer/artifacts.js
index a244b34db3..1ddbbfb489 100644
--- a/lib/manager/composer/artifacts.js
+++ b/lib/manager/composer/artifacts.js
@@ -167,6 +167,11 @@ async function getArtifacts(
       )
     ) {
       logger.info('Composer requirements cannot be resolved');
+    } else if (
+      err.message &&
+      err.message.includes('write error (disk full?)')
+    ) {
+      throw new Error('disk-space');
     } else {
       logger.warn(
         { err, message: err.message },
diff --git a/test/manager/composer/artifacts.spec.js b/test/manager/composer/artifacts.spec.js
index 2080fdf592..227976e485 100644
--- a/test/manager/composer/artifacts.spec.js
+++ b/test/manager/composer/artifacts.spec.js
@@ -99,4 +99,19 @@ describe('.getArtifacts()', () => {
       await composer.getArtifacts('composer.json', [], '{}', config)
     ).toMatchSnapshot();
   });
+  it('throws for disk space', async () => {
+    platform.getFile.mockReturnValueOnce('Current composer.lock');
+    fs.outputFile = jest.fn(() => {
+      throw new Error(
+        'vendor/composer/07fe2366/sebastianbergmann-php-code-coverage-c896779/src/Report/Html/Renderer/Template/js/d3.min.js:  write error (disk full?).  Continue? (y/n/^C) '
+      );
+    });
+    let e;
+    try {
+      await composer.getArtifacts('composer.json', [], '{}', config);
+    } catch (err) {
+      e = err;
+    }
+    expect(e).toBeDefined();
+  });
 });
-- 
GitLab