Skip to content

Commit 413ee12

Browse files
committed
cli/command/container: TestParseWithExpose: use sub-tests
Signed-off-by: Sebastiaan van Stijn <[email protected]>
1 parent 7923f44 commit 413ee12

File tree

1 file changed

+44
-45
lines changed

1 file changed

+44
-45
lines changed

cli/command/container/opts_test.go

Lines changed: 44 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -428,56 +428,55 @@ func TestParseHostnameDomainname(t *testing.T) {
428428
}
429429

430430
func TestParseWithExpose(t *testing.T) {
431-
invalids := map[string]string{
432-
":": "invalid port format for --expose: :",
433-
"8080:9090": "invalid port format for --expose: 8080:9090",
434-
"/tcp": "invalid range format for --expose: /tcp, error: empty string specified for ports",
435-
"/udp": "invalid range format for --expose: /udp, error: empty string specified for ports",
436-
"NaN/tcp": `invalid range format for --expose: NaN/tcp, error: strconv.ParseUint: parsing "NaN": invalid syntax`,
437-
"NaN-NaN/tcp": `invalid range format for --expose: NaN-NaN/tcp, error: strconv.ParseUint: parsing "NaN": invalid syntax`,
438-
"8080-NaN/tcp": `invalid range format for --expose: 8080-NaN/tcp, error: strconv.ParseUint: parsing "NaN": invalid syntax`,
439-
"1234567890-8080/tcp": `invalid range format for --expose: 1234567890-8080/tcp, error: strconv.ParseUint: parsing "1234567890": value out of range`,
440-
}
441-
valids := map[string][]container.PortRangeProto{
442-
"8080/tcp": {"8080/tcp"},
443-
"8080/udp": {"8080/udp"},
444-
"8080/ncp": {"8080/ncp"},
445-
"8080-8080/udp": {"8080/udp"},
446-
"8080-8082/tcp": {"8080/tcp", "8081/tcp", "8082/tcp"},
447-
}
448-
for expose, expectedError := range invalids {
449-
if _, _, _, err := parseRun([]string{fmt.Sprintf("--expose=%v", expose), "img", "cmd"}); err == nil || err.Error() != expectedError {
450-
t.Fatalf("Expected error '%v' with '--expose=%v', got '%v'", expectedError, expose, err)
431+
t.Run("invalid", func(t *testing.T) {
432+
tests := map[string]string{
433+
":": "invalid port format for --expose: :",
434+
"8080:9090": "invalid port format for --expose: 8080:9090",
435+
"/tcp": "invalid range format for --expose: /tcp, error: empty string specified for ports",
436+
"/udp": "invalid range format for --expose: /udp, error: empty string specified for ports",
437+
"NaN/tcp": `invalid range format for --expose: NaN/tcp, error: strconv.ParseUint: parsing "NaN": invalid syntax`,
438+
"NaN-NaN/tcp": `invalid range format for --expose: NaN-NaN/tcp, error: strconv.ParseUint: parsing "NaN": invalid syntax`,
439+
"8080-NaN/tcp": `invalid range format for --expose: 8080-NaN/tcp, error: strconv.ParseUint: parsing "NaN": invalid syntax`,
440+
"1234567890-8080/tcp": `invalid range format for --expose: 1234567890-8080/tcp, error: strconv.ParseUint: parsing "1234567890": value out of range`,
451441
}
452-
}
453-
for expose, exposedPorts := range valids {
454-
config, _, _, err := parseRun([]string{fmt.Sprintf("--expose=%v", expose), "img", "cmd"})
455-
if err != nil {
456-
t.Fatal(err)
442+
for expose, expectedError := range tests {
443+
t.Run(expose, func(t *testing.T) {
444+
_, _, _, err := parseRun([]string{fmt.Sprintf("--expose=%v", expose), "img", "cmd"})
445+
assert.Error(t, err, expectedError)
446+
})
457447
}
458-
if len(config.ExposedPorts) != len(exposedPorts) {
459-
t.Fatalf("Expected %v exposed port, got %v", len(exposedPorts), len(config.ExposedPorts))
448+
})
449+
t.Run("valid", func(t *testing.T) {
450+
tests := map[string][]container.PortRangeProto{
451+
"8080/tcp": {"8080/tcp"},
452+
"8080/udp": {"8080/udp"},
453+
"8080/ncp": {"8080/ncp"},
454+
"8080-8080/udp": {"8080/udp"},
455+
"8080-8082/tcp": {"8080/tcp", "8081/tcp", "8082/tcp"},
460456
}
461-
for _, port := range exposedPorts {
462-
if _, ok := config.ExposedPorts[port]; !ok {
463-
t.Fatalf("Expected %v, got %v", exposedPorts, config.ExposedPorts)
464-
}
457+
for expose, exposedPorts := range tests {
458+
t.Run(expose, func(t *testing.T) {
459+
config, _, _, err := parseRun([]string{fmt.Sprintf("--expose=%v", expose), "img", "cmd"})
460+
assert.NilError(t, err)
461+
for _, port := range exposedPorts {
462+
_, ok := config.ExposedPorts[port]
463+
assert.Check(t, ok, "missing port %q in exposed ports", port)
464+
}
465+
})
465466
}
466-
}
467-
// Merge with actual published port
468-
config, _, _, err := parseRun([]string{"--publish=80", "--expose=80-81/tcp", "img", "cmd"})
469-
if err != nil {
470-
t.Fatal(err)
471-
}
472-
if len(config.ExposedPorts) != 2 {
473-
t.Fatalf("Expected 2 exposed ports, got %v", config.ExposedPorts)
474-
}
475-
ports := []container.PortRangeProto{"80/tcp", "81/tcp"}
476-
for _, port := range ports {
477-
if _, ok := config.ExposedPorts[port]; !ok {
478-
t.Fatalf("Expected %v, got %v", ports, config.ExposedPorts)
467+
})
468+
469+
t.Run("merge with published", func(t *testing.T) {
470+
// Merge with actual published port
471+
config, _, _, err := parseRun([]string{"--publish=80", "--expose=80-81/tcp", "img", "cmd"})
472+
assert.NilError(t, err)
473+
assert.Check(t, is.Len(config.ExposedPorts, 2))
474+
ports := []container.PortRangeProto{"80/tcp", "81/tcp"}
475+
for _, port := range ports {
476+
_, ok := config.ExposedPorts[port]
477+
assert.Check(t, ok, "missing port %q in exposed ports", port)
479478
}
480-
}
479+
})
481480
}
482481

483482
func TestParseDevice(t *testing.T) {

0 commit comments

Comments
 (0)