@@ -405,6 +405,42 @@ func TestUnixgramConnLocalAndRemoteNames(t *testing.T) {
405
405
}
406
406
}
407
407
408
+ func TestUnixUnlink (t * testing.T ) {
409
+ if ! testableNetwork ("unix" ) {
410
+ t .Skip ("unix test" )
411
+ }
412
+ name := testUnixAddr ()
413
+ l , err := Listen ("unix" , name )
414
+ if err != nil {
415
+ t .Fatal (err )
416
+ }
417
+ if _ , err := os .Stat (name ); err != nil {
418
+ t .Fatalf ("cannot stat unix socket after ListenUnix: %v" , err )
419
+ }
420
+ f , _ := l .(* UnixListener ).File ()
421
+ l1 , err := FileListener (f )
422
+ if err != nil {
423
+ t .Fatal (err )
424
+ }
425
+ if _ , err := os .Stat (name ); err != nil {
426
+ t .Fatalf ("cannot stat unix socket after FileListener: %v" , err )
427
+ }
428
+ if err := l1 .Close (); err != nil {
429
+ t .Fatalf ("closing file listener: %v" , err )
430
+ }
431
+ if _ , err := os .Stat (name ); err != nil {
432
+ t .Fatalf ("cannot stat unix socket after closing FileListener: %v" , err )
433
+ }
434
+ f .Close ()
435
+ if _ , err := os .Stat (name ); err != nil {
436
+ t .Fatalf ("cannot stat unix socket after closing FileListener and fd: %v" , err )
437
+ }
438
+ l .Close ()
439
+ if _ , err := os .Stat (name ); err == nil {
440
+ t .Fatal ("closing unix listener did not remove unix socket" )
441
+ }
442
+ }
443
+
408
444
// forceGoDNS forces the resolver configuration to use the pure Go resolver
409
445
// and returns a fixup function to restore the old settings.
410
446
func forceGoDNS () func () {
0 commit comments