add shellspec golden harness for the legacy make engine

- spec/golden/cases.txt: 69 black-box cases (CLI wrapper mode and make
  include mode) run in a hermetic sandbox with a mocked docker
- spec/golden/expected/*.txt recorded from this engine (baseline)
- make test / test-golden / golden-record / lint dev targets
This commit is contained in:
Yann Autissier
2026-09-03 14:35:58 +02:00
parent e2e34d813e
commit 1d44a2ff32
102 changed files with 632 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
APP_SERVICE_8080_TAGS=urlprefix-app.${DOMAIN}/*
POSTGRES_PASSWORD=changeme
+2
View File
@@ -0,0 +1,2 @@
MYOS ?= /usr/local/lib/myos
-include $(MYOS)/make/include.mk
+4
View File
@@ -0,0 +1,4 @@
services:
app:
environment:
DEBUG: "true"
+13
View File
@@ -0,0 +1,13 @@
services:
app:
image: alpine:3.20
command: sleep infinity
environment:
APP_DOMAIN: ${APP_DOMAIN}
DOMAIN: ${DOMAIN}
labels:
- SERVICE_8080_NAME=${COMPOSE_SERVICE_NAME}-app-8080
- SERVICE_8080_TAGS=${APP_SERVICE_8080_TAGS:-urlprefix-app.localhost/*}
networks:
- default
- private
+5
View File
@@ -0,0 +1,5 @@
services:
db:
image: postgres:16-alpine
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
+3
View File
@@ -0,0 +1,3 @@
services:
web:
image: nginx:alpine
@@ -0,0 +1,6 @@
services:
myos:
image: ${USER_DOCKER_IMAGE:-myos:latest}
container_name: ${USER_COMPOSE_PROJECT_NAME:-user}
volumes:
- ${USER_DOCKER_VOLUME:-user}:/tmp/ssh-agent
+1
View File
@@ -0,0 +1 @@
default ?= postgres redis
@@ -0,0 +1,3 @@
services:
drone:
image: drone/drone:1.6
@@ -0,0 +1,2 @@
DRONE_SERVER_HOST ?= drone.$(DOMAIN)
ENV_VARS += DRONE_SERVER_HOST
@@ -0,0 +1,7 @@
services:
drone:
image: drone/drone:${DRONE_VERSION:-latest}
environment:
DRONE_SERVER_HOST: ${DRONE_SERVER_HOST:-drone.localhost}
networks:
- private
@@ -0,0 +1,4 @@
services:
nginx:
volumes:
- dns:/dns
@@ -0,0 +1,4 @@
services:
nginx:
volumes:
- www:/var/www
@@ -0,0 +1,6 @@
services:
nginx:
image: nginx:alpine
container_name: ${HOST_COMPOSE_PROJECT_NAME:-localhost}-nginx
ports:
- "8080:80"
@@ -0,0 +1,3 @@
services:
postgres:
image: postgres:9.6
@@ -0,0 +1,4 @@
services:
postgres:
ports:
- "5432:5432"
@@ -0,0 +1,13 @@
services:
postgres:
image: postgres:${POSTGRES_VERSION:-latest}
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
labels:
- SERVICE_5432_NAME=${COMPOSE_SERVICE_NAME}-postgres-5432
networks:
- private
volumes:
- postgres:/var/lib/postgresql/data
volumes:
postgres:
@@ -0,0 +1,5 @@
services:
redis:
image: redis:alpine
networks:
- private
+1
View File
@@ -0,0 +1 @@
testing ?= drone/drone redis
+12
View File
@@ -0,0 +1,12 @@
services:
consul:
image: hashicorp/consul:1.15
container_name: ${HOST_COMPOSE_PROJECT_NAME:-localhost}-consul
network_mode: host
restart: always
environment:
CONSUL_HTTP_TOKEN: ${HOST_CONSUL_HTTP_TOKEN}
volumes:
- consul:/consul/data
volumes:
consul:
+13
View File
@@ -0,0 +1,13 @@
services:
fabio:
image: fabiolb/fabio:1.6.3
container_name: ${HOST_COMPOSE_PROJECT_NAME:-localhost}-fabio
depends_on: [consul]
ports:
- "80:80"
- "443:443"
environment:
FABIO_REGISTRY_CONSUL_ADDR: ${DOCKER_HOST_INET4:-127.0.0.1}:8500
FABIO_LOG_ACCESS_TARGET: ${HOST_FABIO_LOG_ACCESS:-}
networks:
- public
+10
View File
@@ -0,0 +1,10 @@
# Stack host: consul + fabio (80/443) + registrator, one instance per host.
host ?= host/consul host/fabio host/registrator
.PHONY: host
host:
$(call make,up STACK="$(host)")
.PHONY: host-down
host-down:
$(call make,down STACK="$(host)")
+9
View File
@@ -0,0 +1,9 @@
services:
registrator:
image: gliderlabs/registrator:master
container_name: ${HOST_COMPOSE_PROJECT_NAME:-localhost}-registrator
network_mode: host
depends_on: [consul]
command: -internal=false -useIpFromLabel SERVICE_ADDRESS consul://127.0.0.1:8500
volumes:
- ${DOCKER_SOCKET_LOCATION:-/var/run/docker.sock}:/tmp/docker.sock