Una breve introduzione al caso d'uso:
Sto usando un docker
contenitore per eseguire i miei go
test usando go test ./...
. Questo può essere ottenuto facilmente usando docker exec <container> /bin/sh -c "go test ./..."
. Sfortunatamente si go test ./...
estende su tutte le sottodirectory e vorrei escluderne una (la directory del fornitore).
La soluzione consigliata per questo sta usando il seguente comando go test $(go list ./... | grep -v '<excluded>'
:, in qualche modo questo mi lascia con il seguente risultato:
docker run golang:1.6.2-alpine /bin/sh -c "go test "
(Ho provato questo sia su run che su exec, ma probabilmente usano lo stesso core).
Quando utilizzo il contenitore usando docker exec -it <container_id> /bin/sh
ed eseguo esattamente lo stesso comando, funziona come un incantesimo.
Sembra che l'esecuzione dei comandi shell tramite la finestra mobile exec / run non supporti alcun comando nidificato con $()
?
vendor
per esempio.
$(...)
stato espanso dalla tua shell tra virgolette doppie prima che fosse eseguito all'interno del contenitore docker. Pertanto, il problema potrebbe derivare dal contenuto della directory corrente. Ha docker exec container /bin/sh -c 'go test $(go list ./... | grep -v "<excluded>")'
funzionato?
$(go list ./... | grep -v '<excluded>'
, che cos'è<excluded>
?