mirror of https://github.com/knative/func.git
141 lines
3.0 KiB
Go
141 lines
3.0 KiB
Go
package main
|
|
|
|
import (
|
|
"io/fs"
|
|
"os"
|
|
"path"
|
|
"testing"
|
|
|
|
"gotest.tools/v3/assert"
|
|
)
|
|
|
|
const expectedScript string = `#!/usr/bin/env bash
|
|
|
|
# AUTOGENERATED FILE - edit versions in ./component-versions.json.
|
|
# If you want to add/modify these components, please read the how-to steps in
|
|
# ./cmd/components/main.go.
|
|
# You can regenerate with "make hack-generate-components".
|
|
|
|
set_versions() {
|
|
# Note: Kubernetes Version node image per Kind releases (full hash is suggested):
|
|
# https://github.com/kubernetes-sigs/kind/releases
|
|
kind_node_version=v1.32.0@sha256:c48c62eac5da28cdadcf560d1d8616cfa6783b58f0d94cf63ad1bf49600cb027
|
|
|
|
# find source-of-truth in component-versions.json to add/modify components
|
|
knative_serving_version="v1.19.0"
|
|
knative_eventing_version="v1.19.0"
|
|
contour_version="v1.19.0"
|
|
tekton_version="v1.1.0"
|
|
pac_version="v0.35.2"
|
|
}
|
|
`
|
|
|
|
const expectedJson string = `{
|
|
"Contour": {
|
|
"version": "v1.19.0",
|
|
"owner": "knative-extensions",
|
|
"repo": "net-contour"
|
|
},
|
|
"Eventing": {
|
|
"version": "v1.19.0",
|
|
"owner": "knative",
|
|
"repo": "eventing"
|
|
},
|
|
"KindNode": {
|
|
"version": "v1.32.0@sha256:c48c62eac5da28cdadcf560d1d8616cfa6783b58f0d94cf63ad1bf49600cb027"
|
|
},
|
|
"Pac": {
|
|
"version": "v0.35.2"
|
|
},
|
|
"Serving": {
|
|
"version": "v1.19.0",
|
|
"owner": "knative",
|
|
"repo": "serving"
|
|
},
|
|
"Tekton": {
|
|
"version": "v1.1.0"
|
|
}
|
|
}
|
|
`
|
|
|
|
// TestRead should just successfully unmarshal
|
|
func TestRead(t *testing.T) {
|
|
dir := t.TempDir()
|
|
|
|
// just assign this for simplicity, no need to the same variable twice
|
|
const jsonContent = expectedJson
|
|
|
|
tmpJson := path.Join(dir, "json.json")
|
|
err := os.WriteFile(tmpJson, []byte(jsonContent), fs.ModePerm)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
_, err = readVersions(tmpJson)
|
|
if err != nil {
|
|
t.Fatalf("failed to read json: %v", err)
|
|
}
|
|
}
|
|
|
|
// TestWrite ensures that writing both files succeeds with the correct file
|
|
// contents
|
|
func TestWrite(t *testing.T) {
|
|
dir := t.TempDir()
|
|
|
|
tmpJson := path.Join(dir, "f.json")
|
|
tmpSh := path.Join(dir, "f.sh")
|
|
|
|
// as if we just unmarshalled this
|
|
c := ComponentList{
|
|
"Contour": &Component{
|
|
Version: "v1.19.0",
|
|
Owner: "knative-extensions",
|
|
Repo: "net-contour",
|
|
},
|
|
"Eventing": {
|
|
Version: "v1.19.0",
|
|
Owner: "knative",
|
|
Repo: "eventing",
|
|
},
|
|
"KindNode": {
|
|
Version: "v1.32.0@sha256:c48c62eac5da28cdadcf560d1d8616cfa6783b58f0d94cf63ad1bf49600cb027",
|
|
},
|
|
"Pac": {
|
|
Version: "v0.35.2",
|
|
},
|
|
"Serving": {
|
|
Version: "v1.19.0",
|
|
Owner: "knative",
|
|
Repo: "serving",
|
|
},
|
|
"Tekton": {
|
|
Version: "v1.1.0",
|
|
},
|
|
}
|
|
|
|
// write to script (generate it)
|
|
err := writeScript(c, tmpSh)
|
|
if err != nil {
|
|
t.Fatalf("failed to generate script: %v", err)
|
|
}
|
|
// assert
|
|
fsh, err := os.ReadFile(tmpSh)
|
|
if err != nil {
|
|
t.Fatalf("failed to read file: %v", err)
|
|
}
|
|
assert.Equal(t, string(fsh), expectedScript)
|
|
|
|
// write to json
|
|
err = writeSource(c, tmpJson)
|
|
if err != nil {
|
|
t.Fatalf("failed to write json: %v", err)
|
|
}
|
|
|
|
// assert
|
|
fjson, err := os.ReadFile(tmpJson)
|
|
if err != nil {
|
|
t.Fatalf("failed to read json: %v", err)
|
|
}
|
|
assert.Equal(t, string(fjson), expectedJson)
|
|
}
|