github.com/apptainer/singularity@v3.1.1+incompatible/internal/pkg/build/sources/conveyorPacker_yum_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  	"os"
    10  	"os/exec"
    11  	"testing"
    12  
    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 yumDef = "../../../../examples/centos/Singularity"
    19  
    20  func TestYumConveyor(t *testing.T) {
    21  	if testing.Short() {
    22  		t.SkipNow()
    23  	}
    24  
    25  	_, dnfErr := exec.LookPath("dnf")
    26  	_, yumErr := exec.LookPath("yum")
    27  	if dnfErr != nil && yumErr != nil {
    28  		t.Skip("skipping test, neither dnf nor yum found")
    29  	}
    30  
    31  	test.EnsurePrivilege(t)
    32  
    33  	defFile, err := os.Open(yumDef)
    34  	if err != nil {
    35  		t.Fatalf("unable to open file %s: %v\n", yumDef, err)
    36  	}
    37  	defer defFile.Close()
    38  
    39  	// create bundle to build into
    40  	b, err := types.NewBundle("", "sbuild-yum")
    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", yumDef, err)
    48  	}
    49  
    50  	yc := &YumConveyor{}
    51  
    52  	err = yc.Get(b)
    53  	// clean up bundle since assembler isnt called
    54  	defer os.RemoveAll(yc.b.Path)
    55  	if err != nil {
    56  		t.Fatalf("failed to Get from %s: %v\n", yumDef, err)
    57  	}
    58  }
    59  
    60  func TestYumPacker(t *testing.T) {
    61  	_, dnfErr := exec.LookPath("dnf")
    62  	_, yumErr := exec.LookPath("yum")
    63  	if dnfErr != nil && yumErr != nil {
    64  		t.Skip("skipping test, neither dnf nor yum found")
    65  	}
    66  
    67  	test.EnsurePrivilege(t)
    68  
    69  	defFile, err := os.Open(yumDef)
    70  	if err != nil {
    71  		t.Fatalf("unable to open file %s: %v\n", yumDef, err)
    72  	}
    73  	defer defFile.Close()
    74  
    75  	// create bundle to build into
    76  	b, err := types.NewBundle("", "sbuild-yum")
    77  	if err != nil {
    78  		return
    79  	}
    80  
    81  	b.Recipe, err = parser.ParseDefinitionFile(defFile)
    82  	if err != nil {
    83  		t.Fatalf("failed to parse definition file %s: %v\n", yumDef, err)
    84  	}
    85  
    86  	ycp := &YumConveyorPacker{}
    87  
    88  	err = ycp.Get(b)
    89  	// clean up tmpfs since assembler isnt called
    90  	defer os.RemoveAll(ycp.b.Path)
    91  	if err != nil {
    92  		t.Fatalf("failed to Get from %s: %v\n", yumDef, err)
    93  	}
    94  
    95  	_, err = ycp.Pack()
    96  	if err != nil {
    97  		t.Fatalf("failed to Pack from %s: %v\n", yumDef, err)
    98  	}
    99  }