From 4a8c2d1d81c0c0cd1a034f7a835bf99560cd12fb Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Sat, 27 May 2023 14:38:28 +0200 Subject: [PATCH] registryurl: use sub-tests Also reformat the test-table to easier see what fields are used for each test in the table. Signed-off-by: Sebastiaan van Stijn --- registryurl/parse_test.go | 77 ++++++++++++++++++++++++++------------- 1 file changed, 52 insertions(+), 25 deletions(-) diff --git a/registryurl/parse_test.go b/registryurl/parse_test.go index 03a0e03..b5c161d 100644 --- a/registryurl/parse_test.go +++ b/registryurl/parse_test.go @@ -13,34 +13,61 @@ func TestHelperParseURL(t *testing.T) { expectedURL string err error }{ - {url: "foobar.docker.io", expectedURL: "//foobar.docker.io"}, - {url: "foobar.docker.io:2376", expectedURL: "//foobar.docker.io:2376"}, - {url: "//foobar.docker.io:2376", expectedURL: "//foobar.docker.io:2376"}, - {url: "http://foobar.docker.io:2376", expectedURL: "http://foobar.docker.io:2376"}, - {url: "https://foobar.docker.io:2376", expectedURL: "https://foobar.docker.io:2376"}, - {url: "https://foobar.docker.io:2376/some/path", expectedURL: "https://foobar.docker.io:2376/some/path"}, - {url: "https://foobar.docker.io:2376/some/other/path?foo=bar", expectedURL: "https://foobar.docker.io:2376/some/other/path"}, - {url: "/foobar.docker.io", err: errors.New("no hostname in URL")}, - {url: "ftp://foobar.docker.io:2376", err: errors.New("unsupported scheme: ftp")}, + { + url: "foobar.docker.io", + expectedURL: "//foobar.docker.io", + }, + { + url: "foobar.docker.io:2376", + expectedURL: "//foobar.docker.io:2376", + }, + { + url: "//foobar.docker.io:2376", + expectedURL: "//foobar.docker.io:2376", + }, + { + url: "http://foobar.docker.io:2376", + expectedURL: "http://foobar.docker.io:2376", + }, + { + url: "https://foobar.docker.io:2376", + expectedURL: "https://foobar.docker.io:2376", + }, + { + url: "https://foobar.docker.io:2376/some/path", + expectedURL: "https://foobar.docker.io:2376/some/path", + }, + { + url: "https://foobar.docker.io:2376/some/other/path?foo=bar", + expectedURL: "https://foobar.docker.io:2376/some/other/path", + }, + { + url: "/foobar.docker.io", + err: errors.New("no hostname in URL"), + }, + { + url: "ftp://foobar.docker.io:2376", + err: errors.New("unsupported scheme: ftp"), + }, } for _, tc := range tests { - u, err := Parse(tc.url) + tc := tc + t.Run(tc.url, func(t *testing.T) { + u, err := Parse(tc.url) - if tc.err == nil && err != nil { - t.Errorf("Error: failed to parse URL %q: %s", tc.url, err) - continue - } - if tc.err != nil && err == nil { - t.Errorf("Error: expected error %q, got none when parsing URL %q", tc.err, tc.url) - continue - } - if tc.err != nil && err.Error() != tc.err.Error() { - t.Errorf("Error: expected error %q, got %q when parsing URL %q", tc.err, err, tc.url) - continue - } - if u != nil && u.String() != tc.expectedURL { - t.Errorf("Error: expected URL: %q, but got %q for URL: %q", tc.expectedURL, u.String(), tc.url) - } + if tc.err == nil && err != nil { + t.Fatalf("Error: failed to parse URL %q: %s", tc.url, err) + } + if tc.err != nil && err == nil { + t.Fatalf("Error: expected error %q, got none when parsing URL %q", tc.err, tc.url) + } + if tc.err != nil && err.Error() != tc.err.Error() { + t.Fatalf("Error: expected error %q, got %q when parsing URL %q", tc.err, err, tc.url) + } + if u != nil && u.String() != tc.expectedURL { + t.Errorf("Error: expected URL: %q, but got %q for URL: %q", tc.expectedURL, u.String(), tc.url) + } + }) } }