From 4e9e5dad09bedc372b2cf389cc791d029420a1cf Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Fri, 7 May 2021 12:56:10 +0200 Subject: [PATCH] main: check that code is formatted in unit test Signed-off-by: Jason A. Donenfeld --- Makefile | 2 +- format_test.go | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 format_test.go diff --git a/Makefile b/Makefile index 223766b..c86ffa3 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ MAKEFLAGS += --no-print-directory generate-version-and-build: @export GIT_CEILING_DIRECTORIES="$(realpath $(CURDIR)/..)" && \ tag="$$(git describe --dirty 2>/dev/null)" && \ - ver="$$(printf 'package main\nconst Version = "%s"\n' "$$tag")" && \ + ver="$$(printf 'package main\n\nconst Version = "%s"\n' "$$tag")" && \ [ "$$(cat version.go 2>/dev/null)" != "$$ver" ] && \ echo "$$ver" > version.go && \ git update-index --assume-unchanged version.go || true diff --git a/format_test.go b/format_test.go new file mode 100644 index 0000000..60e212d --- /dev/null +++ b/format_test.go @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: MIT + * + * Copyright (C) 2021 WireGuard LLC. All Rights Reserved. + */ +package main + +import ( + "bytes" + "go/format" + "io/fs" + "os" + "path/filepath" + "sync" + "testing" +) + +func TestFormatting(t *testing.T) { + var wg sync.WaitGroup + filepath.WalkDir(".", func(path string, d fs.DirEntry, err error) error { + if err != nil { + t.Errorf("unable to walk %s: %v", path, err) + return nil + } + if d.IsDir() || filepath.Ext(path) != ".go" { + return nil + } + wg.Add(1) + go func(path string) { + defer wg.Done() + src, err := os.ReadFile(path) + if err != nil { + t.Errorf("unable to read %s: %v", path, err) + return + } + formatted, err := format.Source(src) + if err != nil { + t.Errorf("unable to format %s: %v", path, err) + return + } + if !bytes.Equal(src, formatted) { + t.Errorf("unformatted code: %s", path) + } + }(path) + return nil + }) + wg.Wait() +}