Skip to content

Commit

Permalink
test: Add an e2e test for the COMPOSE_FILE environment variable in fi… (
Browse files Browse the repository at this point in the history
#172)

…nch compose command

The following pull request attempts to modify finch compose command to
allow the COMPOSE_FILE environment variable.

- runfinch/finch#994

Therefore, this fix adds an e2e test to run finch compose command with
the COMPOSE_FILE environment variable.

Issue #, if available: N/A

*Description of changes:* The details are described in this commit
message.

*Testing done:* Yes


- [x] I've reviewed the guidance in CONTRIBUTING.md


#### License Acceptance

By submitting this pull request, I confirm that my contribution is made
under the terms of the Apache 2.0 license.

---------

Signed-off-by: Hayato Kiwata <[email protected]>
  • Loading branch information
haytok authored Jun 24, 2024
1 parent 3749402 commit 8b3e9f6
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
30 changes: 30 additions & 0 deletions option/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@ package option

import (
"errors"
"fmt"
"os"
"os/exec"
"strings"
)

// Option customizes how tests are run.
Expand Down Expand Up @@ -50,3 +52,31 @@ func (o *Option) NewCmd(args ...string) *exec.Cmd {
cmd.Env = append(os.Environ(), o.env...)
return cmd
}

// UpdateEnv updates the environment variable for the key name of the input.
func (o *Option) UpdateEnv(envKey, envValue string) {
env := fmt.Sprintf("%s=%s", envKey, envValue)
if i, exists := containsEnv(o.env, envKey); exists {
o.env[i] = env
} else {
o.env = append(o.env, env)
}
}

// DeleteEnv deletes the environment variable for the key name of the input.
func (o *Option) DeleteEnv(envKey string) {
if i, exists := containsEnv(o.env, envKey); exists {
o.env = append(o.env[:i], o.env[i+1:]...)
}
}

// containsEnv determines whether an environment variable exists.
func containsEnv(envs []string, targetEnvKey string) (int, bool) {
for i, env := range envs {
if strings.Split(env, "=")[0] == targetEnvKey {
return i, true
}
}

return -1, false
}
16 changes: 16 additions & 0 deletions tests/compose_build.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,22 @@ func ComposeBuild(o *option.Option) {
gomega.Expect(output).Should(gomega.Equal("Compose build test"))
})

ginkgo.It("should build services defined in the compose file specified by the COMPOSE_FILE environment variable", func() {
envKey := "COMPOSE_FILE"
o.UpdateEnv(envKey, composeFilePath)

command.Run(o, "compose", "build")

imageList := command.GetAllImageNames(o)
gomega.Expect(imageList).Should(gomega.ContainElement(gomega.HaveSuffix(imageSuffix[0])))
gomega.Expect(imageList).Should(gomega.ContainElement(gomega.HaveSuffix(imageSuffix[1])))
// The built image should print 'Compose build test' when run.
output := command.StdoutStr(o, "run", localImages[defaultImage])
gomega.Expect(output).Should(gomega.Equal("Compose build test"))

o.DeleteEnv(envKey)
})

ginkgo.It("should output progress in plain text format", func() {
composeBuildOutput := command.StderrStr(o, "compose", "build", "--progress",
"plain", "--no-cache", "--file", composeFilePath)
Expand Down

0 comments on commit 8b3e9f6

Please sign in to comment.