From 0c2685dbeea286a6ecf32bc3fd47d6202970164f Mon Sep 17 00:00:00 2001 From: per1234 Date: Mon, 19 Jul 2021 13:01:52 -0700 Subject: [PATCH] Add duplicate name check to registry data file validator The registry data file must be manually edited when a library name change request is received. Each library must have a unique name, so it's important to verify that no duplicates are introduced through these edits. --- .github/workflows/assets/validate-registry/main.go | 11 ++++++++++- .../assets/validate-registry/tests/test_all.py | 1 + .../tests/testdata/duplicate-name.txt | 4 ++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/assets/validate-registry/tests/testdata/duplicate-name.txt diff --git a/.github/workflows/assets/validate-registry/main.go b/.github/workflows/assets/validate-registry/main.go index 54410814..52acb177 100644 --- a/.github/workflows/assets/validate-registry/main.go +++ b/.github/workflows/assets/validate-registry/main.go @@ -39,7 +39,16 @@ func main() { } if !reflect.DeepEqual(rawRepos, filteredRepos) { - fmt.Fprintln(os.Stderr, "error: Registry data file contains duplicate entries") + fmt.Fprintln(os.Stderr, "error: Registry data file contains duplicate URLs") os.Exit(1) } + + nameMap := make(map[string]bool) + for _, entry := range rawRepos { + if _, found := nameMap[entry.LibraryName]; found { + fmt.Fprintf(os.Stderr, "error: Registry data file contains duplicates of name %s\n", entry.LibraryName) + os.Exit(1) + } + nameMap[entry.LibraryName] = true + } } diff --git a/.github/workflows/assets/validate-registry/tests/test_all.py b/.github/workflows/assets/validate-registry/tests/test_all.py index 91a1bdec..8b86851a 100644 --- a/.github/workflows/assets/validate-registry/tests/test_all.py +++ b/.github/workflows/assets/validate-registry/tests/test_all.py @@ -31,6 +31,7 @@ test_data_path = pathlib.Path(__file__).resolve().parent.joinpath("testdata") ("invalid-data-format.txt", False), ("invalid-url-format.txt", False), ("duplicate-url.txt", False), + ("duplicate-name.txt", False), ("valid.txt", True), ], ) diff --git a/.github/workflows/assets/validate-registry/tests/testdata/duplicate-name.txt b/.github/workflows/assets/validate-registry/tests/testdata/duplicate-name.txt new file mode 100644 index 00000000..389a0988 --- /dev/null +++ b/.github/workflows/assets/validate-registry/tests/testdata/duplicate-name.txt @@ -0,0 +1,4 @@ +https://github.com/arduino-libraries/Scheduler.git|Arduino|Scheduler +https://github.com/arduino-libraries/SD.git|Partner|SD +https://github.com/arduino-libraries/Servo.git|Recommended|Servo +https://github.com/arduino-libraries/Foo.git|Contributed|SD