@@ -435,7 +435,8 @@ func TestNetworkSymbolicLink(t *testing.T) {
435
435
dir := t .TempDir ()
436
436
chdir (t , dir )
437
437
438
- shareName := "GoSymbolicLinkTestShare" // hope no conflictions
438
+ pid := os .Getpid ()
439
+ shareName := fmt .Sprintf ("GoSymbolicLinkTestShare%d" , pid )
439
440
sharePath := filepath .Join (dir , shareName )
440
441
testDir := "TestDir"
441
442
@@ -453,11 +454,22 @@ func TestNetworkSymbolicLink(t *testing.T) {
453
454
t .Fatal (err )
454
455
}
455
456
457
+ // Per https://learn.microsoft.com/en-us/windows/win32/api/lmshare/ns-lmshare-share_info_2:
458
+ //
459
+ // “[The shi2_permissions field] indicates the shared resource's permissions
460
+ // for servers running with share-level security. A server running user-level
461
+ // security ignores this member.
462
+ // …
463
+ // Note that Windows does not support share-level security.”
464
+ //
465
+ // So it shouldn't matter what permissions we set here.
466
+ const permissions = 0
467
+
456
468
p := windows.SHARE_INFO_2 {
457
469
Netname : wShareName ,
458
- Type : windows .STYPE_DISKTREE ,
470
+ Type : windows .STYPE_DISKTREE | windows . STYPE_TEMPORARY ,
459
471
Remark : nil ,
460
- Permissions : 0 ,
472
+ Permissions : permissions ,
461
473
MaxUses : 1 ,
462
474
CurrentUses : 0 ,
463
475
Path : wSharePath ,
@@ -466,11 +478,8 @@ func TestNetworkSymbolicLink(t *testing.T) {
466
478
467
479
err = windows .NetShareAdd (nil , 2 , (* byte )(unsafe .Pointer (& p )), nil )
468
480
if err != nil {
469
- if err == syscall .ERROR_ACCESS_DENIED {
470
- t .Skip ("you don't have enough privileges to add network share" )
471
- }
472
- if err == _NERR_ServerNotStarted {
473
- t .Skip (_NERR_ServerNotStarted .Error ())
481
+ if err == syscall .ERROR_ACCESS_DENIED || err == _NERR_ServerNotStarted {
482
+ t .Skipf ("skipping: NetShareAdd: %v" , err )
474
483
}
475
484
t .Fatal (err )
476
485
}
@@ -509,15 +518,15 @@ func TestNetworkSymbolicLink(t *testing.T) {
509
518
t .Fatal (err )
510
519
}
511
520
if got != target {
512
- t .Errorf (`os.Readlink("%s" ): got %v, want %v` , link , got , target )
521
+ t .Errorf (`os.Readlink(%#q ): got %v, want %v` , link , got , target )
513
522
}
514
523
515
524
got , err = filepath .EvalSymlinks (link )
516
525
if err != nil {
517
526
t .Fatal (err )
518
527
}
519
528
if got != target {
520
- t .Errorf (`filepath.EvalSymlinks("%s" ): got %v, want %v` , link , got , target )
529
+ t .Errorf (`filepath.EvalSymlinks(%#q ): got %v, want %v` , link , got , target )
521
530
}
522
531
}
523
532
0 commit comments