If i take a full exemple :
func (m *Wico) BuildEnvTest(source *Directory) *Container{
container := dag.Container().
From("klemensgalus/testphp:latest").
WithDirectory("/src", source).
WithWorkdir("/src").
WithExec([]string{"rm", "-rf", ".git"}).
WithEnvVariable("COMPOSER_ALLOW_SUPERUSER", "1").
WithExec([]string{"composer", "install", "--optimize-autoloader", "--no-scripts"})
return container
}
func (m *Wico) Database(dbName string) *Service {
container := dag.Container().
From("postgis/postgis:14-3.4-alpine").
WithEnvVariable("POSTGRES_USER", "admin").
WithEnvVariable("POSTGRES_PASSWORD", "admin").
WithEnvVariable("POSTGRES_DB", dbName).
WithExposedPort(5432)
return container.AsService()
}
func(m *Wico) UnitTestingW4B(ctx context.Context, source *Directory)(string, error){
db := m.Database("dev_test")
test := m.BuildEnvTest(source).
WithServiceBinding("db", db).
WithEnvVariable("DATABASE_URL", "postgresql://admin:admin@db:5432/dev").
WithExec([]string{"rm", ".env"}).
WithExec([]string{"cp", ".env.test", ".env"})
return test.
WithExec([]string{"php","-d","memory_limit=-1", "bin/console", "doctrine:database:drop", "-n" ,"--force","--env=test", "--if-exists"}).
WithExec([]string{"php","-d","memory_limit=-1", "bin/console", "doctrine:database:create", "-n","--env=test"}).
WithExec([]string{"php","-d","memory_limit=-1", "bin/console", "doctrine:query:sql", "-n", "CREATE EXTENSION IF NOT EXISTS postgis;","--env=test"}).
WithExec([]string{"php","-d","memory_limit=-1", "bin/console", "lexik:jwt:generate-keypair", "-n", "--overwrite","--env=test"}).
WithExec([]string{"php","-d","memory_limit=-1","bin/console" ,"doctrine:schema:update" ,"-n", "--force","--env=test"}).
WithExec([]string{"php","-d","memory_limit=-1","vendor/bin/phpunit", "tests/WTEST", "--stop-on-failure"}).
Stdout(ctx)
}