version_test.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Copyright (c) Tailscale Inc & AUTHORS
  2. // SPDX-License-Identifier: BSD-3-Clause
  3. package version_test
  4. import (
  5. "bytes"
  6. "os"
  7. "testing"
  8. ts "tailscale.com"
  9. "tailscale.com/version"
  10. )
  11. func TestAlpineTag(t *testing.T) {
  12. if tag := readAlpineTag(t, "../Dockerfile.base"); tag == "" {
  13. t.Fatal(`"FROM alpine:" not found in Dockerfile.base`)
  14. } else if tag != ts.AlpineDockerTag {
  15. t.Errorf("alpine version mismatch: Dockerfile.base has %q; ALPINE.txt has %q", tag, ts.AlpineDockerTag)
  16. }
  17. if tag := readAlpineTag(t, "../Dockerfile"); tag == "" {
  18. t.Fatal(`"FROM alpine:" not found in Dockerfile`)
  19. } else if tag != ts.AlpineDockerTag {
  20. t.Errorf("alpine version mismatch: Dockerfile has %q; ALPINE.txt has %q", tag, ts.AlpineDockerTag)
  21. }
  22. }
  23. func readAlpineTag(t *testing.T, file string) string {
  24. f, err := os.ReadFile(file)
  25. if err != nil {
  26. t.Fatal(err)
  27. }
  28. for _, line := range bytes.Split(f, []byte{'\n'}) {
  29. line = bytes.TrimSpace(line)
  30. _, suf, ok := bytes.Cut(line, []byte("FROM alpine:"))
  31. if !ok {
  32. continue
  33. }
  34. return string(suf)
  35. }
  36. return ""
  37. }
  38. func TestShortAllocs(t *testing.T) {
  39. allocs := int(testing.AllocsPerRun(10000, func() {
  40. _ = version.Short()
  41. }))
  42. if allocs > 0 {
  43. t.Errorf("allocs = %v; want 0", allocs)
  44. }
  45. }