Skip to content

Update dependency js-yaml to v4.3.1 [SECURITY] - #126

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/npm-js-yaml-vulnerability
Open

Update dependency js-yaml to v4.3.1 [SECURITY]#126
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/npm-js-yaml-vulnerability

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

f07bfb8
Select commit
Loading
Failed to load commit list.
Community-TC Integration / taskcluster-lib-urls go test succeeded Aug 21, 2026 in 24s

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-08-21T14:07:45.688Z
Resolved: 2026-08-21T14:08:09.086Z
Task Execution Time: 23 seconds, 398 milliseconds
Task Status: completed
Reason Resolved: completed
TaskId: dqxEritOQmqR48rlizfw7A
RunId: 0

Artifacts

- public/logs/live_backing.log (32.8 KB)
- public/logs/live.log


[taskcluster 2026-08-21T14:07:45.802Z] Worker Type (proj-taskcluster/ci) settings:
[taskcluster 2026-08-21T14:07:45.802Z]   {
[taskcluster 2026-08-21T14:07:45.802Z]     "generic-worker": {
[taskcluster 2026-08-21T14:07:45.802Z]       "config": {
[taskcluster 2026-08-21T14:07:45.802Z]         "headlessTasks": true
[taskcluster 2026-08-21T14:07:45.802Z]       },
[taskcluster 2026-08-21T14:07:45.802Z]       "engine": "multiuser",
[taskcluster 2026-08-21T14:07:45.802Z]       "go-arch": "amd64",
[taskcluster 2026-08-21T14:07:45.802Z]       "go-os": "linux",
[taskcluster 2026-08-21T14:07:45.802Z]       "go-version": "go1.26.2",
[taskcluster 2026-08-21T14:07:45.802Z]       "release": "https://github.com/taskcluster/taskcluster/releases/tag/v99.1.0",
[taskcluster 2026-08-21T14:07:45.802Z]       "revision": "c76d61efe4bdc1a05bcec848739cd41ebf061f01",
[taskcluster 2026-08-21T14:07:45.802Z]       "source": "https://github.com/taskcluster/taskcluster/commits/c76d61efe4bdc1a05bcec848739cd41ebf061f01",
[taskcluster 2026-08-21T14:07:45.802Z]       "version": "99.1.0"
[taskcluster 2026-08-21T14:07:45.802Z]     },
[taskcluster 2026-08-21T14:07:45.802Z]     "image": "projects/community-tc-workers/global/images/generic-worker-ubuntu-24-04-aaynirqnxlbwcojgnbeo",
[taskcluster 2026-08-21T14:07:45.802Z]     "instance-id": "8986482796543731116",
[taskcluster 2026-08-21T14:07:45.802Z]     "instance-type": "projects/757942385826/machineTypes/n2-standard-4",
[taskcluster 2026-08-21T14:07:45.802Z]     "local-ipv4": "10.128.15.222",
[taskcluster 2026-08-21T14:07:45.802Z]     "machine-setup": {
[taskcluster 2026-08-21T14:07:45.802Z]       "maintainer": "taskcluster-notifications+workers@mozilla.com",
[taskcluster 2026-08-21T14:07:45.802Z]       "script": "https://raw.githubusercontent.com/taskcluster/community-tc-config/b5b7c2ad856c144a6759e6e72280c4a958f8a930/imagesets/generic-worker-ubuntu-24-04/bootstrap.sh"
[taskcluster 2026-08-21T14:07:45.802Z]     },
[taskcluster 2026-08-21T14:07:45.802Z]     "project-id": "community-tc-workers",
[taskcluster 2026-08-21T14:07:45.802Z]     "public-hostname": "proj-taskcluster-ci-c7wyx8bztwioqx6nw0yrrg.c.community-tc-workers.internal",
[taskcluster 2026-08-21T14:07:45.802Z]     "public-ipv4": "34.72.130.224",
[taskcluster 2026-08-21T14:07:45.802Z]     "region": "us-central1",
[taskcluster 2026-08-21T14:07:45.802Z]     "zone": "us-central1-a"
[taskcluster 2026-08-21T14:07:45.802Z]   }
[taskcluster 2026-08-21T14:07:45.802Z] Task ID: dqxEritOQmqR48rlizfw7A
[taskcluster 2026-08-21T14:07:45.802Z] === Task Starting ===
[taskcluster 2026-08-21T14:07:46.213Z] [d2g] Loading docker image
[taskcluster 2026-08-21T14:07:46.692Z] [d2g] Loaded docker image "docker.io/library/golang:1.23"
[taskcluster 2026-08-21T14:07:46.693Z] Executing command 0: docker run -t --name taskcontainer_EKm_vIe9R-KKqT8n_bzGiw --memory-swap -1 --pids-limit -1 --pull=never --log-driver=none '--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-08-21T14:07:46.693Z] git clone https://github.com/taskcluster/taskcluster-lib-urls.git repo
[taskcluster 2026-08-21T14:07:46.693Z] cd repo
[taskcluster 2026-08-21T14:07:46.693Z] git config advice.detachedHead false
[taskcluster 2026-08-21T14:07:46.693Z] git checkout f07bfb84bc227b4b9ab996e5e37d6fb259113e4a
[taskcluster 2026-08-21T14:07:46.693Z] go test -v -race ./...
[taskcluster 2026-08-21T14:07:46.693Z] golangci-lint run
[taskcluster 2026-08-21T14:07:46.693Z] '
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: 851, done.
remote: Counting objects:   5% (1/19)
remote: Counting objects:  10% (2/19)
remote: Counting objects:  15% (3/19)
remote: Counting objects:  21% (4/19)
remote: Counting objects:  26% (5/19)
remote: Counting objects:  31% (6/19)
remote: Counting objects:  36% (7/19)
remote: Counting objects:  42% (8/19)
remote: Counting objects:  47% (9/19)
remote: Counting objects:  52% (10/19)
remote: Counting objects:  57% (11/19)
remote: Counting objects:  63% (12/19)
remote: Counting objects:  68% (13/19)
remote: Counting objects:  73% (14/19)
remote: Counting objects:  78% (15/19)
remote: Counting objects:  84% (16/19)
remote: Counting objects:  89% (17/19)
remote: Counting objects:  94% (18/19)
remote: Counting objects: 100% (19/19)
remote: Counting objects: 100% (19/19), done.
remote: Compressing objects:   6% (1/16)
remote: Compressing objects:  12% (2/16)
remote: Compressing objects:  18% (3/16)
remote: Compressing objects:  25% (4/16)
remote: Compressing objects:  31% (5/16)
remote: Compressing objects:  37% (6/16)
remote: Compressing objects:  43% (7/16)
remote: Compressing objects:  50% (8/16)
remote: Compressing objects:  56% (9/16)
remote: Compressing objects:  62% (10/16)
remote: Compressing objects:  68% (11/16)
remote: Compressing objects:  75% (12/16)
remote: Compressing objects:  81% (13/16)
remote: Compressing objects:  87% (14/16)
remote: Compressing objects:  93% (15/16)
remote: Compressing objects: 100% (16/16)
remote: Compressing objects: 100% (16/16), done.
Receiving objects:   0% (1/851)
Receiving objects:   1% (9/851)
Receiving objects:   2% (18/851)
Receiving objects:   3% (26/851)
Receiving objects:   4% (35/851)
Receiving objects:   5% (43/851)
Receiving objects:   6% (52/851)
Receiving objects:   7% (60/851)
Receiving objects:   8% (69/851)
Receiving objects:   9% (77/851)
Receiving objects:  10% (86/851)
Receiving objects:  11% (94/851)
Receiving objects:  12% (103/851)
Receiving objects:  13% (111/851)
Receiving objects:  14% (120/851)
Receiving objects:  15% (128/851)
Receiving objects:  16% (137/851)
Receiving objects:  17% (145/851)
Receiving objects:  18% (154/851)
Receiving objects:  19% (162/851)
Receiving objects:  20% (171/851)
Receiving objects:  21% (179/851)
Receiving objects:  22% (188/851)
Receiving objects:  23% (196/851)
Receiving objects:  24% (205/851)
Receiving objects:  25% (213/851)
Receiving objects:  26% (222/851)
Receiving objects:  27% (230/851)
Receiving objects:  28% (239/851)
Receiving objects:  29% (247/851)
Receiving objects:  30% (256/851)
Receiving objects:  31% (264/851)
Receiving objects:  32% (273/851)
Receiving objects:  33% (281/851)
Receiving objects:  34% (290/851)
Receiving objects:  35% (298/851)
Receiving objects:  36% (307/851)
Receiving objects:  37% (315/851)
Receiving objects:  38% (324/851)
Receiving objects:  39% (332/851)
Receiving objects:  40% (341/851)
Receiving objects:  41% (349/851)
Receiving objects:  42% (358/851)
Receiving objects:  43% (366/851)
Receiving objects:  44% (375/851)
Receiving objects:  45% (383/851)
Receiving objects:  46% (392/851)
Receiving objects:  47% (400/851)
Receiving objects:  48% (409/851)
Receiving objects:  49% (417/851)
Receiving objects:  50% (426/851)
Receiving objects:  51% (435/851)
Receiving objects:  52% (443/851)
Receiving objects:  53% (452/851)
Receiving objects:  54% (460/851)
Receiving objects:  55% (469/851)
Receiving objects:  56% (477/851)
Receiving objects:  57% (486/851)
Receiving objects:  58% (494/851)
Receiving objects:  59% (503/851)
Receiving objects:  60% (511/851)
Receiving objects:  61% (520/851)
Receiving objects:  62% (528/851)
Receiving objects:  63% (537/851)
Receiving objects:  64% (545/851)
Receiving objects:  65% (554/851)
Receiving objects:  66% (562/851)
Receiving objects:  67% (571/851)
Receiving objects:  68% (579/851)
Receiving objects:  69% (588/851)
Receiving objects:  70% (596/851)
Receiving objects:  71% (605/851)
Receiving objects:  72% (613/851)
Receiving objects:  73% (622/851)
Receiving objects:  74% (630/851)
Receiving objects:  75% (639/851)
Receiving objects:  76% (647/851)
Receiving objects:  77% (656/851)
Receiving objects:  78% (664/851)
Receiving objects:  79% (673/851)
Receiving objects:  80% (681/851)
Receiving objects:  81% (690/851)
Receiving objects:  82% (698/851)
Receiving objects:  83% (707/851)
Receiving objects:  84% (715/851)
Receiving objects:  85% (724/851)
Receiving objects:  86% (732/851)
Receiving objects:  87% (741/851)
Receiving objects:  88% (749/851)
Receiving objects:  89% (758/851)
Receiving objects:  90% (766/851)
Receiving objects:  91% (775/851)
Receiving objects:  92% (783/851)
Receiving objects:  93% (792/851)
Receiving objects:  94% (800/851)
Receiving objects:  95% (809/851)
Receiving objects:  96% (817/851)
Receiving objects:  97% (826/851)
Receiving objects:  98% (834/851)
remote: Total 851 (delta 12), reused 3 (delta 3), pack-reused 832 (from 3)
Receiving objects:  99% (843/851)
Receiving objects: 100% (851/851)
Receiving objects: 100% (851/851), 597.41 KiB | 2.82 MiB/s, done.
Resolving deltas:   0% (0/396)
Resolving deltas:   1% (4/396)
Resolving deltas:   2% (8/396)
Resolving deltas:   3% (12/396)
Resolving deltas:   4% (16/396)
Resolving deltas:   5% (20/396)
Resolving deltas:   6% (24/396)
Resolving deltas:   7% (28/396)
Resolving deltas:   8% (32/396)
Resolving deltas:   9% (36/396)
Resolving deltas:  10% (40/396)
Resolving deltas:  11% (44/396)
Resolving deltas:  12% (48/396)
Resolving deltas:  13% (52/396)
Resolving deltas:  14% (56/396)
Resolving deltas:  15% (60/396)
Resolving deltas:  16% (64/396)
Resolving deltas:  17% (68/396)
Resolving deltas:  18% (72/396)
Resolving deltas:  19% (76/396)
Resolving deltas:  20% (80/396)
Resolving deltas:  21% (84/396)
Resolving deltas:  22% (88/396)
Resolving deltas:  23% (92/396)
Resolving deltas:  24% (96/396)
Resolving deltas:  25% (99/396)
Resolving deltas:  26% (103/396)
Resolving deltas:  27% (109/396)
Resolving deltas:  28% (111/396)
Resolving deltas:  29% (115/396)
Resolving deltas:  30% (119/396)
Resolving deltas:  31% (124/396)
Resolving deltas:  32% (127/396)
Resolving deltas:  33% (131/396)
Resolving deltas:  34% (135/396)
Resolving deltas:  35% (139/396)
Resolving deltas:  36% (143/396)
Resolving deltas:  37% (147/396)
Resolving deltas:  38% (151/396)
Resolving deltas:  39% (155/396)
Resolving deltas:  40% (159/396)
Resolving deltas:  41% (163/396)
Resolving deltas:  42% (167/396)
Resolving deltas:  43% (171/396)
Resolving deltas:  44% (175/396)
Resolving deltas:  45% (179/396)
Resolving deltas:  46% (183/396)
Resolving deltas:  47% (187/396)
Resolving deltas:  48% (191/396)
Resolving deltas:  49% (195/396)
Resolving deltas:  50% (198/396)
Resolving deltas:  51% (202/396)
Resolving deltas:  52% (206/396)
Resolving deltas:  53% (210/396)
Resolving deltas:  54% (214/396)
Resolving deltas:  55% (218/396)
Resolving deltas:  56% (222/396)
Resolving deltas:  57% (226/396)
Resolving deltas:  58% (231/396)
Resolving deltas:  59% (234/396)
Resolving deltas:  60% (238/396)
Resolving deltas:  61% (243/396)
Resolving deltas:  62% (246/396)
Resolving deltas:  63% (250/396)
Resolving deltas:  64% (254/396)
Resolving deltas:  65% (258/396)
Resolving deltas:  66% (262/396)
Resolving deltas:  67% (267/396)
Resolving deltas:  68% (270/396)
Resolving deltas:  69% (274/396)
Resolving deltas:  70% (279/396)
Resolving deltas:  71% (282/396)
Resolving deltas:  72% (286/396)
Resolving deltas:  73% (290/396)
Resolving deltas:  74% (295/396)
Resolving deltas:  75% (297/396)
Resolving deltas:  76% (301/396)
Resolving deltas:  77% (306/396)
Resolving deltas:  78% (309/396)
Resolving deltas:  79% (313/396)
Resolving deltas:  80% (317/396)
Resolving deltas:  81% (322/396)
Resolving deltas:  82% (325/396)
Resolving deltas:  83% (329/396)
Resolving deltas:  84% (333/396)
Resolving deltas:  85% (337/396)
Resolving deltas:  86% (341/396)
Resolving deltas:  87% (345/396)
Resolving deltas:  88% (349/396)
Resolving deltas:  89% (353/396)
Resolving deltas:  90% (357/396)
Resolving deltas:  91% (361/396)
Resolving deltas:  92% (365/396)
Resolving deltas:  93% (369/396)
Resolving deltas:  94% (373/396)
Resolving deltas:  95% (377/396)
Resolving deltas:  96% (381/396)
Resolving deltas:  97% (385/396)
Resolving deltas:  98% (389/396)
Resolving deltas:  99% (393/396)
Resolving deltas: 100% (396/396)
Resolving deltas: 100% (396/396), done.
HEAD is now at f07bfb8 Update dependency js-yaml to v4.3.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(`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(``, `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`, `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(`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(`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(`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(``, `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`, `//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`, `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(``, `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: ✓ apiReferenceSchema(`12345`, `v1`) = `12345/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(`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.024s
[taskcluster 2026-08-21T14:08:08.243Z]                        Exit Code: 0
[taskcluster 2026-08-21T14:08:08.243Z]                        User Time: 18.543ms
[taskcluster 2026-08-21T14:08:08.243Z]                      Kernel Time: 17.453ms
[taskcluster 2026-08-21T14:08:08.243Z]                        Wall Time: 21.549908671s
[taskcluster 2026-08-21T14:08:08.243Z]  Average Available System Memory: 14.17 GiB
[taskcluster 2026-08-21T14:08:08.243Z]       Average System Memory Used: 1.44 GiB
[taskcluster 2026-08-21T14:08:08.243Z]          Peak System Memory Used: 1.58 GiB
[taskcluster 2026-08-21T14:08:08.243Z]              Total System Memory: 15.61 GiB
[taskcluster 2026-08-21T14:08:08.243Z]                           Result: SUCCEEDED
[taskcluster 2026-08-21T14:08:08.243Z] === Task Finished ===
[taskcluster 2026-08-21T14:08:08.243Z] Task Duration: 21.550456962s