aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/whitespace.yml36
-rw-r--r--test/presubmit_test.go62
2 files changed, 36 insertions, 62 deletions
diff --git a/.github/workflows/whitespace.yml b/.github/workflows/whitespace.yml
new file mode 100644
index 000000000..18d470887
--- /dev/null
+++ b/.github/workflows/whitespace.yml
@@ -0,0 +1,36 @@
+name: Remove Trailing Whitespaces
+
+on:
+ push:
+ branches:
+ - 'master'
+ paths-ignore:
+ - '**.go'
+
+jobs:
+ fix:
+ runs-on: ubuntu-latest
+ steps:
+ -
+ name: Checkout
+ uses: actions/checkout@v2
+ -
+ name: Remove Trailing Whitespaces
+ run: |
+ find . -not -path '*/\.git/*' -type f -not -name '*.go' -exec sed -i '' 's/[[:space:]]\{1,\}$//' {} \+
+ -
+ name: Set up Git
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: |
+ git config user.name "coredns-auto-trailing-whitespaces[bot]"
+ git config user.email "coredns-auto-trailing-whitespaces[bot]@users.noreply.github.com"
+ git remote set-url origin https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git
+ -
+ name: Commit and push changes
+ run: |
+ git add .
+ if output=$(git status --porcelain) && [ ! -z "$output" ]; then
+ git commit -m 'auto remove trailing whitespaces'
+ git push
+ fi
diff --git a/test/presubmit_test.go b/test/presubmit_test.go
index f2b4c8bea..5d519d759 100644
--- a/test/presubmit_test.go
+++ b/test/presubmit_test.go
@@ -3,7 +3,6 @@ package test
// These tests check for meta level items, like trailing whitespace, correct file naming etc.
import (
- "bufio"
"fmt"
"go/ast"
"go/parser"
@@ -16,67 +15,6 @@ import (
"unicode"
)
-func TestTrailingWhitespace(t *testing.T) {
- walker := hasTrailingWhitespaceWalker{}
- err := filepath.Walk("..", walker.walk)
-
- if err != nil {
- t.Fatal(err)
- }
-
- if len(walker.Errors) > 0 {
- for _, err = range walker.Errors {
- t.Error(err)
- }
- }
-}
-
-type hasTrailingWhitespaceWalker struct {
- Errors []error
-}
-
-func (w *hasTrailingWhitespaceWalker) walk(path string, info os.FileInfo, _ error) error {
- // Only handle regular files, skip files that are executable and skip file in the
- // root that start with a .
- if !info.Mode().IsRegular() {
- return nil
- }
- if info.Mode().Perm()&0111 != 0 {
- return nil
- }
- if strings.HasPrefix(path, "../.") {
- return nil
- }
- if strings.Contains(path, "/vendor") {
- return nil
- }
-
- file, err := os.Open(path)
- if err != nil {
- return nil
- }
- defer file.Close()
-
- scanner := bufio.NewScanner(file)
- for i := 1; scanner.Scan(); i++ {
- text := scanner.Text()
- trimmed := strings.TrimRightFunc(text, unicode.IsSpace)
- if len(text) != len(trimmed) {
- absPath, _ := filepath.Abs(path)
- w.Errors = append(w.Errors, fmt.Errorf("file %q has trailing whitespace at line %d, text: %q", absPath, i, text))
- }
- }
-
- err = scanner.Err()
-
- if err != nil {
- absPath, _ := filepath.Abs(path)
- err = fmt.Errorf("file %q: %v", absPath, err)
- }
-
- return err
-}
-
func TestFileNameHyphen(t *testing.T) {
walker := hasHyphenWalker{}
err := filepath.Walk("..", walker.walk)