|
|
@@ -0,0 +1,52 @@
|
|
|
+// Copyright (C) 2021 The Syncthing Authors.
|
|
|
+//
|
|
|
+// This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
+// License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
|
+// You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
|
+
|
|
|
+package meta
|
|
|
+
|
|
|
+import (
|
|
|
+ "bytes"
|
|
|
+ "os"
|
|
|
+ "path/filepath"
|
|
|
+ "strings"
|
|
|
+ "testing"
|
|
|
+)
|
|
|
+
|
|
|
+// Checks for forbidden words in all .go files
|
|
|
+func TestForbiddenWords(t *testing.T) {
|
|
|
+ checkDirs := []string{"../cmd", "../lib", "../test", "../script"}
|
|
|
+ forbiddenWords := []string{
|
|
|
+ `"io/ioutil"`, // deprecated and should not be imported
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, dir := range checkDirs {
|
|
|
+ err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ if path == ".git" {
|
|
|
+ return filepath.SkipDir
|
|
|
+ }
|
|
|
+ if filepath.Ext(path) != ".go" || strings.HasSuffix(path, ".pb.go") {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+
|
|
|
+ bs, err := os.ReadFile(path)
|
|
|
+ if err != nil {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, word := range forbiddenWords {
|
|
|
+ if bytes.Contains(bs, []byte(word)) {
|
|
|
+ t.Errorf("%s: forbidden word %q", path, word)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+ })
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|