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 }