github.com/apptainer/singularity@v3.1.1+incompatible/internal/pkg/build/sources/base_environment_test.go (about) 1 // Copyright (c) 2018, Sylabs Inc. All rights reserved. 2 // This software is licensed under a 3-clause BSD license. Please consult the 3 // LICENSE.md file distributed with the sources of this project regarding your 4 // rights to use or distribute this software. 5 6 package sources 7 8 import ( 9 "io/ioutil" 10 "os" 11 "testing" 12 13 "github.com/sylabs/singularity/internal/pkg/test" 14 ) 15 16 func testWithGoodDir(t *testing.T, f func(d string) error) { 17 d, err := ioutil.TempDir(os.TempDir(), "test") 18 if err != nil { 19 t.Fatalf("Failed to make temporary directory: %v", err) 20 } 21 defer os.RemoveAll(d) 22 23 if err := f(d); err != nil { 24 t.Fatalf("Unexpected failure: %v", err) 25 } 26 } 27 28 func testWithBadDir(t *testing.T, f func(d string) error) { 29 if err := f("/this/will/be/a/problem"); err == nil { 30 t.Fatalf("Unexpected success with bad directory") 31 } 32 } 33 34 func TestMakeDirs(t *testing.T) { 35 test.DropPrivilege(t) 36 defer test.ResetPrivilege(t) 37 38 testWithGoodDir(t, makeDirs) 39 testWithBadDir(t, makeDirs) 40 } 41 42 func TestMakeSymlinks(t *testing.T) { 43 test.DropPrivilege(t) 44 defer test.ResetPrivilege(t) 45 46 testWithGoodDir(t, makeSymlinks) 47 testWithBadDir(t, makeSymlinks) 48 } 49 50 func TestMakeFiles(t *testing.T) { 51 test.DropPrivilege(t) 52 defer test.ResetPrivilege(t) 53 54 testWithGoodDir(t, func(d string) error { 55 if err := makeDirs(d); err != nil { 56 return err 57 } 58 return makeFiles(d) 59 }) 60 testWithBadDir(t, makeFiles) 61 } 62 63 func TestMakeBaseEnv(t *testing.T) { 64 test.DropPrivilege(t) 65 defer test.ResetPrivilege(t) 66 67 testWithGoodDir(t, makeBaseEnv) 68 testWithBadDir(t, makeBaseEnv) 69 }