Skip to content

Update dependency js-yaml to v4.1.1 [SECURITY]

188f63a
Select commit
Loading
Failed to load commit list.
Closed

Update dependency js-yaml to v4.1.1 [SECURITY] - autoclosed #112

Update dependency js-yaml to v4.1.1 [SECURITY]
188f63a
Select commit
Loading
Failed to load commit list.
Community-TC Integration / taskcluster-lib-urls go test succeeded Jan 9, 2026 in 2m 50s

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-01-09T14:29:12.369Z
Resolved: 2026-01-09T14:29:32.854Z
Task Execution Time: 20 seconds, 485 milliseconds
Task Status: completed
Reason Resolved: completed
RunId: 0

Artifacts

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


[taskcluster 2026-01-09T14:29:12.424Z] Worker Type (proj-taskcluster/ci) settings:
[taskcluster 2026-01-09T14:29:12.424Z]   {
[taskcluster 2026-01-09T14:29:12.424Z]     "config": {
[taskcluster 2026-01-09T14:29:12.424Z]       "deploymentId": "23d3331eb921b8d5"
[taskcluster 2026-01-09T14:29:12.424Z]     },
[taskcluster 2026-01-09T14:29:12.424Z]     "generic-worker": {
[taskcluster 2026-01-09T14:29:12.424Z]       "config": {
[taskcluster 2026-01-09T14:29:12.424Z]         "headlessTasks": true
[taskcluster 2026-01-09T14:29:12.424Z]       },
[taskcluster 2026-01-09T14:29:12.424Z]       "engine": "multiuser",
[taskcluster 2026-01-09T14:29:12.424Z]       "go-arch": "amd64",
[taskcluster 2026-01-09T14:29:12.424Z]       "go-os": "linux",
[taskcluster 2026-01-09T14:29:12.424Z]       "go-version": "go1.25.5",
[taskcluster 2026-01-09T14:29:12.424Z]       "release": "https://github.com/taskcluster/taskcluster/releases/tag/v95.0.2",
[taskcluster 2026-01-09T14:29:12.424Z]       "revision": "1323d556b9fedc5394d5c83036147ee983cac54d",
[taskcluster 2026-01-09T14:29:12.424Z]       "source": "https://github.com/taskcluster/taskcluster/commits/1323d556b9fedc5394d5c83036147ee983cac54d",
[taskcluster 2026-01-09T14:29:12.424Z]       "version": "95.0.2"
[taskcluster 2026-01-09T14:29:12.424Z]     },
[taskcluster 2026-01-09T14:29:12.424Z]     "image": "projects/community-tc-workers/global/images/generic-worker-ubuntu-24-04-nobheorrncouiwgbtyfq",
[taskcluster 2026-01-09T14:29:12.424Z]     "instance-id": "8532388849430343966",
[taskcluster 2026-01-09T14:29:12.424Z]     "instance-type": "projects/757942385826/machineTypes/n2-standard-4",
[taskcluster 2026-01-09T14:29:12.424Z]     "local-ipv4": "10.128.0.82",
[taskcluster 2026-01-09T14:29:12.424Z]     "machine-setup": {
[taskcluster 2026-01-09T14:29:12.424Z]       "maintainer": "taskcluster-notifications+workers@mozilla.com",
[taskcluster 2026-01-09T14:29:12.424Z]       "script": "https://raw.githubusercontent.com/taskcluster/community-tc-config/b5b7c2ad856c144a6759e6e72280c4a958f8a930/imagesets/generic-worker-ubuntu-24-04/bootstrap.sh"
[taskcluster 2026-01-09T14:29:12.424Z]     },
[taskcluster 2026-01-09T14:29:12.424Z]     "project-id": "community-tc-workers",
[taskcluster 2026-01-09T14:29:12.424Z]     "public-hostname": "proj-taskcluster-ci-xeyzqbust0ukpysr60wmaq.c.community-tc-workers.internal",
[taskcluster 2026-01-09T14:29:12.424Z]     "public-ipv4": "34.30.47.83",
[taskcluster 2026-01-09T14:29:12.424Z]     "region": "us-central1",
[taskcluster 2026-01-09T14:29:12.424Z]     "zone": "us-central1-a"
[taskcluster 2026-01-09T14:29:12.424Z]   }
[taskcluster 2026-01-09T14:29:12.424Z] Task ID: bQZaw3I1T9-bkzzjGXXpLg
[taskcluster 2026-01-09T14:29:12.424Z] === Task Starting ===
[taskcluster 2026-01-09T14:29:12.813Z] [d2g] Loading docker image
[taskcluster 2026-01-09T14:29:13.236Z] [d2g] Loaded docker image "docker.io/library/golang:1.23"
[taskcluster 2026-01-09T14:29:13.236Z] Executing command 0: docker run -t --name taskcontainer_WYSeI4PmQsy5vM4IdYPNRw --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-01-09T14:29:13.236Z] git clone https://github.com/taskcluster/taskcluster-lib-urls.git repo
[taskcluster 2026-01-09T14:29:13.236Z] cd repo
[taskcluster 2026-01-09T14:29:13.236Z] git config advice.detachedHead false
[taskcluster 2026-01-09T14:29:13.236Z] git checkout 188f63abe79bb1872a7049ff0dfb7f97f5496f85
[taskcluster 2026-01-09T14:29:13.236Z] go test -v -race ./...
[taskcluster 2026-01-09T14:29:13.236Z] golangci-lint run
[taskcluster 2026-01-09T14:29:13.236Z] '
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: 818, done.
remote: Counting objects:   3% (1/31)
remote: Counting objects:   6% (2/31)
remote: Counting objects:   9% (3/31)
remote: Counting objects:  12% (4/31)
remote: Counting objects:  16% (5/31)
remote: Counting objects:  19% (6/31)
remote: Counting objects:  22% (7/31)
remote: Counting objects:  25% (8/31)
remote: Counting objects:  29% (9/31)
remote: Counting objects:  32% (10/31)
remote: Counting objects:  35% (11/31)
remote: Counting objects:  38% (12/31)
remote: Counting objects:  41% (13/31)
remote: Counting objects:  45% (14/31)
remote: Counting objects:  48% (15/31)
remote: Counting objects:  51% (16/31)
remote: Counting objects:  54% (17/31)
remote: Counting objects:  58% (18/31)
remote: Counting objects:  61% (19/31)
remote: Counting objects:  64% (20/31)
remote: Counting objects:  67% (21/31)
remote: Counting objects:  70% (22/31)
remote: Counting objects:  74% (23/31)
remote: Counting objects:  77% (24/31)
remote: Counting objects:  80% (25/31)
remote: Counting objects:  83% (26/31)
remote: Counting objects:  87% (27/31)
remote: Counting objects:  90% (28/31)
remote: Counting objects:  93% (29/31)
remote: Counting objects:  96% (30/31)
remote: Counting objects: 100% (31/31)
remote: Counting objects: 100% (31/31), done.
remote: Compressing objects:   3% (1/27)
remote: Compressing objects:   7% (2/27)
remote: Compressing objects:  11% (3/27)
remote: Compressing objects:  14% (4/27)
remote: Compressing objects:  18% (5/27)
remote: Compressing objects:  22% (6/27)
remote: Compressing objects:  25% (7/27)
remote: Compressing objects:  29% (8/27)
remote: Compressing objects:  33% (9/27)
remote: Compressing objects:  37% (10/27)
remote: Compressing objects:  40% (11/27)
remote: Compressing objects:  44% (12/27)
remote: Compressing objects:  48% (13/27)
remote: Compressing objects:  51% (14/27)
remote: Compressing objects:  55% (15/27)
remote: Compressing objects:  59% (16/27)
remote: Compressing objects:  62% (17/27)
remote: Compressing objects:  66% (18/27)
remote: Compressing objects:  70% (19/27)
remote: Compressing objects:  74% (20/27)
remote: Compressing objects:  77% (21/27)
remote: Compressing objects:  81% (22/27)
remote: Compressing objects:  85% (23/27)
remote: Compressing objects:  88% (24/27)
remote: Compressing objects:  92% (25/27)
remote: Compressing objects:  96% (26/27)
remote: Compressing objects: 100% (27/27)
remote: Compressing objects: 100% (27/27), done.
Receiving objects:   0% (1/818)
Receiving objects:   1% (9/818)
Receiving objects:   2% (17/818)
Receiving objects:   3% (25/818)
Receiving objects:   4% (33/818)
Receiving objects:   5% (41/818)
Receiving objects:   6% (50/818)
Receiving objects:   7% (58/818)
Receiving objects:   8% (66/818)
Receiving objects:   9% (74/818)
Receiving objects:  10% (82/818)
Receiving objects:  11% (90/818)
Receiving objects:  12% (99/818)
Receiving objects:  13% (107/818)
Receiving objects:  14% (115/818)
Receiving objects:  15% (123/818)
Receiving objects:  16% (131/818)
Receiving objects:  17% (140/818)
Receiving objects:  18% (148/818)
Receiving objects:  19% (156/818)
Receiving objects:  20% (164/818)
Receiving objects:  21% (172/818)
Receiving objects:  22% (180/818)
Receiving objects:  23% (189/818)
Receiving objects:  24% (197/818)
Receiving objects:  25% (205/818)
Receiving objects:  26% (213/818)
Receiving objects:  27% (221/818)
Receiving objects:  28% (230/818)
Receiving objects:  29% (238/818)
Receiving objects:  30% (246/818)
Receiving objects:  31% (254/818)
Receiving objects:  32% (262/818)
Receiving objects:  33% (270/818)
Receiving objects:  34% (279/818)
Receiving objects:  35% (287/818)
Receiving objects:  36% (295/818)
Receiving objects:  37% (303/818)
Receiving objects:  38% (311/818)
Receiving objects:  39% (320/818)
Receiving objects:  40% (328/818)
Receiving objects:  41% (336/818)
Receiving objects:  42% (344/818)
Receiving objects:  43% (352/818)
Receiving objects:  44% (360/818)
Receiving objects:  45% (369/818)
Receiving objects:  46% (377/818)
Receiving objects:  47% (385/818)
Receiving objects:  48% (393/818)
Receiving objects:  49% (401/818)
Receiving objects:  50% (409/818)
Receiving objects:  51% (418/818)
Receiving objects:  52% (426/818)
Receiving objects:  53% (434/818)
Receiving objects:  54% (442/818)
Receiving objects:  55% (450/818)
Receiving objects:  56% (459/818)
Receiving objects:  57% (467/818)
Receiving objects:  58% (475/818)
Receiving objects:  59% (483/818)
Receiving objects:  60% (491/818)
Receiving objects:  61% (499/818)
Receiving objects:  62% (508/818)
Receiving objects:  63% (516/818)
Receiving objects:  64% (524/818)
Receiving objects:  65% (532/818)
Receiving objects:  66% (540/818)
Receiving objects:  67% (549/818)
Receiving objects:  68% (557/818)
Receiving objects:  69% (565/818)
Receiving objects:  70% (573/818)
Receiving objects:  71% (581/818)
Receiving objects:  72% (589/818)
Receiving objects:  73% (598/818)
Receiving objects:  74% (606/818)
Receiving objects:  75% (614/818)
Receiving objects:  76% (622/818)
Receiving objects:  77% (630/818)
Receiving objects:  78% (639/818)
Receiving objects:  79% (647/818)
Receiving objects:  80% (655/818)
Receiving objects:  81% (663/818)
Receiving objects:  82% (671/818)
Receiving objects:  83% (679/818)
Receiving objects:  84% (688/818)
Receiving objects:  85% (696/818)
Receiving objects:  86% (704/818)
Receiving objects:  87% (712/818)
Receiving objects:  88% (720/818)
remote: Total 818 (delta 10), reused 9 (delta 4), pack-reused 787 (from 2)
Receiving objects:  89% (729/818)
Receiving objects:  90% (737/818)
Receiving objects:  91% (745/818)
Receiving objects:  92% (753/818)
Receiving objects:  93% (761/818)
Receiving objects:  94% (769/818)
Receiving objects:  95% (778/818)
Receiving objects:  96% (786/818)
Receiving objects:  97% (794/818)
Receiving objects:  98% (802/818)
Receiving objects:  99% (810/818)
Receiving objects: 100% (818/818)
Receiving objects: 100% (818/818), 570.55 KiB | 6.71 MiB/s, done.
Resolving deltas:   0% (0/377)
Resolving deltas:   1% (4/377)
Resolving deltas:   2% (8/377)
Resolving deltas:   3% (12/377)
Resolving deltas:   4% (16/377)
Resolving deltas:   5% (19/377)
Resolving deltas:   6% (23/377)
Resolving deltas:   7% (27/377)
Resolving deltas:   8% (31/377)
Resolving deltas:   9% (34/377)
Resolving deltas:  10% (38/377)
Resolving deltas:  11% (42/377)
Resolving deltas:  12% (46/377)
Resolving deltas:  13% (50/377)
Resolving deltas:  14% (53/377)
Resolving deltas:  15% (58/377)
Resolving deltas:  16% (61/377)
Resolving deltas:  17% (65/377)
Resolving deltas:  18% (68/377)
Resolving deltas:  19% (72/377)
Resolving deltas:  20% (76/377)
Resolving deltas:  21% (80/377)
Resolving deltas:  22% (83/377)
Resolving deltas:  23% (87/377)
Resolving deltas:  24% (92/377)
Resolving deltas:  25% (95/377)
Resolving deltas:  26% (99/377)
Resolving deltas:  27% (102/377)
Resolving deltas:  28% (106/377)
Resolving deltas:  29% (110/377)
Resolving deltas:  30% (114/377)
Resolving deltas:  31% (117/377)
Resolving deltas:  32% (121/377)
Resolving deltas:  33% (126/377)
Resolving deltas:  34% (129/377)
Resolving deltas:  35% (132/377)
Resolving deltas:  36% (136/377)
Resolving deltas:  37% (140/377)
Resolving deltas:  38% (144/377)
Resolving deltas:  39% (148/377)
Resolving deltas:  40% (151/377)
Resolving deltas:  41% (155/377)
Resolving deltas:  42% (159/377)
Resolving deltas:  43% (163/377)
Resolving deltas:  44% (166/377)
Resolving deltas:  45% (170/377)
Resolving deltas:  46% (174/377)
Resolving deltas:  47% (178/377)
Resolving deltas:  48% (181/377)
Resolving deltas:  49% (185/377)
Resolving deltas:  50% (189/377)
Resolving deltas:  51% (193/377)
Resolving deltas:  52% (197/377)
Resolving deltas:  53% (200/377)
Resolving deltas:  54% (204/377)
Resolving deltas:  55% (208/377)
Resolving deltas:  56% (212/377)
Resolving deltas:  57% (215/377)
Resolving deltas:  58% (219/377)
Resolving deltas:  59% (223/377)
Resolving deltas:  60% (227/377)
Resolving deltas:  61% (230/377)
Resolving deltas:  62% (234/377)
Resolving deltas:  63% (238/377)
Resolving deltas:  64% (242/377)
Resolving deltas:  65% (246/377)
Resolving deltas:  66% (249/377)
Resolving deltas:  67% (253/377)
Resolving deltas:  68% (257/377)
Resolving deltas:  69% (261/377)
Resolving deltas:  70% (264/377)
Resolving deltas:  71% (268/377)
Resolving deltas:  72% (272/377)
Resolving deltas:  73% (276/377)
Resolving deltas:  74% (279/377)
Resolving deltas:  75% (283/377)
Resolving deltas:  76% (287/377)
Resolving deltas:  77% (291/377)
Resolving deltas:  78% (296/377)
Resolving deltas:  79% (298/377)
Resolving deltas:  80% (302/377)
Resolving deltas:  81% (306/377)
Resolving deltas:  82% (310/377)
Resolving deltas:  83% (313/377)
Resolving deltas:  84% (317/377)
Resolving deltas:  85% (321/377)
Resolving deltas:  86% (326/377)
Resolving deltas:  87% (328/377)
Resolving deltas:  88% (332/377)
Resolving deltas:  89% (336/377)
Resolving deltas:  90% (340/377)
Resolving deltas:  91% (344/377)
Resolving deltas:  92% (347/377)
Resolving deltas:  93% (351/377)
Resolving deltas:  94% (355/377)
Resolving deltas:  95% (359/377)
Resolving deltas:  96% (362/377)
Resolving deltas:  97% (366/377)
Resolving deltas:  98% (370/377)
Resolving deltas:  99% (374/377)
Resolving deltas: 100% (377/377)
Resolving deltas: 100% (377/377), done.
HEAD is now at 188f63a Update dependency js-yaml to v4.1.1 [SECURITY]
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(`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: βœ“ 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: βœ“ 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(`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(``, `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(`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(`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: βœ“ 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: βœ“ 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(`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: βœ“ apiReference(``, `auth`, `v1`) = `/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(`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(`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`, ``) = `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(`12345`) = `12345/references/manifest.json`
    tcurls_test.go:69: βœ“ apiManifest(``) = `/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(`https://taskcluster.example.com//`) = `https://taskcluster.example.com/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-01-09T14:29:32.309Z]                        Exit Code: 0
[taskcluster 2026-01-09T14:29:32.309Z]                        User Time: 9.172ms
[taskcluster 2026-01-09T14:29:32.309Z]                      Kernel Time: 20.637ms
[taskcluster 2026-01-09T14:29:32.309Z]                        Wall Time: 19.072938745s
[taskcluster 2026-01-09T14:29:32.309Z]  Average Available System Memory: 14.17 GiB
[taskcluster 2026-01-09T14:29:32.309Z]       Average System Memory Used: 1.45 GiB
[taskcluster 2026-01-09T14:29:32.309Z]          Peak System Memory Used: 1.59 GiB
[taskcluster 2026-01-09T14:29:32.309Z]              Total System Memory: 15.62 GiB
[taskcluster 2026-01-09T14:29:32.309Z]                           Result: SUCCEEDED
[taskcluster 2026-01-09T14:29:32.309Z] === Task Finished ===
[taskcluster 2026-01-09T14:29:32.309Z] Task Duration: 19.073565906s