github.com/apptainer/singularity@v3.1.1+incompatible/internal/pkg/build/sources/conveyorPacker_zypper_test.go (about)

     1  // Copyright (c) 2018-2019, 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 zyppDef = "../../../../examples/opensuse/Singularity"
    19  
    20  func TestZypperConveyor(t *testing.T) {
    21  	if testing.Short() {
    22  		t.SkipNow()
    23  	}
    24  
    25  	test.EnsurePrivilege(t)
    26  
    27  	if _, err := exec.LookPath("zypper"); err != nil {
    28  		t.Skip("skipping test, zypper not found")
    29  	}
    30  
    31  	defFile, err := os.Open(zyppDef)
    32  	if err != nil {
    33  		t.Fatalf("unable to open file %s: %v\n", zyppDef, err)
    34  	}
    35  	defer defFile.Close()
    36  
    37  	// create bundle to build into
    38  	b, err := types.NewBundle("", "sbuild-zypper")
    39  	if err != nil {
    40  		return
    41  	}
    42  
    43  	b.Recipe, err = parser.ParseDefinitionFile(defFile)
    44  	if err != nil {
    45  		t.Fatalf("failed to parse definition file %s: %v\n", zyppDef, err)
    46  	}
    47  
    48  	zc := &ZypperConveyorPacker{}
    49  
    50  	err = zc.Get(b)
    51  	// clean up tmpfs since assembler isnt called
    52  	defer os.RemoveAll(zc.b.Path)
    53  	if err != nil {
    54  		t.Fatalf("failed to Get from %s: %v\n", zyppDef, err)
    55  	}
    56  }
    57  
    58  func TestZypperPacker(t *testing.T) {
    59  	test.EnsurePrivilege(t)
    60  
    61  	if _, err := exec.LookPath("zypper"); err != nil {
    62  		t.Skip("skipping test, zypper not found")
    63  	}
    64  
    65  	defFile, err := os.Open(zyppDef)
    66  	if err != nil {
    67  		t.Fatalf("unable to open file %s: %v\n", zyppDef, err)
    68  	}
    69  	defer defFile.Close()
    70  
    71  	// create bundle to build into
    72  	b, err := types.NewBundle("", "sbuild-zypper")
    73  	if err != nil {
    74  		return
    75  	}
    76  
    77  	b.Recipe, err = parser.ParseDefinitionFile(defFile)
    78  	if err != nil {
    79  		t.Fatalf("failed to parse definition file %s: %v\n", zyppDef, err)
    80  	}
    81  
    82  	zcp := &ZypperConveyorPacker{}
    83  
    84  	err = zcp.Get(b)
    85  	// clean up tmpfs since assembler isnt called
    86  	defer os.RemoveAll(zcp.b.Path)
    87  	if err != nil {
    88  		t.Fatalf("failed to Get from %s: %v\n", zyppDef, err)
    89  	}
    90  
    91  	_, err = zcp.Pack()
    92  	if err != nil {
    93  		t.Fatalf("failed to Pack from %s: %v\n", zyppDef, err)
    94  	}
    95  }