diff mbox series

[v3,32/35] userdiff golang: add a rule to match "package"

Message ID 20210224195129.4004-33-avarab@gmail.com (mailing list archive)
State New
Headers show
Series userdiff: refactor + test + doc + misc improvements | expand

Commit Message

Ævar Arnfjörð Bjarmason Feb. 24, 2021, 7:51 p.m. UTC
Improve the "golang" built-in pattern to match "package" lines, as
they weren't matched before changing e.g. the imports would commonly
result in an empty hunk header, now we'll instead show the package
name.

I used https://blog.golang.org/package-names as a guide here, but
e.g. "foo_bar" is still valid syntax, so let's let it pass but veer on
the side of not having false positives.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 t/t4018/golang | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
 userdiff.c     |  2 ++
 2 files changed, 51 insertions(+)

Comments

Johannes Sixt Feb. 26, 2021, 8:03 a.m. UTC | #1
Am 24.02.21 um 20:51 schrieb Ævar Arnfjörð Bjarmason:
> Improve the "golang" built-in pattern to match "package" lines, as
> they weren't matched before changing e.g. the imports would commonly
> result in an empty hunk header, now we'll instead show the package
> name.
> 
> I used https://blog.golang.org/package-names as a guide here, but
> e.g. "foo_bar" is still valid syntax, so let's let it pass but veer on
> the side of not having false positives.
> 
> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
> ---
>  t/t4018/golang | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
>  userdiff.c     |  2 ++
>  2 files changed, 51 insertions(+)
> 
> diff --git a/t/t4018/golang b/t/t4018/golang
> index 252b6049da4..38f254cd269 100644
> --- a/t/t4018/golang
> +++ b/t/t4018/golang
> @@ -1,3 +1,52 @@
> +t4018 description: package
> +t4018 header: package main
> +package main
> +
> +import "fmt"
> +// ChangeMe
> +
> +t4018 description: package regex is selective -- ALLCAPS
> +t4018 header: package main
> +package ALLCAPS
> +
> +import "fmt"
> +// ChangeMe
> +
> +t4018 description: package regex is selective -- CamelCase
> +t4018 header: package main
> +package CamelCase
> +
> +import "fmt"
> +// ChangeMe
> +
> +t4018 description: package regex is selective -- 123
> +t4018 header: package main
> +package 123
> +
> +import "fmt"
> +// ChangeMe
> +
> +t4018 description: package regex is not overly selective -- x509
> +t4018 header: package x509
> +package x509
> +
> +import "fmt"
> +// ChangeMe
> +
> +t4018 description: package regex is not overly selective -- underbars
> +t4018 header: package not_conventional
> +package not_conventional
> +
> +import "fmt"
> +// ChangeMe
> +
> +t4018 description: package regex is not overly selective -- camelCase
> +t4018 header: package camelCase
> +package camelCase
> +
> +import "fmt"
> +// ChangeMe
> +
>  t4018 description: complex function
>  t4018 header: func (t *Test) RIGHT(a Type) (Type, error) {
>  type Test struct {
> diff --git a/userdiff.c b/userdiff.c
> index 704af241e44..bbbbfa33e0a 100644
> --- a/userdiff.c
> +++ b/userdiff.c
> @@ -128,6 +128,8 @@ IPATTERN("fountain",
>  	 /* -- */
>  	 "[^ \t-]+"),
>  PATTERNS("golang",
> +	 /* Packages */
> +	 "^(package[ \t][a-z][A-Za-z0-9_]+)[ \t]*\n"

Just a single whitespace character is permitted between the keyword and
the name?

>  	 /* Functions */
>  	 "^(func[ \t].*)\n"
>  	 /* Structs and interfaces */
>
diff mbox series

Patch

diff --git a/t/t4018/golang b/t/t4018/golang
index 252b6049da4..38f254cd269 100644
--- a/t/t4018/golang
+++ b/t/t4018/golang
@@ -1,3 +1,52 @@ 
+t4018 description: package
+t4018 header: package main
+package main
+
+import "fmt"
+// ChangeMe
+
+t4018 description: package regex is selective -- ALLCAPS
+t4018 header: package main
+package ALLCAPS
+
+import "fmt"
+// ChangeMe
+
+t4018 description: package regex is selective -- CamelCase
+t4018 header: package main
+package CamelCase
+
+import "fmt"
+// ChangeMe
+
+t4018 description: package regex is selective -- 123
+t4018 header: package main
+package 123
+
+import "fmt"
+// ChangeMe
+
+t4018 description: package regex is not overly selective -- x509
+t4018 header: package x509
+package x509
+
+import "fmt"
+// ChangeMe
+
+t4018 description: package regex is not overly selective -- underbars
+t4018 header: package not_conventional
+package not_conventional
+
+import "fmt"
+// ChangeMe
+
+t4018 description: package regex is not overly selective -- camelCase
+t4018 header: package camelCase
+package camelCase
+
+import "fmt"
+// ChangeMe
+
 t4018 description: complex function
 t4018 header: func (t *Test) RIGHT(a Type) (Type, error) {
 type Test struct {
diff --git a/userdiff.c b/userdiff.c
index 704af241e44..bbbbfa33e0a 100644
--- a/userdiff.c
+++ b/userdiff.c
@@ -128,6 +128,8 @@  IPATTERN("fountain",
 	 /* -- */
 	 "[^ \t-]+"),
 PATTERNS("golang",
+	 /* Packages */
+	 "^(package[ \t][a-z][A-Za-z0-9_]+)[ \t]*\n"
 	 /* Functions */
 	 "^(func[ \t].*)\n"
 	 /* Structs and interfaces */