Skip to content

Commit

Permalink
Merge pull request #16911 from rhatdan/test
Browse files Browse the repository at this point in the history
New system tests for conflicting options
  • Loading branch information
openshift-merge-robot authored Dec 21, 2022
2 parents 0e14dcd + 97f9d62 commit 7400887
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 2 deletions.
4 changes: 2 additions & 2 deletions cmd/podman/containers/cleanup.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,11 @@ func cleanup(cmd *cobra.Command, args []string) error {
if cleanupOptions.Exec != "" {
switch {
case cleanupOptions.All:
return errors.New("exec and all options conflict")
return errors.New("--all and --exec cannot be set together")
case len(args) > 1:
return errors.New("cannot use exec option when more than one container is given")
case cleanupOptions.RemoveImage:
return errors.New("exec and rmi options conflict")
return errors.New("--exec and --rmi cannot be set together")
}
}

Expand Down
50 changes: 50 additions & 0 deletions test/system/620-option-conflicts.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#!/usr/bin/env bats -*- bats -*-
#
# options that cannot be set together
#

load helpers


@test "options that cannot be set together" {
skip_if_remote "not much point testing remote, and container-cleanup fails anyway"

tests="
create,run | --cpu-period=1 | --cpus=2 | $IMAGE
create,run | --cpu-quota=1 | --cpus=2 | $IMAGE
create,run | --no-hosts | --add-host=foo:1.1.1.1 | $IMAGE
create,run | --userns=bar | --pod=foo | $IMAGE
container cleanup | --all | --exec=foo
container cleanup | --exec=foo | --rmi | foo
"

# FIXME: parse_table is what does all the work, giving us test cases.
while read subcommands opt1 opt2 args; do
opt1_name=${opt1%=*}
opt2_name=${opt2%=*}

readarray -d, -t subcommand_list <<<$subcommands
for subcommand in "${subcommand_list[@]}"; do
run_podman 125 $subcommand $opt1 $opt2 $args
is "$output" "Error: $opt1_name and $opt2_name cannot be set together" \
"podman $subcommand $opt1 $opt2"

# Reverse order
run_podman 125 $subcommand $opt2 $opt1 $args
is "$output" "Error: $opt1_name and $opt2_name cannot be set together" \
"podman $subcommand $opt2 $opt1"
done
done < <(parse_table "$tests")

# Different error message; cannot be tested with the other ones above
for opt in arch os; do
for cmd in create pull; do
run_podman 125 $cmd --platform=foo --$opt=bar sdfsdf
is "$output" "Error: --platform option can not be specified with --arch or --os" \
"podman $cmd --platform + --$opt"
done
done
}


# vim: filetype=sh

0 comments on commit 7400887

Please sign in to comment.