Skip to content

Bump flatted from 3.2.2 to 3.4.2

79a4cf2
Select commit
Loading
Failed to load commit list.
Open

Bump flatted from 3.2.2 to 3.4.2 #119

Bump flatted from 3.2.2 to 3.4.2
79a4cf2
Select commit
Loading
Failed to load commit list.
Community-TC Integration / taskcluster-lib-urls go test succeeded Mar 20, 2026 in 2m 53s

Community-TC (pull_request)

Run library test suite - golang 1.23

Details

View task in Taskcluster | View logs in Taskcluster | View task group in Taskcluster

Task Status

Started: 2026-03-20T14:14:32.474Z
Resolved: 2026-03-20T14:15:28.571Z
Task Execution Time: 56 seconds, 97 milliseconds
Task Status: completed
Reason Resolved: completed
TaskId: I3amQyl9QaypbUedueDkcQ
RunId: 0

Artifacts

- public/logs/live_backing.log
- public/logs/live.log


[taskcluster 2026-03-20T14:14:32.830Z] Worker Type (proj-taskcluster/ci) settings:
[taskcluster 2026-03-20T14:14:32.830Z]   {
[taskcluster 2026-03-20T14:14:32.830Z]     "generic-worker": {
[taskcluster 2026-03-20T14:14:32.830Z]       "config": {
[taskcluster 2026-03-20T14:14:32.830Z]         "capacity": 2,
[taskcluster 2026-03-20T14:14:32.830Z]         "headlessTasks": true
[taskcluster 2026-03-20T14:14:32.830Z]       },
[taskcluster 2026-03-20T14:14:32.830Z]       "engine": "multiuser",
[taskcluster 2026-03-20T14:14:32.830Z]       "go-arch": "amd64",
[taskcluster 2026-03-20T14:14:32.830Z]       "go-os": "linux",
[taskcluster 2026-03-20T14:14:32.830Z]       "go-version": "go1.26.1",
[taskcluster 2026-03-20T14:14:32.830Z]       "release": "https://github.com/taskcluster/taskcluster/releases/tag/v97.1.0",
[taskcluster 2026-03-20T14:14:32.830Z]       "revision": "9f49391afb6bfa8e882f212b7af1d96708b6c7b6",
[taskcluster 2026-03-20T14:14:32.830Z]       "source": "https://github.com/taskcluster/taskcluster/commits/9f49391afb6bfa8e882f212b7af1d96708b6c7b6",
[taskcluster 2026-03-20T14:14:32.830Z]       "version": "97.1.0"
[taskcluster 2026-03-20T14:14:32.830Z]     },
[taskcluster 2026-03-20T14:14:32.830Z]     "image": "projects/community-tc-workers/global/images/generic-worker-ubuntu-24-04-staging-ptrehgbfweabnawqsnyu",
[taskcluster 2026-03-20T14:14:32.830Z]     "instance-id": "6975066865035963196",
[taskcluster 2026-03-20T14:14:32.830Z]     "instance-type": "projects/757942385826/machineTypes/n2-standard-8",
[taskcluster 2026-03-20T14:14:32.830Z]     "local-ipv4": "10.142.0.105",
[taskcluster 2026-03-20T14:14:32.830Z]     "machine-setup": {
[taskcluster 2026-03-20T14:14:32.830Z]       "maintainer": "taskcluster-notifications+workers@mozilla.com",
[taskcluster 2026-03-20T14:14:32.830Z]       "script": "https://raw.githubusercontent.com/taskcluster/community-tc-config/f6329c81d00bd92b5308ad6f7148dca7d5b81273/imagesets/generic-worker-ubuntu-24-04-staging/bootstrap.sh"
[taskcluster 2026-03-20T14:14:32.830Z]     },
[taskcluster 2026-03-20T14:14:32.830Z]     "project-id": "community-tc-workers",
[taskcluster 2026-03-20T14:14:32.830Z]     "public-hostname": "proj-taskcluster-ci-cbog8z8eryqylxhq5b9pow.c.community-tc-workers.internal",
[taskcluster 2026-03-20T14:14:32.830Z]     "public-ipv4": "34.139.106.37",
[taskcluster 2026-03-20T14:14:32.830Z]     "region": "us-east1",
[taskcluster 2026-03-20T14:14:32.830Z]     "zone": "us-east1-d"
[taskcluster 2026-03-20T14:14:32.830Z]   }
[taskcluster 2026-03-20T14:14:32.830Z] Task ID: I3amQyl9QaypbUedueDkcQ
[taskcluster 2026-03-20T14:14:32.830Z] === Task Starting ===
[taskcluster 2026-03-20T14:14:33.266Z] [d2g] Loading docker image
[taskcluster 2026-03-20T14:14:49.411Z] [d2g] Loaded docker image "docker.io/library/golang:1.23"
[taskcluster 2026-03-20T14:14:49.416Z] Executing command 0: docker run -t --name taskcontainer_SwQlXovtQbKdN7agHGjPzw --memory-swap -1 --pids-limit -1 '--add-host=localhost.localdomain:127.0.0.1' --env-file 'env.list' 'golang:1.23' /bin/bash -c 'curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.61.0 &&
[taskcluster 2026-03-20T14:14:49.416Z] git clone https://github.com/taskcluster/taskcluster-lib-urls.git repo
[taskcluster 2026-03-20T14:14:49.416Z] cd repo
[taskcluster 2026-03-20T14:14:49.416Z] git config advice.detachedHead false
[taskcluster 2026-03-20T14:14:49.416Z] git checkout 79a4cf220ecfde53321b7a2f93ac4dd949843464
[taskcluster 2026-03-20T14:14:49.416Z] go test -v -race ./...
[taskcluster 2026-03-20T14:14:49.416Z] golangci-lint run
[taskcluster 2026-03-20T14:14:49.416Z] '
golangci/golangci-lint info checking GitHub for tag 'v1.61.0'
golangci/golangci-lint info found version: 1.61.0 for v1.61.0/linux/amd64
golangci/golangci-lint info installed /go/bin/golangci-lint
Cloning into 'repo'...
remote: Enumerating objects: 842, done.
remote: Counting objects:   8% (1/12)
remote: Counting objects:  16% (2/12)
remote: Counting objects:  25% (3/12)
remote: Counting objects:  33% (4/12)
remote: Counting objects:  41% (5/12)
remote: Counting objects:  50% (6/12)
remote: Counting objects:  58% (7/12)
remote: Counting objects:  66% (8/12)
remote: Counting objects:  75% (9/12)
remote: Counting objects:  83% (10/12)
remote: Counting objects:  91% (11/12)
remote: Counting objects: 100% (12/12)
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects:   9% (1/11)
remote: Compressing objects:  18% (2/11)
remote: Compressing objects:  27% (3/11)
remote: Compressing objects:  36% (4/11)
remote: Compressing objects:  45% (5/11)
remote: Compressing objects:  54% (6/11)
remote: Compressing objects:  63% (7/11)
remote: Compressing objects:  72% (8/11)
remote: Compressing objects:  81% (9/11)
remote: Compressing objects:  90% (10/11)
remote: Compressing objects: 100% (11/11)
remote: Compressing objects: 100% (11/11), done.
Receiving objects:   0% (1/842)
Receiving objects:   1% (9/842)
Receiving objects:   2% (17/842)
Receiving objects:   3% (26/842)
Receiving objects:   4% (34/842)
Receiving objects:   5% (43/842)
Receiving objects:   6% (51/842)
Receiving objects:   7% (59/842)
Receiving objects:   8% (68/842)
Receiving objects:   9% (76/842)
Receiving objects:  10% (85/842)
Receiving objects:  11% (93/842)
Receiving objects:  12% (102/842)
Receiving objects:  13% (110/842)
Receiving objects:  14% (118/842)
Receiving objects:  15% (127/842)
Receiving objects:  16% (135/842)
Receiving objects:  17% (144/842)
Receiving objects:  18% (152/842)
Receiving objects:  19% (160/842)
Receiving objects:  20% (169/842)
Receiving objects:  21% (177/842)
Receiving objects:  22% (186/842)
Receiving objects:  23% (194/842)
Receiving objects:  24% (203/842)
Receiving objects:  25% (211/842)
Receiving objects:  26% (219/842)
Receiving objects:  27% (228/842)
Receiving objects:  28% (236/842)
Receiving objects:  29% (245/842)
Receiving objects:  30% (253/842)
Receiving objects:  31% (262/842)
Receiving objects:  32% (270/842)
Receiving objects:  33% (278/842)
Receiving objects:  34% (287/842)
Receiving objects:  35% (295/842)
Receiving objects:  36% (304/842)
Receiving objects:  37% (312/842)
Receiving objects:  38% (320/842)
Receiving objects:  39% (329/842)
Receiving objects:  40% (337/842)
Receiving objects:  41% (346/842)
Receiving objects:  42% (354/842)
Receiving objects:  43% (363/842)
Receiving objects:  44% (371/842)
Receiving objects:  45% (379/842)
Receiving objects:  46% (388/842)
Receiving objects:  47% (396/842)
Receiving objects:  48% (405/842)
Receiving objects:  49% (413/842)
Receiving objects:  50% (421/842)
Receiving objects:  51% (430/842)
Receiving objects:  52% (438/842)
Receiving objects:  53% (447/842)
Receiving objects:  54% (455/842)
Receiving objects:  55% (464/842)
Receiving objects:  56% (472/842)
Receiving objects:  57% (480/842)
Receiving objects:  58% (489/842)
Receiving objects:  59% (497/842)
Receiving objects:  60% (506/842)
Receiving objects:  61% (514/842)
Receiving objects:  62% (523/842)
Receiving objects:  63% (531/842)
Receiving objects:  64% (539/842)
Receiving objects:  65% (548/842)
Receiving objects:  66% (556/842)
Receiving objects:  67% (565/842)
Receiving objects:  68% (573/842)
Receiving objects:  69% (581/842)
Receiving objects:  70% (590/842)
Receiving objects:  71% (598/842)
Receiving objects:  72% (607/842)
Receiving objects:  73% (615/842)
Receiving objects:  74% (624/842)
Receiving objects:  75% (632/842)
Receiving objects:  76% (640/842)
Receiving objects:  77% (649/842)
Receiving objects:  78% (657/842)
Receiving objects:  79% (666/842)
Receiving objects:  80% (674/842)
Receiving objects:  81% (683/842)
Receiving objects:  82% (691/842)
Receiving objects:  83% (699/842)
Receiving objects:  84% (708/842)
Receiving objects:  85% (716/842)
Receiving objects:  86% (725/842)
Receiving objects:  87% (733/842)
Receiving objects:  88% (741/842)
Receiving objects:  89% (750/842)
Receiving objects:  90% (758/842)
Receiving objects:  91% (767/842)
Receiving objects:  92% (775/842)
Receiving objects:  93% (784/842)
remote: Total 842 (delta 5), reused 1 (delta 1), pack-reused 830 (from 3)
Receiving objects:  94% (792/842)
Receiving objects:  95% (800/842)
Receiving objects:  96% (809/842)
Receiving objects:  97% (817/842)
Receiving objects:  98% (826/842)
Receiving objects:  99% (834/842)
Receiving objects: 100% (842/842)
Receiving objects: 100% (842/842), 611.37 KiB | 9.26 MiB/s, done.
Resolving deltas:   0% (0/385)
Resolving deltas:   1% (4/385)
Resolving deltas:   2% (8/385)
Resolving deltas:   3% (13/385)
Resolving deltas:   4% (16/385)
Resolving deltas:   5% (20/385)
Resolving deltas:   6% (24/385)
Resolving deltas:   7% (27/385)
Resolving deltas:   8% (31/385)
Resolving deltas:   9% (35/385)
Resolving deltas:  10% (39/385)
Resolving deltas:  11% (43/385)
Resolving deltas:  12% (47/385)
Resolving deltas:  13% (51/385)
Resolving deltas:  14% (54/385)
Resolving deltas:  15% (58/385)
Resolving deltas:  16% (62/385)
Resolving deltas:  17% (66/385)
Resolving deltas:  18% (70/385)
Resolving deltas:  19% (74/385)
Resolving deltas:  20% (79/385)
Resolving deltas:  21% (81/385)
Resolving deltas:  22% (85/385)
Resolving deltas:  23% (89/385)
Resolving deltas:  24% (93/385)
Resolving deltas:  25% (97/385)
Resolving deltas:  26% (101/385)
Resolving deltas:  27% (104/385)
Resolving deltas:  28% (108/385)
Resolving deltas:  29% (112/385)
Resolving deltas:  30% (116/385)
Resolving deltas:  31% (121/385)
Resolving deltas:  32% (125/385)
Resolving deltas:  33% (128/385)
Resolving deltas:  34% (131/385)
Resolving deltas:  35% (135/385)
Resolving deltas:  36% (139/385)
Resolving deltas:  37% (143/385)
Resolving deltas:  38% (148/385)
Resolving deltas:  39% (151/385)
Resolving deltas:  40% (154/385)
Resolving deltas:  41% (158/385)
Resolving deltas:  42% (162/385)
Resolving deltas:  43% (166/385)
Resolving deltas:  44% (170/385)
Resolving deltas:  45% (174/385)
Resolving deltas:  46% (178/385)
Resolving deltas:  47% (181/385)
Resolving deltas:  48% (185/385)
Resolving deltas:  49% (189/385)
Resolving deltas:  50% (193/385)
Resolving deltas:  51% (197/385)
Resolving deltas:  52% (201/385)
Resolving deltas:  53% (205/385)
Resolving deltas:  54% (208/385)
Resolving deltas:  55% (212/385)
Resolving deltas:  56% (216/385)
Resolving deltas:  57% (220/385)
Resolving deltas:  58% (224/385)
Resolving deltas:  59% (230/385)
Resolving deltas:  60% (231/385)
Resolving deltas:  61% (235/385)
Resolving deltas:  62% (239/385)
Resolving deltas:  63% (243/385)
Resolving deltas:  64% (247/385)
Resolving deltas:  65% (251/385)
Resolving deltas:  66% (255/385)
Resolving deltas:  67% (258/385)
Resolving deltas:  68% (262/385)
Resolving deltas:  69% (266/385)
Resolving deltas:  70% (270/385)
Resolving deltas:  71% (274/385)
Resolving deltas:  72% (278/385)
Resolving deltas:  73% (282/385)
Resolving deltas:  74% (286/385)
Resolving deltas:  75% (289/385)
Resolving deltas:  76% (294/385)
Resolving deltas:  77% (299/385)
Resolving deltas:  78% (301/385)
Resolving deltas:  79% (305/385)
Resolving deltas:  80% (308/385)
Resolving deltas:  81% (312/385)
Resolving deltas:  82% (316/385)
Resolving deltas:  83% (320/385)
Resolving deltas:  84% (324/385)
Resolving deltas:  85% (328/385)
Resolving deltas:  86% (332/385)
Resolving deltas:  87% (337/385)
Resolving deltas:  88% (339/385)
Resolving deltas:  89% (343/385)
Resolving deltas:  90% (347/385)
Resolving deltas:  91% (351/385)
Resolving deltas:  92% (355/385)
Resolving deltas:  93% (359/385)
Resolving deltas:  94% (362/385)
Resolving deltas:  95% (366/385)
Resolving deltas:  96% (370/385)
Resolving deltas:  97% (374/385)
Resolving deltas:  98% (378/385)
Resolving deltas:  99% (382/385)
Resolving deltas: 100% (385/385)
Resolving deltas: 100% (385/385), done.
HEAD is now at 79a4cf2 Bump flatted from 3.2.2 to 3.4.2
go: downloading gopkg.in/yaml.v2 v2.4.0
=== RUN   TestURLs
    tcurls_test.go:69: ✓ api(`https://taskcluster.example.com`, `auth`, `v1`, `ping`) = `https://taskcluster.example.com/api/auth/v1/ping`
    tcurls_test.go:69: ✓ api(`https://taskcluster.example.com/`, `auth`, `v1`, `ping`) = `https://taskcluster.example.com/api/auth/v1/ping`
    tcurls_test.go:69: ✓ api(`https://taskcluster.example.com//`, `auth`, `v1`, `ping`) = `https://taskcluster.example.com/api/auth/v1/ping`
    tcurls_test.go:69: ✓ api(`12345`, `auth`, `v1`, `ping`) = `12345/api/auth/v1/ping`
    tcurls_test.go:69: ✓ api(``, `auth`, `v1`, `ping`) = `/api/auth/v1/ping`
    tcurls_test.go:69: ✓ api(`https://taskcluster.example.com`, `auth`, `v1`, `/ping`) = `https://taskcluster.example.com/api/auth/v1/ping`
    tcurls_test.go:69: ✓ api(`https://taskcluster.example.com/`, `auth`, `v1`, `/ping`) = `https://taskcluster.example.com/api/auth/v1/ping`
    tcurls_test.go:69: ✓ api(`https://taskcluster.example.com//`, `auth`, `v1`, `/ping`) = `https://taskcluster.example.com/api/auth/v1/ping`
    tcurls_test.go:69: ✓ api(`12345`, `auth`, `v1`, `/ping`) = `12345/api/auth/v1/ping`
    tcurls_test.go:69: ✓ api(``, `auth`, `v1`, `/ping`) = `/api/auth/v1/ping`
    tcurls_test.go:69: ✓ api(`https://taskcluster.example.com`, `auth`, `v1`, `//ping`) = `https://taskcluster.example.com/api/auth/v1/ping`
    tcurls_test.go:69: ✓ api(`https://taskcluster.example.com/`, `auth`, `v1`, `//ping`) = `https://taskcluster.example.com/api/auth/v1/ping`
    tcurls_test.go:69: ✓ api(`https://taskcluster.example.com//`, `auth`, `v1`, `//ping`) = `https://taskcluster.example.com/api/auth/v1/ping`
    tcurls_test.go:69: ✓ api(`12345`, `auth`, `v1`, `//ping`) = `12345/api/auth/v1/ping`
    tcurls_test.go:69: ✓ api(``, `auth`, `v1`, `//ping`) = `/api/auth/v1/ping`
    tcurls_test.go:69: ✓ api(`https://taskcluster.example.com`, `auth`, `v1`, `foo/ping`) = `https://taskcluster.example.com/api/auth/v1/foo/ping`
    tcurls_test.go:69: ✓ api(`https://taskcluster.example.com/`, `auth`, `v1`, `foo/ping`) = `https://taskcluster.example.com/api/auth/v1/foo/ping`
    tcurls_test.go:69: ✓ api(`https://taskcluster.example.com//`, `auth`, `v1`, `foo/ping`) = `https://taskcluster.example.com/api/auth/v1/foo/ping`
    tcurls_test.go:69: ✓ api(`12345`, `auth`, `v1`, `foo/ping`) = `12345/api/auth/v1/foo/ping`
    tcurls_test.go:69: ✓ api(``, `auth`, `v1`, `foo/ping`) = `/api/auth/v1/foo/ping`
    tcurls_test.go:69: ✓ api(`https://taskcluster.example.com`, `auth`, `v1`, `/foo/ping`) = `https://taskcluster.example.com/api/auth/v1/foo/ping`
    tcurls_test.go:69: ✓ api(`https://taskcluster.example.com/`, `auth`, `v1`, `/foo/ping`) = `https://taskcluster.example.com/api/auth/v1/foo/ping`
    tcurls_test.go:69: ✓ api(`https://taskcluster.example.com//`, `auth`, `v1`, `/foo/ping`) = `https://taskcluster.example.com/api/auth/v1/foo/ping`
    tcurls_test.go:69: ✓ api(`12345`, `auth`, `v1`, `/foo/ping`) = `12345/api/auth/v1/foo/ping`
    tcurls_test.go:69: ✓ api(``, `auth`, `v1`, `/foo/ping`) = `/api/auth/v1/foo/ping`
    tcurls_test.go:69: ✓ api(`https://taskcluster.example.com`, `auth`, `v1`, `//foo/ping`) = `https://taskcluster.example.com/api/auth/v1/foo/ping`
    tcurls_test.go:69: ✓ api(`https://taskcluster.example.com/`, `auth`, `v1`, `//foo/ping`) = `https://taskcluster.example.com/api/auth/v1/foo/ping`
    tcurls_test.go:69: ✓ api(`https://taskcluster.example.com//`, `auth`, `v1`, `//foo/ping`) = `https://taskcluster.example.com/api/auth/v1/foo/ping`
    tcurls_test.go:69: ✓ api(`12345`, `auth`, `v1`, `//foo/ping`) = `12345/api/auth/v1/foo/ping`
    tcurls_test.go:69: ✓ api(``, `auth`, `v1`, `//foo/ping`) = `/api/auth/v1/foo/ping`
    tcurls_test.go:69: ✓ docs(`https://taskcluster.example.com`, `something/in/docs`) = `https://taskcluster.example.com/docs/something/in/docs`
    tcurls_test.go:69: ✓ docs(`https://taskcluster.example.com/`, `something/in/docs`) = `https://taskcluster.example.com/docs/something/in/docs`
    tcurls_test.go:69: ✓ docs(`https://taskcluster.example.com//`, `something/in/docs`) = `https://taskcluster.example.com/docs/something/in/docs`
    tcurls_test.go:69: ✓ docs(`12345`, `something/in/docs`) = `12345/docs/something/in/docs`
    tcurls_test.go:69: ✓ docs(``, `something/in/docs`) = `/docs/something/in/docs`
    tcurls_test.go:69: ✓ docs(`12345`, `/something/in/docs`) = `12345/docs/something/in/docs`
    tcurls_test.go:69: ✓ docs(``, `/something/in/docs`) = `/docs/something/in/docs`
    tcurls_test.go:69: ✓ docs(`https://taskcluster.example.com`, `/something/in/docs`) = `https://taskcluster.example.com/docs/something/in/docs`
    tcurls_test.go:69: ✓ docs(`https://taskcluster.example.com/`, `/something/in/docs`) = `https://taskcluster.example.com/docs/something/in/docs`
    tcurls_test.go:69: ✓ docs(`https://taskcluster.example.com//`, `/something/in/docs`) = `https://taskcluster.example.com/docs/something/in/docs`
    tcurls_test.go:69: ✓ docs(`https://taskcluster.example.com`, `//something/in/docs`) = `https://taskcluster.example.com/docs/something/in/docs`
    tcurls_test.go:69: ✓ docs(`https://taskcluster.example.com/`, `//something/in/docs`) = `https://taskcluster.example.com/docs/something/in/docs`
    tcurls_test.go:69: ✓ docs(`https://taskcluster.example.com//`, `//something/in/docs`) = `https://taskcluster.example.com/docs/something/in/docs`
    tcurls_test.go:69: ✓ docs(`12345`, `//something/in/docs`) = `12345/docs/something/in/docs`
    tcurls_test.go:69: ✓ docs(``, `//something/in/docs`) = `/docs/something/in/docs`
    tcurls_test.go:69: ✓ schema(``, `auth`, `v1/something.json`) = `/schemas/auth/v1/something.json`
    tcurls_test.go:69: ✓ schema(`https://taskcluster.example.com`, `auth`, `v1/something.json`) = `https://taskcluster.example.com/schemas/auth/v1/something.json`
    tcurls_test.go:69: ✓ schema(`https://taskcluster.example.com/`, `auth`, `v1/something.json`) = `https://taskcluster.example.com/schemas/auth/v1/something.json`
    tcurls_test.go:69: ✓ schema(`https://taskcluster.example.com//`, `auth`, `v1/something.json`) = `https://taskcluster.example.com/schemas/auth/v1/something.json`
    tcurls_test.go:69: ✓ schema(`12345`, `auth`, `v1/something.json`) = `12345/schemas/auth/v1/something.json`
    tcurls_test.go:69: ✓ schema(`https://taskcluster.example.com`, `auth`, `/v1/something.json`) = `https://taskcluster.example.com/schemas/auth/v1/something.json`
    tcurls_test.go:69: ✓ schema(`https://taskcluster.example.com/`, `auth`, `/v1/something.json`) = `https://taskcluster.example.com/schemas/auth/v1/something.json`
    tcurls_test.go:69: ✓ schema(`https://taskcluster.example.com//`, `auth`, `/v1/something.json`) = `https://taskcluster.example.com/schemas/auth/v1/something.json`
    tcurls_test.go:69: ✓ schema(`12345`, `auth`, `/v1/something.json`) = `12345/schemas/auth/v1/something.json`
    tcurls_test.go:69: ✓ schema(``, `auth`, `/v1/something.json`) = `/schemas/auth/v1/something.json`
    tcurls_test.go:69: ✓ schema(`https://taskcluster.example.com`, `auth`, `//v1/something.json`) = `https://taskcluster.example.com/schemas/auth/v1/something.json`
    tcurls_test.go:69: ✓ schema(`https://taskcluster.example.com/`, `auth`, `//v1/something.json`) = `https://taskcluster.example.com/schemas/auth/v1/something.json`
    tcurls_test.go:69: ✓ schema(`https://taskcluster.example.com//`, `auth`, `//v1/something.json`) = `https://taskcluster.example.com/schemas/auth/v1/something.json`
    tcurls_test.go:69: ✓ schema(`12345`, `auth`, `//v1/something.json`) = `12345/schemas/auth/v1/something.json`
    tcurls_test.go:69: ✓ schema(``, `auth`, `//v1/something.json`) = `/schemas/auth/v1/something.json`
    tcurls_test.go:69: ✓ schema(`https://taskcluster.example.com`, `auth`, `v2/something.json`) = `https://taskcluster.example.com/schemas/auth/v2/something.json`
    tcurls_test.go:69: ✓ schema(`https://taskcluster.example.com/`, `auth`, `v2/something.json`) = `https://taskcluster.example.com/schemas/auth/v2/something.json`
    tcurls_test.go:69: ✓ schema(`https://taskcluster.example.com//`, `auth`, `v2/something.json`) = `https://taskcluster.example.com/schemas/auth/v2/something.json`
    tcurls_test.go:69: ✓ schema(`12345`, `auth`, `v2/something.json`) = `12345/schemas/auth/v2/something.json`
    tcurls_test.go:69: ✓ schema(``, `auth`, `v2/something.json`) = `/schemas/auth/v2/something.json`
    tcurls_test.go:69: ✓ schema(`https://taskcluster.example.com`, `auth`, `/v2/something.json`) = `https://taskcluster.example.com/schemas/auth/v2/something.json`
    tcurls_test.go:69: ✓ schema(`https://taskcluster.example.com/`, `auth`, `/v2/something.json`) = `https://taskcluster.example.com/schemas/auth/v2/something.json`
    tcurls_test.go:69: ✓ schema(`https://taskcluster.example.com//`, `auth`, `/v2/something.json`) = `https://taskcluster.example.com/schemas/auth/v2/something.json`
    tcurls_test.go:69: ✓ schema(`12345`, `auth`, `/v2/something.json`) = `12345/schemas/auth/v2/something.json`
    tcurls_test.go:69: ✓ schema(``, `auth`, `/v2/something.json`) = `/schemas/auth/v2/something.json`
    tcurls_test.go:69: ✓ schema(`https://taskcluster.example.com`, `auth`, `//v2/something.json`) = `https://taskcluster.example.com/schemas/auth/v2/something.json`
    tcurls_test.go:69: ✓ schema(`https://taskcluster.example.com/`, `auth`, `//v2/something.json`) = `https://taskcluster.example.com/schemas/auth/v2/something.json`
    tcurls_test.go:69: ✓ schema(`https://taskcluster.example.com//`, `auth`, `//v2/something.json`) = `https://taskcluster.example.com/schemas/auth/v2/something.json`
    tcurls_test.go:69: ✓ schema(`12345`, `auth`, `//v2/something.json`) = `12345/schemas/auth/v2/something.json`
    tcurls_test.go:69: ✓ schema(``, `auth`, `//v2/something.json`) = `/schemas/auth/v2/something.json`
    tcurls_test.go:69: ✓ apiReferenceSchema(`https://taskcluster.example.com`, `v1`) = `https://taskcluster.example.com/schemas/common/api-reference-v1.json`
    tcurls_test.go:69: ✓ apiReferenceSchema(`https://taskcluster.example.com/`, `v1`) = `https://taskcluster.example.com/schemas/common/api-reference-v1.json`
    tcurls_test.go:69: ✓ apiReferenceSchema(`https://taskcluster.example.com//`, `v1`) = `https://taskcluster.example.com/schemas/common/api-reference-v1.json`
    tcurls_test.go:69: ✓ apiReferenceSchema(`12345`, `v1`) = `12345/schemas/common/api-reference-v1.json`
    tcurls_test.go:69: ✓ apiReferenceSchema(``, `v1`) = `/schemas/common/api-reference-v1.json`
    tcurls_test.go:69: ✓ exchangesReferenceSchema(`https://taskcluster.example.com`, `v1`) = `https://taskcluster.example.com/schemas/common/exchanges-reference-v1.json`
    tcurls_test.go:69: ✓ exchangesReferenceSchema(`https://taskcluster.example.com/`, `v1`) = `https://taskcluster.example.com/schemas/common/exchanges-reference-v1.json`
    tcurls_test.go:69: ✓ exchangesReferenceSchema(`https://taskcluster.example.com//`, `v1`) = `https://taskcluster.example.com/schemas/common/exchanges-reference-v1.json`
    tcurls_test.go:69: ✓ exchangesReferenceSchema(`12345`, `v1`) = `12345/schemas/common/exchanges-reference-v1.json`
    tcurls_test.go:69: ✓ exchangesReferenceSchema(``, `v1`) = `/schemas/common/exchanges-reference-v1.json`
    tcurls_test.go:69: ✓ apiManifestSchema(`https://taskcluster.example.com`, `v1`) = `https://taskcluster.example.com/schemas/common/manifest-v1.json`
    tcurls_test.go:69: ✓ apiManifestSchema(`https://taskcluster.example.com/`, `v1`) = `https://taskcluster.example.com/schemas/common/manifest-v1.json`
    tcurls_test.go:69: ✓ apiManifestSchema(`https://taskcluster.example.com//`, `v1`) = `https://taskcluster.example.com/schemas/common/manifest-v1.json`
    tcurls_test.go:69: ✓ apiManifestSchema(`12345`, `v1`) = `12345/schemas/common/manifest-v1.json`
    tcurls_test.go:69: ✓ apiManifestSchema(``, `v1`) = `/schemas/common/manifest-v1.json`
    tcurls_test.go:69: ✓ metadataMetaschema(`https://taskcluster.example.com`, `v1`) = `https://taskcluster.example.com/schemas/common/metadata-metaschema.json`
    tcurls_test.go:69: ✓ metadataMetaschema(`https://taskcluster.example.com/`, `v1`) = `https://taskcluster.example.com/schemas/common/metadata-metaschema.json`
    tcurls_test.go:69: ✓ metadataMetaschema(`https://taskcluster.example.com//`, `v1`) = `https://taskcluster.example.com/schemas/common/metadata-metaschema.json`
    tcurls_test.go:69: ✓ metadataMetaschema(`12345`, `v1`) = `12345/schemas/common/metadata-metaschema.json`
    tcurls_test.go:69: ✓ metadataMetaschema(``, `v1`) = `/schemas/common/metadata-metaschema.json`
    tcurls_test.go:69: ✓ apiReference(``, `auth`, `v1`) = `/references/auth/v1/api.json`
    tcurls_test.go:69: ✓ apiReference(`https://taskcluster.example.com`, `auth`, `v1`) = `https://taskcluster.example.com/references/auth/v1/api.json`
    tcurls_test.go:69: ✓ apiReference(`https://taskcluster.example.com/`, `auth`, `v1`) = `https://taskcluster.example.com/references/auth/v1/api.json`
    tcurls_test.go:69: ✓ apiReference(`https://taskcluster.example.com//`, `auth`, `v1`) = `https://taskcluster.example.com/references/auth/v1/api.json`
    tcurls_test.go:69: ✓ apiReference(`12345`, `auth`, `v1`) = `12345/references/auth/v1/api.json`
    tcurls_test.go:69: ✓ exchangeReference(`https://taskcluster.example.com`, `auth`, `v1`) = `https://taskcluster.example.com/references/auth/v1/exchanges.json`
    tcurls_test.go:69: ✓ exchangeReference(`https://taskcluster.example.com/`, `auth`, `v1`) = `https://taskcluster.example.com/references/auth/v1/exchanges.json`
    tcurls_test.go:69: ✓ exchangeReference(`https://taskcluster.example.com//`, `auth`, `v1`) = `https://taskcluster.example.com/references/auth/v1/exchanges.json`
    tcurls_test.go:69: ✓ exchangeReference(`12345`, `auth`, `v1`) = `12345/references/auth/v1/exchanges.json`
    tcurls_test.go:69: ✓ exchangeReference(``, `auth`, `v1`) = `/references/auth/v1/exchanges.json`
    tcurls_test.go:69: ✓ ui(`12345`, `something`) = `12345/something`
    tcurls_test.go:69: ✓ ui(``, `something`) = `/something`
    tcurls_test.go:69: ✓ ui(`https://taskcluster.example.com`, `something`) = `https://taskcluster.example.com/something`
    tcurls_test.go:69: ✓ ui(`https://taskcluster.example.com/`, `something`) = `https://taskcluster.example.com/something`
    tcurls_test.go:69: ✓ ui(`https://taskcluster.example.com//`, `something`) = `https://taskcluster.example.com/something`
    tcurls_test.go:69: ✓ ui(`12345`, `/something`) = `12345/something`
    tcurls_test.go:69: ✓ ui(``, `/something`) = `/something`
    tcurls_test.go:69: ✓ ui(`https://taskcluster.example.com`, `/something`) = `https://taskcluster.example.com/something`
    tcurls_test.go:69: ✓ ui(`https://taskcluster.example.com/`, `/something`) = `https://taskcluster.example.com/something`
    tcurls_test.go:69: ✓ ui(`https://taskcluster.example.com//`, `/something`) = `https://taskcluster.example.com/something`
    tcurls_test.go:69: ✓ ui(`https://taskcluster.example.com`, `//something`) = `https://taskcluster.example.com/something`
    tcurls_test.go:69: ✓ ui(`https://taskcluster.example.com/`, `//something`) = `https://taskcluster.example.com/something`
    tcurls_test.go:69: ✓ ui(`https://taskcluster.example.com//`, `//something`) = `https://taskcluster.example.com/something`
    tcurls_test.go:69: ✓ ui(`12345`, `//something`) = `12345/something`
    tcurls_test.go:69: ✓ ui(``, `//something`) = `/something`
    tcurls_test.go:69: ✓ ui(`https://taskcluster.example.com`, ``) = `https://taskcluster.example.com/`
    tcurls_test.go:69: ✓ ui(`https://taskcluster.example.com/`, ``) = `https://taskcluster.example.com/`
    tcurls_test.go:69: ✓ ui(`https://taskcluster.example.com//`, ``) = `https://taskcluster.example.com/`
    tcurls_test.go:69: ✓ ui(`12345`, ``) = `12345/`
    tcurls_test.go:69: ✓ ui(``, ``) = `/`
    tcurls_test.go:69: ✓ ui(`https://taskcluster.example.com`, `/`) = `https://taskcluster.example.com/`
    tcurls_test.go:69: ✓ ui(`https://taskcluster.example.com/`, `/`) = `https://taskcluster.example.com/`
    tcurls_test.go:69: ✓ ui(`https://taskcluster.example.com//`, `/`) = `https://taskcluster.example.com/`
    tcurls_test.go:69: ✓ ui(`12345`, `/`) = `12345/`
    tcurls_test.go:69: ✓ ui(``, `/`) = `/`
    tcurls_test.go:69: ✓ ui(`https://taskcluster.example.com`, `//`) = `https://taskcluster.example.com/`
    tcurls_test.go:69: ✓ ui(`https://taskcluster.example.com/`, `//`) = `https://taskcluster.example.com/`
    tcurls_test.go:69: ✓ ui(`https://taskcluster.example.com//`, `//`) = `https://taskcluster.example.com/`
    tcurls_test.go:69: ✓ ui(`12345`, `//`) = `12345/`
    tcurls_test.go:69: ✓ ui(``, `//`) = `/`
    tcurls_test.go:69: ✓ apiManifest(`https://taskcluster.example.com`) = `https://taskcluster.example.com/references/manifest.json`
    tcurls_test.go:69: ✓ apiManifest(`https://taskcluster.example.com/`) = `https://taskcluster.example.com/references/manifest.json`
    tcurls_test.go:69: ✓ apiManifest(`https://taskcluster.example.com//`) = `https://taskcluster.example.com/references/manifest.json`
    tcurls_test.go:69: ✓ apiManifest(`12345`) = `12345/references/manifest.json`
    tcurls_test.go:69: ✓ apiManifest(``) = `/references/manifest.json`
--- PASS: TestURLs (0.01s)
=== RUN   TestNormalize
    tcurls_test.go:100: ✓ NormalizeRootURL(https://taskcluster.example.com) = `https://taskcluster.example.com`
    tcurls_test.go:100: ✓ NormalizeRootURL(https://taskcluster.example.com/) = `https://taskcluster.example.com`
    tcurls_test.go:100: ✓ NormalizeRootURL(https://taskcluster.example.com//) = `https://taskcluster.example.com`
--- PASS: TestNormalize (0.00s)
PASS
ok  	github.com/taskcluster/taskcluster-lib-urls	1.022s
[taskcluster 2026-03-20T14:15:27.981Z]                        Exit Code: 0
[taskcluster 2026-03-20T14:15:27.981Z]                        User Time: 18.199ms
[taskcluster 2026-03-20T14:15:27.981Z]                      Kernel Time: 26.161ms
[taskcluster 2026-03-20T14:15:27.981Z]                        Wall Time: 38.563776437s
[taskcluster 2026-03-20T14:15:27.981Z]  Average Available System Memory: 29.61 GiB
[taskcluster 2026-03-20T14:15:27.981Z]       Average System Memory Used: 1.73 GiB
[taskcluster 2026-03-20T14:15:27.981Z]          Peak System Memory Used: 1.99 GiB
[taskcluster 2026-03-20T14:15:27.981Z]              Total System Memory: 31.34 GiB
[taskcluster 2026-03-20T14:15:27.981Z]                           Result: SUCCEEDED
[taskcluster 2026-03-20T14:15:27.982Z] === Task Finished ===
[taskcluster 2026-03-20T14:15:27.982Z] Task Duration: 38.565264293s