@@ -2,21 +2,40 @@ package user
2
2
3
3
import (
4
4
"os"
5
+ "os/exec"
6
+ "runtime"
7
+ "strings"
5
8
"testing"
6
9
)
7
10
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
+ }
11
18
19
+ func TestCurrentUsername (t * testing.T ) {
12
20
user := 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 )
15
23
}
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" )
18
37
user = 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 )
21
40
}
22
41
}
0 commit comments