20 lines
983 B
TypeScript
20 lines
983 B
TypeScript
import { strict as assert } from 'node:assert'
|
|
import { test } from 'node:test'
|
|
import { classifyDockerError } from './dockerStatus'
|
|
|
|
test('missing CLI is distinguished from an unavailable daemon', () => {
|
|
assert.equal(classifyDockerError('ENOENT', 'spawn docker ENOENT'), 'missing')
|
|
assert.equal(classifyDockerError(1, 'Cannot connect to the Docker daemon'), 'unavailable')
|
|
assert.equal(classifyDockerError(1, 'dial unix /run/docker.sock: connect: connection refused'), 'unavailable')
|
|
})
|
|
|
|
test('permission errors take precedence over connection errors', () => {
|
|
assert.equal(classifyDockerError(1, 'Cannot connect: permission denied'), 'permission')
|
|
assert.equal(classifyDockerError('EACCES', 'spawn docker EACCES'), 'permission')
|
|
})
|
|
|
|
test('timeouts and unknown failures do not imply Docker needs installing', () => {
|
|
assert.equal(classifyDockerError(null, 'Command failed: docker info'), 'error')
|
|
assert.equal(classifyDockerError(1, 'context not found'), 'error')
|
|
})
|