@@ -428,56 +428,55 @@ func TestParseHostnameDomainname(t *testing.T) {
428428}
429429
430430func 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
483482func TestParseDevice (t * testing.T ) {
0 commit comments