github.com/apptainer/singularity@v3.1.1+incompatible/internal/pkg/build/sources/conveyorPacker_arch_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  	"os/exec"
    11  	"testing"
    12  
    13  	"github.com/sylabs/singularity/internal/pkg/build/sources"
    14  	"github.com/sylabs/singularity/internal/pkg/test"
    15  	"github.com/sylabs/singularity/pkg/build/types"
    16  	"github.com/sylabs/singularity/pkg/build/types/parser"
    17  )
    18  
    19  const archDef = "../../../../examples/arch/Singularity"
    20  
    21  func TestArchConveyor(t *testing.T) {
    22  
    23  	if testing.Short() {
    24  		t.SkipNow()
    25  	}
    26  
    27  	if _, err := exec.LookPath("pacstrap"); err != nil {
    28  		t.Skip("skipping test, pacstrap not installed")
    29  	}
    30  
    31  	test.EnsurePrivilege(t)
    32  
    33  	defFile, err := os.Open(archDef)
    34  	if err != nil {
    35  		t.Fatalf("unable to open file %s: %v\n", archDef, err)
    36  	}
    37  	defer defFile.Close()
    38  
    39  	// create bundle to build into
    40  	b, err := types.NewBundle("", "sbuild-arch")
    41  	if err != nil {
    42  		return
    43  	}
    44  
    45  	b.Recipe, err = parser.ParseDefinitionFile(defFile)
    46  	if err != nil {
    47  		t.Fatalf("failed to parse definition file %s: %v\n", archDef, err)
    48  	}
    49  
    50  	cp := &sources.ArchConveyorPacker{}
    51  
    52  	err = cp.Get(b)
    53  	// clean up tmpfs since assembler isnt called
    54  	defer cp.CleanUp()
    55  	if err != nil {
    56  		t.Fatalf("failed to Get from %s: %v\n", archDef, err)
    57  	}
    58  }
    59  
    60  func TestArchPacker(t *testing.T) {
    61  	if _, err := exec.LookPath("pacstrap"); err != nil {
    62  		t.Skip("skipping test, pacstrap not installed")
    63  	}
    64  
    65  	test.EnsurePrivilege(t)
    66  
    67  	defFile, err := os.Open(archDef)
    68  	if err != nil {
    69  		t.Fatalf("unable to open file %s: %v\n", archDef, err)
    70  	}
    71  	defer defFile.Close()
    72  
    73  	// create bundle to build into
    74  	b, err := types.NewBundle("", "sbuild-arch")
    75  	if err != nil {
    76  		return
    77  	}
    78  
    79  	b.Recipe, err = parser.ParseDefinitionFile(defFile)
    80  	if err != nil {
    81  		t.Fatalf("failed to parse definition file %s: %v\n", archDef, err)
    82  	}
    83  
    84  	cp := &sources.ArchConveyorPacker{}
    85  
    86  	err = cp.Get(b)
    87  	// clean up tmpfs since assembler isnt called
    88  	defer cp.CleanUp()
    89  	if err != nil {
    90  		t.Fatalf("failed to Get from %s: %v\n", archDef, err)
    91  	}
    92  
    93  	_, err = cp.Pack()
    94  	if err != nil {
    95  		t.Fatalf("failed to Pack from %s: %v\n", archDef, err)
    96  	}
    97  }