internal/site/dl_test.go
Ref: Size: 2.5 KiB History
package site
import (
"os"
"path/filepath"
"strings"
"testing"
)
func fixtureDist(t *testing.T) string {
t.Helper()
dist := filepath.Join(t.TempDir(), "v0.0.1")
if err := os.MkdirAll(dist, 0o755); err != nil {
t.Fatal(err)
}
files := map[string]string{
"eitri-server_v0.0.1_linux_amd64.tar.gz": strings.Repeat("x", 2048),
"eitri-cli_v0.0.1_linux_amd64.tar.gz": "bundle",
"SHA256SUMS": "abc123 eitri-server_v0.0.1_linux_amd64.tar.gz\ndef456 eitri-cli_v0.0.1_linux_amd64.tar.gz\n",
}
for name, body := range files {
if err := os.WriteFile(filepath.Join(dist, name), []byte(body), 0o644); err != nil {
t.Fatal(err)
}
}
return dist
}
func TestDownloadsPageListsArtifacts(t *testing.T) {
md, err := downloadsMarkdown(fixtureDist(t))
if err != nil {
t.Fatal(err)
}
for _, want := range []string{
"[eitri-server_v0.0.1_linux_amd64.tar.gz](/dl/v0.0.1/eitri-server_v0.0.1_linux_amd64.tar.gz)",
"abc123",
"sha256sum -c SHA256SUMS",
"[SHA256SUMS](/dl/v0.0.1/SHA256SUMS)",
"[openapi.json](/openapi.json)",
} {
if !strings.Contains(md, want) {
t.Errorf("downloads page missing %q:\n%s", want, md)
}
}
}
func TestDownloadsPageWithoutDist(t *testing.T) {
md, err := downloadsMarkdown("")
if err != nil {
t.Fatal(err)
}
if !strings.Contains(md, "No release is staged") {
t.Errorf("preview note missing:\n%s", md)
}
if !strings.Contains(md, "[openapi.json](/openapi.json)") {
t.Errorf("API spec link missing from preview:\n%s", md)
}
}
func TestDownloadsPageRequiresSums(t *testing.T) {
dist := filepath.Join(t.TempDir(), "v0.0.1")
if err := os.MkdirAll(dist, 0o755); err != nil {
t.Fatal(err)
}
if _, err := downloadsMarkdown(dist); err == nil {
t.Fatal("want error for dist dir without SHA256SUMS")
}
}
// TestDownloadsPageUnsummedFilesGetPlaceholder covers the one row that can
// carry no checksum: SHA256SUMS, which cannot list itself. Everything else a
// release stages — manifest.json included — has an entry.
func TestDownloadsPageUnsummedFilesGetPlaceholder(t *testing.T) {
dist := fixtureDist(t)
md, err := downloadsMarkdown(dist)
if err != nil {
t.Fatal(err)
}
if strings.Contains(md, "``") {
t.Errorf("empty sha rendered as bare backticks:\n%s", md)
}
if !strings.Contains(md, "| — |") {
t.Errorf("unsummed file missing placeholder:\n%s", md)
}
html, _, err := render([]byte(md), nil)
if err != nil {
t.Fatal(err)
}
if strings.Contains(string(html), "``") {
t.Errorf("stray backticks in rendered HTML:\n%s", html)
}
}