Patch list volumes to always return an array

Change-type: patch
Closes: #1636
Signed-off-by: Miguel Casqueira <miguel@balena.io>
This commit is contained in:
Miguel Casqueira 2021-03-31 22:08:46 -04:00
parent 16f981c478
commit ecbe9ee9f9
2 changed files with 13 additions and 2 deletions

View File

@ -154,6 +154,6 @@ export async function removeOrphanedVolumes(
}
async function list(): Promise<VolumeInspectInfo[]> {
const allVolumes = await docker.listVolumes();
return _.get(allVolumes, 'Volumes', []);
const dockerResponse = await docker.listVolumes();
return Array.isArray(dockerResponse.Volumes) ? dockerResponse.Volumes : [];
}

View File

@ -5,6 +5,7 @@ import * as mockedDockerode from './lib/mocked-dockerode';
import * as volumeManager from '../src/compose/volume-manager';
import log from '../src/lib/supervisor-console';
import Volume from '../src/compose/volume';
import { VolumeInspectInfo } from 'dockerode';
describe('Volume Manager', () => {
let logDebug: SinonStub;
@ -74,6 +75,16 @@ describe('Volume Manager', () => {
});
});
it('can parse null Volumes', async () => {
// Setup volume data
// @ts-ignore
const volumeData: VolumeInspectInfo[] = null;
// Perform test
await mockedDockerode.testWithData({ volumes: volumeData }, async () => {
await expect(volumeManager.getAll()).to.eventually.deep.equal([]);
});
});
it('gets a Volume for an application', async () => {
// Setup volume data
const volumeData = [