Setup GitHub Actions for auto remove trailing whitespaces (#4269)
* Setup GitHub Actions for auto remove trailing whitespaces This PR setup GitHub Actions for auto remove trailing whitespaces, if any non-go files are touched (.git directory are ignored) Signed-off-by: Yong Tang <yong.tang.github@outlook.com> * Remove TestTrailingWhitespace in presubmit tests Signed-off-by: Yong Tang <yong.tang.github@outlook.com> * paths and paths-ignore are mutually exlcusive so only keep paths-ignore Signed-off-by: Yong Tang <yong.tang.github@outlook.com> * Remove redundent bufio import Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
This commit is contained in:
parent
67f2048bb0
commit
263423edad
2 changed files with 36 additions and 62 deletions
36
.github/workflows/whitespace.yml
vendored
Normal file
36
.github/workflows/whitespace.yml
vendored
Normal file
|
@ -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
|
|
@ -3,7 +3,6 @@ package test
|
||||||
// These tests check for meta level items, like trailing whitespace, correct file naming etc.
|
// These tests check for meta level items, like trailing whitespace, correct file naming etc.
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"go/ast"
|
"go/ast"
|
||||||
"go/parser"
|
"go/parser"
|
||||||
|
@ -16,67 +15,6 @@ import (
|
||||||
"unicode"
|
"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) {
|
func TestFileNameHyphen(t *testing.T) {
|
||||||
walker := hasHyphenWalker{}
|
walker := hasHyphenWalker{}
|
||||||
err := filepath.Walk("..", walker.walk)
|
err := filepath.Walk("..", walker.walk)
|
||||||
|
|
Loading…
Add table
Reference in a new issue