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 }