Una breve introducción al caso de uso:
Estoy usando un docker
contenedor para ejecutar mis go
pruebas usando go test ./...
. Esto se puede lograr fácilmente usando docker exec <container> /bin/sh -c "go test ./..."
. Lamentablemente, se go test ./...
ejecuta en todos los subdirectorios y me gustaría excluir uno (el directorio de proveedores).
La solución recomendada para esto es usar el siguiente comando:, de go test $(go list ./... | grep -v '<excluded>'
alguna manera, esto me deja con el siguiente resultado:
docker run golang:1.6.2-alpine /bin/sh -c "go test "
(He probado esto tanto en ejecución como en ejecución, pero probablemente usan el mismo núcleo).
Cuando me meto en el contenedor usando docker exec -it <container_id> /bin/sh
y ejecuto exactamente el mismo comando, funciona de maravilla.
Parece que ejecutar comandos de shell a través de docker exec / run no admite ningún comando anidado con $()
?
vendor
por ejemplo.
$(...)
su shell lo expandió entre comillas dobles antes de que se ejecutara dentro del contenedor acoplable. Entonces, el problema puede provenir de su contenido de directorio actual. Hizo docker exec container /bin/sh -c 'go test $(go list ./... | grep -v "<excluded>")'
el trabajo?
$(go list ./... | grep -v '<excluded>'
, que<excluded>
es?