MCPcopy Index your code
hub / github.com/docker/cli / TestParseWithExpose

Function TestParseWithExpose

cli/command/container/opts_test.go:437–487  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

435}
436
437func TestParseWithExpose(t *testing.T) {
438 t.Run("invalid", func(t *testing.T) {
439 tests := map[string]string{
440 ":": `invalid range format for --expose: invalid start port ':': invalid syntax`,
441 "8080:9090": `invalid range format for --expose: invalid start port '8080:9090': invalid syntax`,
442 "/tcp": `invalid range format for --expose: invalid start port '': value is empty`,
443 "/udp": `invalid range format for --expose: invalid start port '': value is empty`,
444 "NaN/tcp": `invalid range format for --expose: invalid start port 'NaN': invalid syntax`,
445 "NaN-NaN/tcp": `invalid range format for --expose: invalid start port 'NaN': invalid syntax`,
446 "8080-NaN/tcp": `invalid range format for --expose: invalid end port 'NaN': invalid syntax`,
447 "1234567890-8080/tcp": `invalid range format for --expose: invalid start port '1234567890': value out of range`,
448 }
449 for expose, expectedError := range tests {
450 t.Run(expose, func(t *testing.T) {
451 _, _, _, err := parseRun([]string{fmt.Sprintf("--expose=%v", expose), "img", "cmd"})
452 assert.Error(t, err, expectedError)
453 })
454 }
455 })
456 t.Run("valid", func(t *testing.T) {
457 tests := map[string][]networktypes.Port{
458 "8080/tcp": {networktypes.MustParsePort("8080/tcp")},
459 "8080/udp": {networktypes.MustParsePort("8080/udp")},
460 "8080/ncp": {networktypes.MustParsePort("8080/ncp")},
461 "8080-8080/udp": {networktypes.MustParsePort("8080/udp")},
462 "8080-8082/tcp": {networktypes.MustParsePort("8080/tcp"), networktypes.MustParsePort("8081/tcp"), networktypes.MustParsePort("8082/tcp")},
463 }
464 for expose, exposedPorts := range tests {
465 t.Run(expose, func(t *testing.T) {
466 config, _, _, err := parseRun([]string{fmt.Sprintf("--expose=%v", expose), "img", "cmd"})
467 assert.NilError(t, err)
468 for _, port := range exposedPorts {
469 _, ok := config.ExposedPorts[port]
470 assert.Check(t, ok, "missing port %q in exposed ports: %#+v", port, config.ExposedPorts[port])
471 }
472 })
473 }
474 })
475
476 t.Run("merge with published", func(t *testing.T) {
477 // Merge with actual published port
478 config, _, _, err := parseRun([]string{"--publish=80", "--expose=80-81/tcp", "img", "cmd"})
479 assert.NilError(t, err)
480 assert.Check(t, is.Len(config.ExposedPorts, 2))
481 ports := []networktypes.Port{networktypes.MustParsePort("80/tcp"), networktypes.MustParsePort("81/tcp")}
482 for _, port := range ports {
483 _, ok := config.ExposedPorts[port]
484 assert.Check(t, ok, "missing port %q in exposed ports: %#+v", port, config.ExposedPorts[port])
485 }
486 })
487}
488
489func TestParseDevice(t *testing.T) {
490 skip.If(t, runtime.GOOS != "linux") // Windows and macOS validate server-side

Callers

nothing calls this directly

Calls 3

parseRunFunction · 0.85
ErrorMethod · 0.45
LenMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…