bashbrew/manifest/fetch_test.go

68 lines
2.4 KiB
Go

package manifest_test
import (
"errors"
"strings"
"testing"
"github.com/docker-library/bashbrew/manifest"
)
func TestFetchErrors(t *testing.T) {
repoName, tagName, _, err := manifest.Fetch("/dev/null", "testdata/bash:69.420")
if err == nil {
t.Fatalf("expected tag-not-found error, got repoName=%q, tagName=%q instead", repoName, tagName)
}
var tagNotFoundErr manifest.TagNotFoundError
if !errors.As(err, &tagNotFoundErr) {
t.Fatalf("expected tag-not-found error, got %q instead", err)
}
t.Logf("correct, expected error: %s", err)
repoName, tagName, _, err = manifest.Fetch("testdata", "nonexistent-project:1.2.3")
if err == nil {
t.Fatalf("expected manifest-not-found error, got repoName=%q, tagName=%q instead", repoName, tagName)
}
var manifestNotFoundErr manifest.ManifestNotFoundError
if !errors.As(err, &manifestNotFoundErr) {
t.Fatalf("expected manifest-not-found error, got %q instead", err)
}
t.Logf("correct, expected error: %s", err)
repoName, tagName, _, err = manifest.Fetch("/dev/null", "/proc/kmsg")
if err == nil {
t.Fatalf("expected filesystem error, got repoName=%q, tagName=%q instead", repoName, tagName)
}
if !strings.Contains(err.Error(), "permission denied") && !strings.Contains(err.Error(), "not permitted") {
t.Fatalf("expected filesystem error, got %q instead", err)
}
t.Logf("correct, expected error: %s", err)
repoName, tagName, _, err = manifest.Fetch("/dev/null", "./testdata")
if err == nil {
t.Fatalf("expected directory error, got repoName=%q, tagName=%q instead", repoName, tagName)
}
if !strings.Contains(err.Error(), "is a directory") {
t.Fatalf("expected directory error, got %q instead", err)
}
t.Logf("correct, expected error: %s", err)
repoName, tagName, _, err = manifest.Fetch("/dev/null", "https://nonexistent.subdomain.example.com/nonexistent-project:1.2.3")
if err == nil {
t.Fatalf("expected no such host error, got repoName=%q, tagName=%q instead", repoName, tagName)
}
if !strings.Contains(err.Error(), "no such host") {
t.Fatalf("expected no such host error, got %q instead", err)
}
t.Logf("correct, expected error: %s", err)
repoName, tagName, _, err = manifest.Fetch("/dev/null", "https://example.com:1.2.3")
if err == nil {
t.Fatalf("expected parse error, got repoName=%q, tagName=%q instead", repoName, tagName)
}
if !strings.HasPrefix(err.Error(), "Bad line:") {
t.Fatalf("expected parse error, got %q instead", err)
}
t.Logf("correct, expected error: %s", err)
}