@@ -2,21 +2,40 @@ package user
22
33import (
44"os"
5+ "os/exec"
6+ "runtime"
7+ "strings"
58"testing"
69)
710
8- func TestCurrentUsername (t * testing.T ) {
9- os .Setenv ("USER" , "" )
10- os .Setenv ("USERNAME" , "foobar" )
11+ func getWhoamiOutput () (string , error ) {
12+ output , err := exec .Command ("whoami" ).Output ()
13+ if err != nil {
14+ return "" , err
15+ }
16+ return strings .TrimSpace (string (output [:])), nil
17+ }
1118
19+ func TestCurrentUsername (t * testing.T ) {
1220user := CurrentUsername ()
13- if user != "foobar" {
14- t .Errorf ("expected foobar as user, got: %s" , user )
21+ if len ( user ) <= 0 {
22+ t .Errorf ("expected non-empty user, got: %s" , user )
1523}
16-
17- os .Setenv ("USER" , "gitea" )
24+ // Windows whoami is weird, so just skip remaining tests
25+ if runtime .GOOS == "windows" {
26+ t .Skip ("skipped test because of weird whoami on Windows" )
27+ }
28+ whoami , err := getWhoamiOutput ()
29+ if err != nil {
30+ t .Errorf ("failed to run whoami to test current user: %f" , err )
31+ }
32+ user = CurrentUsername ()
33+ if user != whoami {
34+ t .Errorf ("expected %s as user, got: %s" , whoami , user )
35+ }
36+ os .Setenv ("USER" , "spoofed" )
1837user = CurrentUsername ()
19- if user != "gitea" {
20- t .Errorf ("expected gitea as user, got: %s" , user )
38+ if user != whoami {
39+ t .Errorf ("expected %s as user, got: %s" , whoami , user )
2140}
2241}
0 commit comments