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  }