github.com/apptainer/singularity@v3.1.1+incompatible/internal/pkg/build/assemblers/assembler_sif_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 URIs of this project regarding your 4 // rights to use or distribute this software. 5 6 package assemblers_test 7 8 import ( 9 "os" 10 "testing" 11 12 "github.com/sylabs/singularity/internal/pkg/build/assemblers" 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 useragent "github.com/sylabs/singularity/pkg/util/user-agent" 17 ) 18 19 const ( 20 assemblerDockerURI = "docker://alpine" 21 assemblerDockerDest = "/tmp/docker_alpine_assemble_test.sif" 22 assemblerShubURI = "shub://ikaneshiro/singularityhub:latest" 23 assemblerShubDest = "/tmp/shub_alpine_assemble_test.sif" 24 ) 25 26 func TestMain(m *testing.M) { 27 useragent.InitValue("singularity", "3.0.0-alpha.1-303-gaed8d30-dirty") 28 29 os.Exit(m.Run()) 30 } 31 32 // TestSIFAssemblerDocker sees if we can build a SIF image from an image from a Docker registry 33 func TestSIFAssemblerDocker(t *testing.T) { 34 test.DropPrivilege(t) 35 defer test.ResetPrivilege(t) 36 37 b, err := types.NewBundle("", "sbuild-SIFAssembler") 38 if err != nil { 39 return 40 } 41 42 b.Recipe, err = types.NewDefinitionFromURI(assemblerDockerURI) 43 if err != nil { 44 t.Fatalf("unable to parse URI %s: %v\n", assemblerDockerURI, err) 45 } 46 47 ocp := &sources.OCIConveyorPacker{} 48 49 if err := ocp.Get(b); err != nil { 50 t.Fatalf("failed to Get from %s: %v\n", assemblerDockerURI, err) 51 } 52 53 _, err = ocp.Pack() 54 if err != nil { 55 t.Fatalf("failed to Pack from %s: %v\n", assemblerDockerURI, err) 56 } 57 58 a := &assemblers.SIFAssembler{} 59 60 err = a.Assemble(b, assemblerDockerDest) 61 if err != nil { 62 t.Fatalf("failed to assemble from %s: %v\n", assemblerDockerURI, err) 63 } 64 65 defer os.Remove(assemblerDockerDest) 66 } 67 68 // TestSIFAssemblerShub sees if we can build a SIF image from an image from a Singularity registry 69 func TestSIFAssemblerShub(t *testing.T) { 70 test.DropPrivilege(t) 71 defer test.ResetPrivilege(t) 72 73 b, err := types.NewBundle("", "sbuild-SIFAssembler") 74 if err != nil { 75 return 76 } 77 78 b.Recipe, err = types.NewDefinitionFromURI(assemblerShubURI) 79 if err != nil { 80 t.Fatalf("unable to parse URI %s: %v\n", assemblerShubURI, err) 81 } 82 83 scp := &sources.ShubConveyorPacker{} 84 85 if err := scp.Get(b); err != nil { 86 t.Fatalf("failed to Get from %s: %v\n", assemblerShubURI, err) 87 } 88 89 _, err = scp.Pack() 90 if err != nil { 91 t.Fatalf("failed to Pack from %s: %v\n", assemblerShubURI, err) 92 } 93 94 a := &assemblers.SIFAssembler{} 95 96 err = a.Assemble(b, assemblerShubDest) 97 if err != nil { 98 t.Fatalf("failed to assemble from %s: %v\n", assemblerShubURI, err) 99 } 100 101 defer os.Remove(assemblerShubDest) 102 }