package user
import (
+ "os"
"testing"
)
+var (
+ hasCgo = false
+ hasUSER = os.Getenv("USER") != ""
+ hasHOME = os.Getenv("HOME") != ""
+)
+
func checkUser(t *testing.T) {
t.Helper()
if !userImplemented {
userBuffer = 1 // force use of retry code
u, err := Current()
if err != nil {
- t.Fatalf("Current: %v (got %#v)", err, u)
+ if hasCgo || (hasUSER && hasHOME) {
+ t.Fatalf("Current: %v (got %#v)", err, u)
+ } else {
+ t.Skipf("skipping: %v", err)
+ }
}
if u.HomeDir == "" {
t.Errorf("didn't get a HomeDir")
want, err := Current()
if err != nil {
- t.Fatalf("Current: %v", err)
+ if hasCgo || (hasUSER && hasHOME) {
+ t.Fatalf("Current: %v", err)
+ } else {
+ t.Skipf("skipping: %v", err)
+ }
}
+
// TODO: Lookup() has a fast path that calls Current() and returns if the
// usernames match, so this test does not exercise very much. It would be
// good to try and test finding a different user than the current user.
want, err := Current()
if err != nil {
- t.Fatalf("Current: %v", err)
+ if hasCgo || (hasUSER && hasHOME) {
+ t.Fatalf("Current: %v", err)
+ } else {
+ t.Skipf("skipping: %v", err)
+ }
}
+
got, err := LookupId(want.Uid)
if err != nil {
t.Fatalf("LookupId: %v", err)
}()
groupBuffer = 1 // force use of retry code
checkGroup(t)
+
user, err := Current()
if err != nil {
- t.Fatalf("Current(): %v", err)
+ if hasCgo || (hasUSER && hasHOME) {
+ t.Fatalf("Current: %v", err)
+ } else {
+ t.Skipf("skipping: %v", err)
+ }
}
g1, err := LookupGroupId(user.Gid)
func TestGroupIds(t *testing.T) {
checkGroupList(t)
+
user, err := Current()
if err != nil {
- t.Fatalf("Current(): %v", err)
+ if hasCgo || (hasUSER && hasHOME) {
+ t.Fatalf("Current: %v", err)
+ } else {
+ t.Skipf("skipping: %v", err)
+ }
}
+
gids, err := user.GroupIds()
if err != nil {
t.Fatalf("%+v.GroupIds(): %v", user, err)