github.com/apptainer/singularity@v3.1.1+incompatible/internal/pkg/build/assemblers/assembler_sandbox_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 ) 17 18 const ( 19 assemblerDockerDestDir = "/tmp/docker_alpine_assemble_test" 20 assemblerShubDestDir = "/tmp/shub_alpine_assemble_test" 21 ) 22 23 // TestSandboxAssemblerDocker sees if we can build a sandbox from an image from a Docker registry 24 func TestSandboxAssemblerDocker(t *testing.T) { 25 test.DropPrivilege(t) 26 defer test.ResetPrivilege(t) 27 28 b, err := types.NewBundle("", "sbuild-sandboxAssembler") 29 if err != nil { 30 return 31 } 32 33 b.Recipe, err = types.NewDefinitionFromURI(assemblerDockerURI) 34 if err != nil { 35 t.Fatalf("unable to parse URI %s: %v\n", assemblerDockerURI, err) 36 } 37 38 ocp := &sources.OCIConveyorPacker{} 39 40 if err := ocp.Get(b); err != nil { 41 t.Fatalf("failed to Get from %s: %v\n", assemblerDockerURI, err) 42 } 43 44 _, err = ocp.Pack() 45 if err != nil { 46 t.Fatalf("failed to Pack from %s: %v\n", assemblerDockerURI, err) 47 } 48 49 a := &assemblers.SandboxAssembler{} 50 51 err = a.Assemble(b, assemblerDockerDestDir) 52 if err != nil { 53 t.Fatalf("failed to assemble from %s: %v\n", assemblerDockerURI, err) 54 } 55 56 defer os.RemoveAll(assemblerDockerDestDir) 57 } 58 59 // TestSandboxAssemblerShub sees if we can build a sandbox from an image from a Singularity registry 60 func TestSandboxAssemblerShub(t *testing.T) { 61 test.DropPrivilege(t) 62 defer test.ResetPrivilege(t) 63 64 b, err := types.NewBundle("", "sbuild-sandboxAssembler") 65 if err != nil { 66 return 67 } 68 69 b.Recipe, err = types.NewDefinitionFromURI(assemblerShubURI) 70 if err != nil { 71 t.Fatalf("unable to parse URI %s: %v\n", assemblerShubURI, err) 72 } 73 74 scp := &sources.ShubConveyorPacker{} 75 76 if err := scp.Get(b); err != nil { 77 t.Fatalf("failed to Get from %s: %v\n", assemblerShubURI, err) 78 } 79 80 _, err = scp.Pack() 81 if err != nil { 82 t.Fatalf("failed to Pack from %s: %v\n", assemblerShubURI, err) 83 } 84 85 a := &assemblers.SIFAssembler{} 86 87 err = a.Assemble(b, assemblerShubDestDir) 88 if err != nil { 89 t.Fatalf("failed to assemble from %s: %v\n", assemblerShubURI, err) 90 } 91 92 defer os.RemoveAll(assemblerShubDestDir) 93 }