66package files
77
88import (
9+ "fmt"
910 "os"
11+ "os/user"
1012 "path/filepath"
13+ "strings"
1114 "testing"
1215
1316 "github.com/sylabs/singularity/v4/internal/pkg/test"
14- "gotest.tools/v3/golden"
1517)
1618
1719func TestPasswd (t * testing.T ) {
@@ -26,29 +28,33 @@ func TestPasswd(t *testing.T) {
2628 t .Errorf ("should have failed with bad passwd file" )
2729 }
2830
29- // Test how Passwd() works with an empty file
31+ // Adding current user to an empty file
3032 f , err := os .CreateTemp ("" , "empty-passwd-" )
3133 if err != nil {
32- t .Error (err )
34+ t .Fatal (err )
3335 }
3436 emptyPasswd := f .Name ()
3537 defer os .Remove (emptyPasswd )
3638 f .Close ()
3739
3840 _ , err = Passwd (emptyPasswd , "/home" , uid , nil )
3941 if err != nil {
40- t .Error ( err )
42+ t .Fatalf ( "Unexpected error in Passwd() when adding uid %d: %v" , uid , err )
4143 }
4244
45+ // Modifying root user in test file
4346 inputPasswdFilePath := filepath .Join ("." , "testdata" , "passwd.in" )
44- testUID := 0
45- testHomeDir := "/tmp"
46- testGoldenFile := "passwd.root.customhome.golden"
47- bytes , err := Passwd (inputPasswdFilePath , testHomeDir , testUID , nil )
47+ outputPasswd , err := Passwd (inputPasswdFilePath , "/tmp" , 0 , nil )
4848 if err != nil {
49- t .Errorf ("Unexpected error encountered calling Passwd(): %v" , err )
50- return
49+ t .Fatalf ("Unexpected error in Passwd() when modifying root entry: %v" , err )
5150 }
5251
53- golden .Assert (t , string (bytes ), testGoldenFile , "mismatch in Passwd() invocation (uid: %d; requested homeDir: %#v)" , testUID , testHomeDir )
52+ rootUser , err := user .Lookup ("root" )
53+ if err != nil {
54+ t .Fatal (err )
55+ }
56+ expectRootEntry := fmt .Sprintf ("root:x:0:0:%s:/tmp:/bin/ash\n " , rootUser .Name )
57+ if ! strings .HasPrefix (string (outputPasswd ), expectRootEntry ) {
58+ t .Errorf ("Expected root entry %q, not found in:\n %s" , expectRootEntry , string (outputPasswd ))
59+ }
5460}
0 commit comments