]> Cypherpunks repositories - gostls13.git/commitdiff
go/doc: use subtests
authorJonathan Amsterdam <jba@google.com>
Fri, 17 Dec 2021 15:30:51 +0000 (10:30 -0500)
committerJonathan Amsterdam <jba@google.com>
Mon, 3 Jan 2022 23:45:06 +0000 (23:45 +0000)
Change the Test function to use sub-tests for each doc mode and
package.

This will allow more fine-grained test execution.

Change-Id: Ie3dda5791bda2781a60776886dd39fd18e670e24
Reviewed-on: https://go-review.googlesource.com/c/go/+/375094
Trust: Jonathan Amsterdam <jba@google.com>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/go/doc/doc_test.go

index 3d17036f01f69da1af42b1b4e63b4127f78f6dca..c8cdf9eb37f1c5c43ae437ca0be5ed7a676752f4 100644 (file)
@@ -100,58 +100,56 @@ func test(t *testing.T, mode Mode) {
 
        // test packages
        for _, pkg := range pkgs {
-               importPath := dataDir + "/" + pkg.Name
-               var files []*ast.File
-               for _, f := range pkg.Files {
-                       files = append(files, f)
-               }
-               doc, err := NewFromFiles(fset, files, importPath, mode)
-               if err != nil {
-                       t.Error(err)
-                       continue
-               }
+               t.Run(pkg.Name, func(t *testing.T) {
+                       importPath := dataDir + "/" + pkg.Name
+                       var files []*ast.File
+                       for _, f := range pkg.Files {
+                               files = append(files, f)
+                       }
+                       doc, err := NewFromFiles(fset, files, importPath, mode)
+                       if err != nil {
+                               t.Fatal(err)
+                       }
 
-               // golden files always use / in filenames - canonicalize them
-               for i, filename := range doc.Filenames {
-                       doc.Filenames[i] = filepath.ToSlash(filename)
-               }
+                       // golden files always use / in filenames - canonicalize them
+                       for i, filename := range doc.Filenames {
+                               doc.Filenames[i] = filepath.ToSlash(filename)
+                       }
 
-               // print documentation
-               var buf bytes.Buffer
-               if err := templateTxt.Execute(&buf, bundle{doc, fset}); err != nil {
-                       t.Error(err)
-                       continue
-               }
-               got := buf.Bytes()
+                       // print documentation
+                       var buf bytes.Buffer
+                       if err := templateTxt.Execute(&buf, bundle{doc, fset}); err != nil {
+                               t.Fatal(err)
+                       }
+                       got := buf.Bytes()
+
+                       // update golden file if necessary
+                       golden := filepath.Join(dataDir, fmt.Sprintf("%s.%d.golden", pkg.Name, mode))
+                       if *update {
+                               err := os.WriteFile(golden, got, 0644)
+                               if err != nil {
+                                       t.Fatal(err)
+                               }
+                       }
 
-               // update golden file if necessary
-               golden := filepath.Join(dataDir, fmt.Sprintf("%s.%d.golden", pkg.Name, mode))
-               if *update {
-                       err := os.WriteFile(golden, got, 0644)
+                       // get golden file
+                       want, err := os.ReadFile(golden)
                        if err != nil {
-                               t.Error(err)
+                               t.Fatal(err)
                        }
-                       continue
-               }
-
-               // get golden file
-               want, err := os.ReadFile(golden)
-               if err != nil {
-                       t.Error(err)
-                       continue
-               }
 
-               // compare
-               if !bytes.Equal(got, want) {
-                       t.Errorf("package %s\n\tgot:\n%s\n\twant:\n%s", pkg.Name, got, want)
-               }
+                       // compare
+                       if !bytes.Equal(got, want) {
+                               t.Errorf("package %s\n\tgot:\n%s\n\twant:\n%s", pkg.Name, got, want)
+                       }
+               })
        }
 }
 
 func Test(t *testing.T) {
-       test(t, 0)
-       test(t, AllDecls)
-       test(t, AllMethods)
+       t.Run("default", func(t *testing.T) { test(t, 0) })
+       t.Run("AllDecls", func(t *testing.T) { test(t, AllDecls) })
+       t.Run("AllMethods", func(t *testing.T) { test(t, AllMethods) })
 }
 
 func TestAnchorID(t *testing.T) {