github.com/apptainer/singularity@v3.1.1+incompatible/internal/pkg/build/sources/conveyorPacker_scratch_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_test
     7  
     8  import (
     9  	"os"
    10  	"testing"
    11  
    12  	"github.com/sylabs/singularity/internal/pkg/build/sources"
    13  	"github.com/sylabs/singularity/internal/pkg/test"
    14  	"github.com/sylabs/singularity/pkg/build/types"
    15  	"github.com/sylabs/singularity/pkg/build/types/parser"
    16  )
    17  
    18  const scratchDef = "../../../../pkg/build/types/parser/testdata_good/scratch/scratch"
    19  
    20  func TestScratchConveyor(t *testing.T) {
    21  
    22  	if testing.Short() {
    23  		t.SkipNow()
    24  	}
    25  
    26  	test.DropPrivilege(t)
    27  	defer test.ResetPrivilege(t)
    28  
    29  	defFile, err := os.Open(scratchDef)
    30  	if err != nil {
    31  		t.Fatalf("unable to open file %s: %v\n", scratchDef, err)
    32  	}
    33  	defer defFile.Close()
    34  
    35  	b, err := types.NewBundle("", "sbuild-scratch")
    36  	if err != nil {
    37  		return
    38  	}
    39  
    40  	b.Recipe, err = parser.ParseDefinitionFile(defFile)
    41  	if err != nil {
    42  		t.Fatalf("failed to parse definition file %s: %v\n", scratchDef, err)
    43  	}
    44  
    45  	c := &sources.ScratchConveyor{}
    46  
    47  	err = c.Get(b)
    48  	// clean up tmpfs since assembler isnt called
    49  	defer c.CleanUp()
    50  	if err != nil {
    51  		t.Fatalf("failed to Get from %s: %v\n", scratchDef, err)
    52  	}
    53  }
    54  
    55  func TestScratchPacker(t *testing.T) {
    56  	test.DropPrivilege(t)
    57  	defer test.ResetPrivilege(t)
    58  
    59  	defFile, err := os.Open(scratchDef)
    60  	if err != nil {
    61  		t.Fatalf("unable to open file %s: %v\n", scratchDef, err)
    62  	}
    63  	defer defFile.Close()
    64  
    65  	b, err := types.NewBundle("", "sbuild-scratch")
    66  	if err != nil {
    67  		return
    68  	}
    69  
    70  	b.Recipe, err = parser.ParseDefinitionFile(defFile)
    71  	if err != nil {
    72  		t.Fatalf("failed to parse definition file %s: %v\n", scratchDef, err)
    73  	}
    74  
    75  	cp := &sources.ScratchConveyorPacker{}
    76  
    77  	err = cp.Get(b)
    78  	// clean up tmpfs since assembler isnt called
    79  	defer cp.CleanUp()
    80  	if err != nil {
    81  		t.Fatalf("failed to Get from %s: %v\n", scratchDef, err)
    82  	}
    83  
    84  	_, err = cp.Pack()
    85  	if err != nil {
    86  		t.Fatalf("failed to Pack from %s: %v\n", scratchDef, err)
    87  	}
    88  }