summaryrefslogtreecommitdiffstats
path: root/src/cmd/go/help_test.go
blob: 3e1d817ca5b236bf4954c1c3f3fd1d6811ec92cd (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
// Copyright 2018 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 main_test

import (
	"bytes"
	"go/format"
	diffpkg "internal/diff"
	"os"
	"testing"

	"cmd/go/internal/help"
	"cmd/go/internal/modload"
)

func TestDocsUpToDate(t *testing.T) {
	t.Parallel()

	if !modload.Enabled() {
		t.Skipf("help.Help in GOPATH mode is configured by main.main")
	}

	buf := new(bytes.Buffer)
	// Match the command in mkalldocs.sh that generates alldocs.go.
	help.Help(buf, []string{"documentation"})
	internal := buf.Bytes()
	internal, err := format.Source(internal)
	if err != nil {
		t.Fatalf("gofmt docs: %v", err)
	}
	alldocs, err := os.ReadFile("alldocs.go")
	if err != nil {
		t.Fatalf("error reading alldocs.go: %v", err)
	}
	if !bytes.Equal(internal, alldocs) {
		t.Errorf("alldocs.go is not up to date; run mkalldocs.sh to regenerate it\n%s",
			diffpkg.Diff("go help documentation | gofmt", internal, "alldocs.go", alldocs))
	}
}