Documentation: automatically check that documentation is up to date

Since we always forget to update the documentation lets check this
automatically.
This commit is contained in:
aarzilli 2018-04-18 09:36:40 +02:00 committed by Derek Parker
parent 38ddb22b68
commit f27c91ba3c
13 changed files with 51 additions and 12 deletions

@ -51,4 +51,3 @@ Pass flags to the program you are debugging using `--`, for example:
* [dlv trace](dlv_trace.md) - Compile and begin tracing program.
* [dlv version](dlv_version.md) - Prints version.
###### Auto generated by spf13/cobra on 17-Apr-2018

@ -42,4 +42,3 @@ dlv attach pid [executable]
### SEE ALSO
* [dlv](dlv.md) - Delve is a debugger for the Go programming language.
###### Auto generated by spf13/cobra on 17-Apr-2018

@ -37,4 +37,3 @@ dlv connect addr
### SEE ALSO
* [dlv](dlv.md) - Delve is a debugger for the Go programming language.
###### Auto generated by spf13/cobra on 17-Apr-2018

@ -41,4 +41,3 @@ dlv core <executable> <core>
### SEE ALSO
* [dlv](dlv.md) - Delve is a debugger for the Go programming language.
###### Auto generated by spf13/cobra on 17-Apr-2018

@ -48,4 +48,3 @@ dlv debug [package]
### SEE ALSO
* [dlv](dlv.md) - Delve is a debugger for the Go programming language.
###### Auto generated by spf13/cobra on 17-Apr-2018

@ -42,4 +42,3 @@ dlv exec <path/to/binary>
### SEE ALSO
* [dlv](dlv.md) - Delve is a debugger for the Go programming language.
###### Auto generated by spf13/cobra on 17-Apr-2018

@ -41,4 +41,3 @@ dlv replay [trace directory]
### SEE ALSO
* [dlv](dlv.md) - Delve is a debugger for the Go programming language.
###### Auto generated by spf13/cobra on 17-Apr-2018

@ -37,4 +37,3 @@ dlv run
### SEE ALSO
* [dlv](dlv.md) - Delve is a debugger for the Go programming language.
###### Auto generated by spf13/cobra on 17-Apr-2018

@ -48,4 +48,3 @@ dlv test [package]
### SEE ALSO
* [dlv](dlv.md) - Delve is a debugger for the Go programming language.
###### Auto generated by spf13/cobra on 17-Apr-2018

@ -50,4 +50,3 @@ dlv trace [package] regexp
### SEE ALSO
* [dlv](dlv.md) - Delve is a debugger for the Go programming language.
###### Auto generated by spf13/cobra on 17-Apr-2018

@ -37,4 +37,3 @@ dlv version
### SEE ALSO
* [dlv](dlv.md) - Delve is a debugger for the Go programming language.
###### Auto generated by spf13/cobra on 17-Apr-2018

@ -270,6 +270,8 @@ https://github.com/mozilla/rr
RootCommand.AddCommand(replayCommand)
}
RootCommand.DisableAutoGenTag = true
return RootCommand
}

@ -1,4 +1,4 @@
package main
package main_test
import (
"bufio"
@ -14,8 +14,11 @@ import (
"testing"
"time"
"github.com/derekparker/delve/cmd/dlv/cmds"
protest "github.com/derekparker/delve/pkg/proc/test"
"github.com/derekparker/delve/pkg/terminal"
"github.com/derekparker/delve/service/rpc2"
"github.com/spf13/cobra/doc"
)
var testBackend string
@ -202,3 +205,48 @@ func TestOutput(t *testing.T) {
}
}
}
func checkAutogenDoc(t *testing.T, filename, gencommand string, generated []byte) {
saved := slurpFile(t, os.ExpandEnv(fmt.Sprintf("$GOPATH/src/github.com/derekparker/delve/%s", filename)))
if len(saved) != len(generated) {
t.Fatalf("%s: needs to be regenerated run scripts/gen-cli-docs.go", filename)
}
for i := range saved {
if saved[i] != generated[i] {
t.Fatalf("%s: needs to be regenerated; run %s", filename, gencommand)
}
}
}
func slurpFile(t *testing.T, filename string) []byte {
saved, err := ioutil.ReadFile(filename)
if err != nil {
t.Fatalf("Could not read %s: %v", filename, err)
}
return saved
}
// TestGeneratedDoc tests that the autogenerated documentation has been
// updated.
func TestGeneratedDoc(t *testing.T) {
// Checks gen-cli-docs.go
var generatedBuf bytes.Buffer
commands := terminal.DebugCommands(nil)
commands.WriteMarkdown(&generatedBuf)
cliDocFilename := "Documentation/cli/README.md"
checkAutogenDoc(t, cliDocFilename, "scripts/gen-cli-docs.go", generatedBuf.Bytes())
// Checks gen-usage-docs.go
tempDir, err := ioutil.TempDir(os.TempDir(), "test-gen-doc")
assertNoError(err, t, "TempDir")
defer cmds.SafeRemoveAll(tempDir)
doc.GenMarkdownTree(cmds.New(true), tempDir)
entries, err := ioutil.ReadDir(tempDir)
assertNoError(err, t, "ReadDir")
for _, doc := range entries {
docFilename := "Documentation/usage/" + doc.Name()
checkAutogenDoc(t, docFilename, "scripts/gen-usage-docs.go", slurpFile(t, tempDir+"/"+doc.Name()))
}
}