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  }