summaryrefslogtreecommitdiffstats
path: root/src/internal/godebugs/godebugs_test.go
blob: a1cb8d492a6f2215f05996d35c412b2183e48751 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Copyright 2023 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package godebugs_test

import (
	"internal/godebugs"
	"internal/testenv"
	"os"
	"runtime"
	"strings"
	"testing"
)

func TestAll(t *testing.T) {
	data, err := os.ReadFile("../../../doc/godebug.md")
	if err != nil {
		if os.IsNotExist(err) && (testenv.Builder() == "" || runtime.GOOS != "linux") {
			t.Skip(err)
		}
		t.Fatal(err)
	}
	doc := string(data)

	last := ""
	for _, info := range godebugs.All {
		if info.Name <= last {
			t.Errorf("All not sorted: %s then %s", last, info.Name)
		}
		last = info.Name

		if info.Package == "" {
			t.Errorf("Name=%s missing Package", info.Name)
		}
		if info.Changed != 0 && info.Old == "" {
			t.Errorf("Name=%s has Changed, missing Old", info.Name)
		}
		if info.Old != "" && info.Changed == 0 {
			t.Errorf("Name=%s has Old, missing Changed", info.Name)
		}
		if !strings.Contains(doc, "`"+info.Name+"`") {
			t.Errorf("Name=%s not documented in doc/godebug.md", info.Name)
		}
	}
}