github.com/Racer159/jackal@v0.32.7-0.20240401174413-0bd2339e4f2e/src/pkg/packager/sources/new_test.go (about)

     1  // SPDX-License-Identifier: Apache-2.0
     2  // SPDX-FileCopyrightText: 2021-Present The Jackal Authors
     3  
     4  // Package sources contains core implementations of the PackageSource interface.
     5  package sources
     6  
     7  import (
     8  	"fmt"
     9  	"testing"
    10  
    11  	"github.com/Racer159/jackal/src/types"
    12  	"github.com/stretchr/testify/require"
    13  )
    14  
    15  var ociS *OCISource
    16  var urlS *URLSource
    17  var tarballS *TarballSource
    18  var splitS *SplitTarballSource
    19  var packageS *PackageSource
    20  
    21  type source struct {
    22  	pkgSrc  string
    23  	srcType string
    24  	source  PackageSource
    25  }
    26  
    27  var sources = []source{
    28  	{pkgSrc: "oci://ghcr.io/defenseunicorns/packages/init:1.0.0", srcType: "oci", source: ociS},
    29  	{pkgSrc: "sget://github.com/Racer159/jackal-hello-world:x86", srcType: "sget", source: urlS},
    30  	{pkgSrc: "sget://Racer159/jackal-hello-world:x86_64", srcType: "sget", source: urlS},
    31  	{pkgSrc: "https://github.com/Racer159/jackal/releases/download/v1.0.0/jackal-init-amd64-v1.0.0.tar.zst", srcType: "https", source: urlS},
    32  	{pkgSrc: "http://github.com/Racer159/jackal/releases/download/v1.0.0/jackal-init-amd64-v1.0.0.tar.zst", srcType: "http", source: urlS},
    33  	{pkgSrc: "jackal-init-amd64-v1.0.0.tar.zst", srcType: "tarball", source: tarballS},
    34  	{pkgSrc: "jackal-package-manifests-amd64-v1.0.0.tar", srcType: "tarball", source: tarballS},
    35  	{pkgSrc: "jackal-package-manifests-amd64-v1.0.0.tar.zst", srcType: "tarball", source: tarballS},
    36  	{pkgSrc: "some-dir/.part000", srcType: "split", source: splitS},
    37  }
    38  
    39  func Test_identifySourceType(t *testing.T) {
    40  	for _, source := range sources {
    41  		actual := Identify(source.pkgSrc)
    42  		require.Equalf(t, source.srcType, actual, fmt.Sprintf("source: %s", source))
    43  	}
    44  }
    45  
    46  func TestNew(t *testing.T) {
    47  	for _, source := range sources {
    48  		actual, err := New(&types.JackalPackageOptions{PackageSource: source.pkgSrc})
    49  		require.NoError(t, err)
    50  		require.IsType(t, source.source, actual)
    51  		require.Implements(t, packageS, actual)
    52  	}
    53  }