Skip to content

perf(controller): cache repository lookups - #2939

Draft
theakshaypant wants to merge 1 commit into
tektoncd:mainfrom
theakshaypant:fix/handle-event
Draft

perf(controller): cache repository lookups#2939
theakshaypant wants to merge 1 commit into
tektoncd:mainfrom
theakshaypant:fix/handle-event

Conversation

@theakshaypant

@theakshaypant theakshaypant commented Aug 27, 2026

Copy link
Copy Markdown
Member

📝 Description of the Change

Problem

The controller resolves the Repository for an incoming event by listing
repositories directly from the API server. This happens on every event, with
an empty namespace (cluster-wide), via matcher.MatchEventURLRepo and the
GitHub provider's package-local MatchEventURLRepo.

On busy, multi-tenant clusters this is a significant, sustained source of
API-server load: the cost of each lookup is O(number of Repository CRs in the cluster) and is paid once per event — including for events whose repository is
not onboarded and can never match.

Change

Introduce an informer-backed cache (lister) for Repository resources so
per-event lookups are served from an in-memory cache kept in sync by a single
watch, instead of a fresh cluster-wide List per event.

  • Add RepositoryLister to params.Run, populated at controller startup from a
    shared informer factory.
  • Add two accessors on *params.Run that centralize the cache-or-API decision
    so call sites no longer hand-roll it:
    • GetRepository(ctx, ns, name)
    • ListRepositories(ctx, ns) — all namespaces when ns == "".
      Both fall back to a live API call when no lister is configured (CLI, tests),
      and both return deep copies so callers can mutate results without
      corrupting the shared cache.
  • Route the GitHub provider's MatchEventURLRepo through ListRepositories so
    the highest-volume path also benefits from the cache. (The github package
    cannot import matcher without an import cycle, so the local function is kept
    but made cache-aware.)
  • Dedupe the name-conflict resolution in the matcher into a single
    repoByUniqueName helper shared by the cached and API paths.
  • Apply transform.RepositoryForCache (strips ManagedFields/Annotations,
    keeps Spec) to the informer, matching the watcher's repository cache so the
    footprint stays small.
  • Defer the global-repository fetch in the adapter until after provider
    detection, so events rejected early (bad payload, unknown provider) skip the
    lookup entirely.

Correctness details

  • Informer ordering: the lister is obtained before factory.Start().
    Start() only runs informers already registered, and requesting the lister is
    what registers the informer — doing this in the wrong order leaves the cache
    permanently empty.
  • RBAC: the controller ClusterRole gains watch on repositories (in
    addition to the existing get, create, list), required by the informer.
  • Cache-sync gating: WaitForCacheSync's return value is checked and startup
    fails loudly on an incomplete sync rather than silently serving an empty cache.
  • Deep copy on read: listers return pointers into the shared cache and
    downstream code calls repo.Spec.Merge(...) in place; returning DeepCopy()
    prevents cache corruption and data races across concurrent request goroutines.

🔗 Linked GitHub Issue

Fixes #

🧪 Testing Strategy

  • Unit tests
  • Integration tests
  • End-to-end tests
  • Manual testing
  • Not Applicable

🤖 AI Assistance

AI assistance can be used for various tasks, such as code generation,
documentation, or testing.

Please indicate whether you have used AI assistance
for this PR and provide details if applicable.

  • I have not used any AI assistance for this PR.
  • I have used AI assistance for this PR.

Important

Slop will be simply rejected, if you are using AI assistance you need to make sure you
understand the code generated and that it meets the project's standards. you
need at least know how to run the code and deploy it (if needed). See
startpaac to make it easy
to deploy and test your code changes.

If the majority of the code in this PR was generated by an AI, please add a Co-authored-by trailer to your commit message.
For example:

Co-authored-by: Claude noreply@anthropic.com

✅ Submitter Checklist

  • 📝 My commit messages are clear, informative, and follow the project's How to write a git commit message guide. The Gitlint linter ensures in CI it's properly validated
  • ✨ I have ensured my commit message prefix (e.g., fix:, feat:) matches the "Type of Change" I selected above.
  • ♽ I have run make test and make lint locally to check for and fix any
    issues. For an efficient workflow, I have considered installing
    pre-commit and running pre-commit install to
    automate these checks.
  • 📖 I have added or updated documentation for any user-facing changes.
  • 🧪 I have added sufficient unit tests for my code changes.
  • 🎁 I have added end-to-end tests where feasible. See README for more details.
  • 🔎 I have addressed any CI test flakiness or provided a clear reason to bypass it.
  • If adding a provider feature, I have filled in the following and updated the provider documentation:
    • GitHub App
    • GitHub Webhook
    • Gitea/Forgejo
    • GitLab
    • Bitbucket Cloud
    • Bitbucket Data Center

Comment thread pkg/adapter/adapter.go Outdated
- apiGroups: ["pipelinesascode.tekton.dev"]
resources: ["repositories"]
verbs: ["get", "create", "list"]
verbs: ["get", "create", "list", "watch"]

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this needed or handled by informer?

@theakshaypant theakshaypant Aug 27, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@zakisk Ref

A Reflector performs a LIST to get a consistent snapshot of a resource, identified by a resourceVersion. It then starts a WATCH from that resourceVersion to receive a continuous stream of subsequent changes.

Reflector is used by informer.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, watch would be needed I think when using informer

@codecov

codecov Bot commented Aug 27, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 88.88889% with 7 lines in your changes missing coverage. Please review.
✅ Project coverage is 80.66%. Comparing base (ac1ff23) to head (c6e91ff).

Files with missing lines Patch % Lines
pkg/params/run.go 84.61% 2 Missing and 2 partials ⚠️
pkg/adapter/adapter.go 60.00% 1 Missing and 1 partial ⚠️
pkg/matcher/repo_runinfo_matcher.go 96.42% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2939      +/-   ##
==========================================
+ Coverage   80.61%   80.66%   +0.05%     
==========================================
  Files         164      164              
  Lines       13910    13946      +36     
==========================================
+ Hits        11213    11250      +37     
+ Misses       1974     1971       -3     
- Partials      723      725       +2     
Flag Coverage Δ
unit-tests 80.66% <88.88%> (+0.05%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@pipelines-as-code

Copy link
Copy Markdown

Paco Review 🔍

This PR adds a shared informer/lister cache for Repository custom resources to avoid live Kubernetes API calls on the webhook hot path. It threads a new RepositoryLister through params.Run with GetRepository/ListRepositories helper methods that fall back to direct API calls when no lister is configured, updates matcher.GetRepoByName/MatchEventURLRepo and github.MatchEventURLRepo to use these helpers, wires up the informer factory and cache-sync wait in main.go, and adds the 'watch' RBAC verb needed for the new informer.

Review difficulty: 4/5 (Hard) — The change introduces a new caching layer that alters read semantics on the webhook authorization/matching path across several files, which is broad in blast radius and requires careful reasoning about consistency and fallback correctness.

1 new inline comment(s) found.

Reviewed commit: 4205d34

@pipelines-as-code pipelines-as-code Bot added paco/review-hard Paco review difficulty security-review Flagged as security-sensitive by Paco labels Aug 27, 2026

@pipelines-as-code pipelines-as-code Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Paco inline comments -- see the Paco Review summary comment for the overview.

Comment thread pkg/params/run.go
func (r *Run) GetRepository(ctx context.Context, ns, name string) (*apipac.Repository, error) {
if r.RepositoryLister != nil {
repo, err := r.RepositoryLister.Repositories(ns).Get(name)
if err != nil {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[MEDIUM] Switching repository lookups on the webhook path (MatchEventURLRepo, GetRepoByName, SetupAuthenticatedClient's global-repo fetch) from always-fresh API Get/List calls to a shared informer lister introduces eventual consistency: a Repository that was just created, updated, or deleted may not yet be reflected in the local cache when a webhook event arrives, because the cache is only updated once the corresponding watch event has been delivered and processed. Previously these lookups always hit the live API, so this is a behavior change for a security/config-relevant path (which Repository governs an incoming webhook event). Consider documenting this trade-off explicitly and confirming callers on this path can tolerate a short window of staleness (e.g., immediately after creating/deleting a Repository).

@theakshaypant

Copy link
Copy Markdown
Member Author
make test Running unit tests... github.com/openshift-pipelines/pipelines-as-code/pkg/acl: ✓ Expand aliases (0.00s) ✓ Expand aliases expand alias (0.00s) ✓ Expand aliases expand alias dedups (0.00s) ✓ Expand aliases no owner have aliases (0.00s) ✓ Expand aliases no owner or aliases (0.00s) ✓ Expand aliases owners dedups (0.00s) ✓ Match regexp (0.00s) ✓ Match regexp match (0.00s) ✓ Match regexp nomatch (0.00s) ✓ Regexp (0.00s) ✓ Regexp bad match regexp (0.00s) ✓ Regexp bad match regexp newline space (0.00s) ✓ Regexp bad match regexp with invalid sha (0.00s) ✓ Regexp good in the middle (0.00s) ✓ Regexp good match regexp (0.00s) ✓ Regexp good match regexp newline (0.00s) ✓ Regexp good match regexp trailing spaces (0.00s) ✓ Regexp good match regexp with full sha (0.00s) ✓ Regexp good match regexp with short sha (0.00s) ✓ Regexp good match regexp with uppercase sha (0.00s) ✓ User in owner file (0.01s) ✓ User in owner file bad owners aliases yaml file (0.00s) ✓ User in owner file bad owners yaml file (0.00s) ✓ User in owner file no owners file (0.00s) ✓ User in owner file user alias in .* filters (0.00s) ✓ User in owner file user in .* filters (0.00s) ✓ User in owner file user in approvers (0.00s) ✓ User in owner file user in other filters (0.00s) ✓ User in owner file user in owners aliases file (0.00s) ✓ User in owner file user in reviewers (0.00s) ✓ User in owner file user not in .* filters (0.00s) ✓ User in owner file user not in owner file (0.00s) ✓ User in owner file user not in owners aliases file (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/action:
✓ Patch pipeline run (0.01s)

github.com/openshift-pipelines/pipelines-as-code/pkg/apis/incoming:
✓ Parse incoming payload (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/apis/pipelinesascode:

github.com/openshift-pipelines/pipelines-as-code/pkg/apis/pipelinesascode/keys:

github.com/openshift-pipelines/pipelines-as-code/pkg/apis/pipelinesascode/v1alpha1:
✓ Merge specs (0.00s)
✓ Merge specs different git providers (0.00s)
✓ Merge specs forgejo local merges with gitea global (0.00s)
✓ Merge specs forgejo settings from global (0.00s)
✓ Merge specs gitea local merges with forgejo global (0.00s)
✓ Merge specs gitlab settings from global (0.00s)
✓ Merge specs global settings (0.00s)
✓ Merge specs global settings just params and concurrency (0.00s)
✓ Merge specs global settings merge when local settings are nil (0.00s)
✓ Merge specs local forgejo settings take precedence (0.00s)
✓ Merge specs local gitlab settings merge missing fields from global (0.00s)
✓ Merge specs local gitlab settings take precedence (0.00s)
✓ Merge specs local settings take precedence (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/cel:
✓ Cel evaluate (0.01s)
✓ Value (0.01s)

github.com/openshift-pipelines/pipelines-as-code/pkg/changedfiles:
✓ Remove duplicates (0.00s)
✓ Remove duplicates method (0.00s)
✓ Remove duplicates method no duplicates (0.00s)
✓ Remove duplicates method with duplicates (0.00s)
✓ Remove duplicates no duplicates (0.00s)
✓ Remove duplicates with duplicates (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/cli/browser:

github.com/openshift-pipelines/pipelines-as-code/pkg/cmd/tknpac:

github.com/openshift-pipelines/pipelines-as-code/pkg/cli/prompt:
✓ Select repo (0.00s)
✓ Select repo when more than one repository exist (0.00s)
✓ Select repo when no repository exist (0.00s)
✓ Select repo when one repository exist (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/cli/info:
✓ Get PAC info (0.00s)
✓ Get PAC info configmap pipelines-as-code-info does not exist (0.00s)
✓ Get PAC info configmap pipelines-as-code-info exist (0.00s)
✓ Is github app installed (0.00s)
✓ Is github app installed github app is installed (0.00s)
✓ Is github app installed github app is not installed (0.00s)
✓ Update info config map (0.00s)
✓ Update info config map configmap pipelines-as-code-info does not exist (0.00s)
✓ Update info config map update configmap pipelines-as-code-info with provided options (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/cmd/tknpac/completion:
✓ Command (0.00s)
✓ Command bash completion (0.00s)
✓ Command fish completion (0.00s)
✓ Command powershell completion (0.00s)
✓ Command zsh completion (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/cmd/tknpac/deleterepo:

github.com/openshift-pipelines/pipelines-as-code/pkg/cli:
✓ Color from string (0.00s)
✓ Color from string blue (0.00s)
✓ Color from string bold (0.00s)
✓ Color from string cyan (0.00s)
✓ Color from string gray (0.00s)
✓ Color from string green (0.00s)
✓ Color from string magenta (0.00s)
✓ Color from string red (0.00s)
✓ Color from string unknown (0.00s)
✓ Color from string yellow (0.00s)
✓ Color scheme (0.00s)
✓ Color scheme blue (0.00s)
✓ Color scheme bold (0.00s)
✓ Color scheme cyan (0.00s)
✓ Color scheme gray (0.00s)
✓ Color scheme green (0.00s)
✓ Color scheme magenta (0.00s)
✓ Color scheme more (0.00s)
✓ Color scheme red (0.00s)
✓ Color scheme underline (0.00s)
✓ Color scheme yellow (0.00s)
✓ Color status (0.00s)
✓ Color status failed (0.00s)
✓ Color status norun (0.00s)
✓ Color status pipelineruntimeout (0.00s)
✓ Color status running (0.00s)
✓ Color status succeeded (0.00s)
✓ Env color disabled (0.00s)
✓ Env color disabled CLICOLO R=0 (0.00s)
✓ Env color disabled NO COLOR set (0.00s)
✓ Env color disabled none set (0.00s)
✓ Env color forced (0.00s)
✓ Env color forced set (0.00s)
✓ Env color forced unset (0.00s)
✓ Env color forced zero (0.00s)
✓ IO streams color enabled (0.00s)
✓ IO streams color scheme (0.00s)
✓ IO streams color support 256 (0.00s)
✓ IO streams is stdout TTY (0.00s)
✓ IO streams is stdout TTY with actual file (0.00s)
✓ IO streams is stdout TTY with override false (0.00s)
✓ IO streams is stdout TTY with override true (0.00s)
✓ IO streams set survey color (0.00s)
✓ IO test (0.00s)
✓ Is 256 color supported (0.00s)
✓ Is 256 color supported plain term (0.00s)
✓ Is 256 color supported term 2 4bit (0.00s)
✓ Is 256 color supported term 25 6color (0.00s)
✓ Is 256 color supported term truecolor (0.00s)
✓ New IO streams (0.00s)
✓ New askopts (0.00s)
✓ New cli options (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/cmd/tknpac/create:
✓ Clean up URL (0.00s)
✓ Clean up URL normal url (0.00s)
✓ Clean up URL url with creds (0.00s)
✓ Clean up URL url with creds and port (0.00s)
✓ Clean up URL url with creds# 01 (0.00s)
✓ Generate template (0.00s)
✓ Generate template with git info (0.00s)
✓ Generate template without git info (0.00s)
✓ Get namespace (0.00s)
✓ Get namespace change default to current git basename and suffix pipelines (0.00s)
✓ Get namespace create ns here (0.00s)
✓ Get namespace create ns not here (0.00s)
✓ Get namespace error you need to create the namespace first (0.00s)
✓ Get namespace ns already set (0.00s)
✓ Get repo URL (0.00s)
✓ Get repo URL URL already set (0.00s)
✓ Get repo URL default to gitinfo (0.00s)
✓ Get repo URL no url has been provided (0.00s)
✓ Get repo URL set from question (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/cmd/tknpac/logs:
✓ Logs (0.00s)
✓ Logs bad no prs (0.00s)
✓ Logs good show logs (0.00s)
✓ Logs good show logs with use last PR (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/cmd/tknpac/versioncmd:

github.com/openshift-pipelines/pipelines-as-code/pkg/cmd/tknpac/cel:
✓ CEL expression evaluation (0.02s)
✓ CEL expression evaluation body PR not draft (0.00s)
✓ CEL expression evaluation body PR number (0.00s)
✓ CEL expression evaluation body action (0.00s)
✓ CEL expression evaluation complex expression (0.00s)
✓ CEL expression evaluation false condition (0.00s)
✓ CEL expression evaluation headers check (0.00s)
✓ CEL expression evaluation invalid expression (0.00s)
✓ CEL expression evaluation pac event type (0.00s)
✓ CEL expression evaluation pac sender (0.00s)
✓ CEL expression evaluation pac target branch (0.00s)
✓ Command execution (0.00s)
✓ Command execution no body file (0.00s)
✓ Command execution no files provided (0.00s)
✓ Command execution unsupported provider (0.00s)
✓ Command execution valid pull request payload (0.00s)
✓ Command flags (0.00s)
✓ Command with gosmee script (0.00s)
✓ Command with real world payloads (0.00s)
✓ Detect provider (0.00s)
✓ Detect provider bitbucket cloud provider (0.00s)
✓ Detect provider bitbucket data center provider (0.00s)
✓ Detect provider forgejo provider with all headers (0.00s)
✓ Detect provider forgejo provider with git hub and forgejo headers (0.00s)
✓ Detect provider forgejo provider with only forgejo header (0.00s)
✓ Detect provider git hub provider (0.00s)
✓ Detect provider git lab provider (0.00s)
✓ Detect provider gitea provider (0.00s)
✓ Detect provider unknown provider (0.00s)
✓ Direct CEL variables (0.02s)
✓ Direct CEL variables backward compatibility - pac variables still work (0.00s)
✓ Direct CEL variables combined expression like PAC docs (0.00s)
✓ Direct CEL variables direct event title variable (0.00s)
✓ Direct CEL variables direct event variable (0.00s)
✓ Direct CEL variables direct source branch variable (0.00s)
✓ Direct CEL variables direct source url variable (0.00s)
✓ Direct CEL variables direct target branch variable (0.00s)
✓ Direct CEL variables direct target url variable (0.00s)
✓ Direct CEL variables negative condition like PAC docs (0.00s)
✓ Direct CEL variables regex matching like PAC docs (0.00s)
✓ Event from forgejo (0.00s)
✓ Event from forgejo both forgejo and gitea headers (0.00s)
✓ Event from forgejo error when only gitea header provided (0.00s)
✓ Event from forgejo forgejo header only (0.00s)
✓ Event from git hub (0.01s)
✓ Event from git hub invalid json (0.00s)
✓ Event from git hub more event types (0.00s)
✓ Event from git hub more event types commit comment event (0.00s)
✓ Event from git hub more event types issue comment event (0.00s)
✓ Event from git hub more event types missing X- git hub-event header (0.00s)
✓ Event from git hub pull request event (0.01s)
✓ Event from git hub push event (0.00s)
✓ Event from git hub unsupported event type (0.00s)
✓ Event from git hub with provider (0.00s)
✓ Event from git hub with provider fallback to basic parsing when no token provided (0.00s)
✓ Event from git hub with provider handles invalid token gracefully (0.00s)
✓ Event from git hub with provider handles pull request events without token (0.00s)
✓ Event from git lab (0.00s)
✓ Event from git lab git lab merge request event (0.00s)
✓ Git hub parser with missing fields (0.00s)
✓ Git hub parser with missing fields commit comment event missing comment (0.00s)
✓ Git hub parser with missing fields issue comment with issue but no pull request links (0.00s)
✓ Git hub parser with missing fields missing base in pull request (0.00s)
✓ Git hub parser with missing fields missing head in pull request (0.00s)
✓ Git hub parser with missing fields missing head repo in pull request (0.00s)
✓ Git hub parser with missing fields missing owner in repository (0.00s)
✓ Git hub parser with missing fields missing pull request field (0.00s)
✓ Git hub parser with missing fields missing repository field (0.00s)
✓ Git hub parser with missing fields missing sender field (0.00s)
✓ Git hub parser with missing fields push event missing head commit (0.00s)
✓ Gitea parser with missing fields (0.00s)
✓ Gitea parser with missing fields issue comment with issue but no pull request (0.00s)
✓ Gitea parser with missing fields issue comment with missing comment (0.00s)
✓ Gitea parser with missing fields issue comment with pull request source repository (0.00s)
✓ Gitea parser with missing fields pull request comment with pull request source repository (0.00s)
✓ Gitea parser with missing fields pull request with missing head repository (0.00s)
✓ Gitea parser with missing fields pull request with missing owner (0.00s)
✓ Gitea parser with missing fields pull request with missing pull request field (0.00s)
✓ Gitea parser with missing fields pull request with missing repository (0.00s)
✓ Gitea parser with missing fields pull request with missing sender (0.00s)
✓ Gitea parser with missing fields push with missing head commit (0.00s)
✓ Gitea parser with missing fields push with missing repo (0.00s)
✓ Header formats (0.00s)
✓ Header formats empty headers file (0.00s)
✓ Header formats invalid json headers (0.00s)
✓ Header formats json headers (0.00s)
✓ Header formats plain text headers (0.00s)
✓ Invalid files (0.00s)
✓ Invalid files invalid json in body file (0.00s)
✓ Invalid files non-existent body file (0.00s)
✓ Invalid files non-existent headers file (0.00s)
✓ Is gosmee script (0.00s)
✓ Is gosmee script curl without headers (0.00s)
✓ Is gosmee script empty input (0.00s)
✓ Is gosmee script json headers (0.00s)
✓ Is gosmee script plain text headers (0.00s)
✓ Is gosmee script simple curl command (0.00s)
✓ Is gosmee script typical gosmee script (0.00s)
✓ Pac params from event (0.00s)
✓ Pac params from event edge cases (0.00s)
✓ Pac params from event edge cases empty event (0.00s)
✓ Pac params from event edge cases event with carriage return in comment (0.00s)
✓ Pac params from event edge cases event with clone URL preference (0.00s)
✓ Pac params from event pull request event (0.00s)
✓ Pac params from event push event with tag (0.00s)
✓ Parse HTTP headers (0.00s)
✓ Parse HTTP headers empty input (0.00s)
✓ Parse HTTP headers headers with empty lines (0.00s)
✓ Parse HTTP headers headers with extra spaces (0.00s)
✓ Parse HTTP headers malformed header line ignored (0.00s)
✓ Parse HTTP headers valid headers (0.00s)
✓ Parse curl headers (0.00s)
✓ Parse curl headers curl with malformed header (0.00s)
✓ Parse curl headers curl with mixed arguments (0.00s)
✓ Parse curl headers curl with no headers (0.00s)
✓ Parse curl headers simple curl with headers (0.00s)
✓ Parse gosmee script (0.00s)
✓ Parse gosmee script curl without headers (0.00s)
✓ Parse gosmee script real-world example from gosmee (0.00s)
✓ Parse gosmee script script without curl commands (0.00s)
✓ Parse gosmee script typical gosmee script (0.00s)
✓ Split curl command (0.00s)
✓ Split curl command complex curl command (0.00s)
✓ Split curl command curl with headers (0.00s)
✓ Split curl command curl with single quotes (0.00s)
✓ Split curl command empty string (0.00s)
✓ Split curl command simple curl command (0.00s)
✓ Split curl command unterminated quote (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/consoleui:
✓ Custom bad (0.00s)
✓ Custom good (0.00s)
✓ Fallback console (0.00s)
✓ Openshift console UI (0.00s)
✓ Openshift console UI get openshift console name (0.00s)
✓ Openshift console UI get openshift console url (0.00s)
✓ Openshift console UI no host in route.spec (0.00s)
✓ Openshift console UI no openshift console (0.00s)
✓ Openshift console UI no spec in route (0.00s)
✓ Openshift console URLs (0.00s)
✓ Tekton dashboard (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/errors:

github.com/openshift-pipelines/pipelines-as-code/pkg/configutil:
✓ Validate and assign values (0.00s)
✓ Validate and assign values custom case (0.00s)
✓ Validate and assign values custom validator for name to start with pac (0.00s)
✓ Validate and assign values invalid value for bool field (0.00s)
✓ Validate and assign values invalid value for int field (0.00s)
✓ Validate and assign values override default values (0.00s)
✓ Validate and assign values with all default values (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/cmd/tknpac/bootstrap:
✓ Add common flags (0.00s)
✓ Add github app flag (0.00s)
✓ Ask questions (0.00s)
✓ Ask questions public github, route already set (0.00s)
✓ Ask questions route needs to be asked (0.00s)
✓ Check openshift route (0.00s)
✓ Create pac secret (0.00s)
✓ Delete secret (0.00s)
✓ Detect open shift route (0.00s)
✓ Detect pac installation (0.00s)
✓ Detect pac installation configmap not in default namespace (0.00s)
✓ Detect pac installation configmap not in default namespace with user provided namespace (0.00s)
✓ Detect pac installation get configmap in openshift-pipelines namespace (0.00s)
✓ Detect pac installation get configmap in pipeline-as-code namespace (0.00s)
✓ Detect pac installation get configmap present in different namespace other than default namespaces (0.00s)
✓ Detect self signed certificate (0.21s)
✓ Generate manifest (0.00s)
✓ Generate manifest test generate manifest (0.00s)
✓ Get GH client (0.00s)
✓ Get GH client test get github client (0.00s)
✓ Get GH client test get github client# 01 (0.00s)
✓ Get dashboard URL (0.00s)
✓ Get dashboard URL detect dashboard but user rejects it (0.00s)
✓ Get dashboard URL detect dashboard in ingress with http (0.00s)
✓ Get dashboard URL detect dashboard in ingress with https (0.00s)
✓ Get dashboard URL no dashboard detected, user provides empty url (0.00s)
✓ Get dashboard URL no dashboard detected, user provides invalid url (0.00s)
✓ Get dashboard URL no dashboard detected, user provides url (0.00s)
✓ Install (0.00s)
✓ Install gosmee forwarder declined (0.00s)
✓ Install pac nightly kubectl missing (0.00s)
✓ Is TLS error (0.00s)
✓ Kubectl apply not found (0.00s)
✓ Trust provider hostname (0.00s)
✓ Trust provider hostname a missing configmap warns instead of failing (0.00s)
✓ Trust provider hostname adds the hostname to an empty allowlist (0.00s)
✓ Trust provider hostname an already trusted hostname is not duplicated (0.00s)
✓ Trust provider hostname an unusable hostname warns instead of failing (0.00s)
✓ Trust provider hostname appends to the hosts already trusted (0.00s)
✓ Trust provider hostname targets the configmap of the controller (0.00s)
✓ Update PAC config map (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/generated/clientset/versioned:

github.com/openshift-pipelines/pipelines-as-code/pkg/cmd/tknpac/generate:
✓ Detect language (0.00s)
✓ Detect language detect generic (0.00s)
✓ Detect language detect golang (0.00s)
✓ Detect language detect java (0.00s)
✓ Detect language detect nodejs (0.00s)
✓ Detect language detect python (0.00s)
✓ Detect language explicit language set (0.00s)
✓ Detect language explicit language set with no template (0.00s)
✓ Gen tmpl (0.00s)
✓ Gen tmpl fallback to event URL (0.00s)
✓ Gen tmpl generate generic template (0.00s)
✓ Gen tmpl generate golang template (0.00s)
✓ Gen tmpl generate java template (0.00s)
✓ Gen tmpl generate nodejs template (0.00s)
✓ Gen tmpl generate python template (0.00s)
✓ Generate template (0.01s)
✓ Generate template create .tekton directory if it doesn't exists (0.00s)
✓ Generate template create tmp foobar if it doesn't exists (0.00s)
✓ Generate template pull request already exist don't overwrite (0.00s)
✓ Generate template pull request already exist don't regenerate sample template (0.00s)
✓ Generate template pull request default (0.00s)
✓ Generate template pull request golang (0.00s)
✓ Generate template pull request python (0.00s)
✓ Generate template pull request python poetry (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/events:
✓ Event emitter emit message (0.00s)
✓ Event emitter emit message event with a reason (0.00s)
✓ Event emitter emit message nil client doesn't cause panic (0.00s)
✓ Event emitter emit message nil logger doesn't cause panic (0.00s)
✓ Event emitter emit message repo doesn't exists (0.00s)
✓ Event emitter emit message repo exists (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/generated/clientset/versioned/scheme:

github.com/openshift-pipelines/pipelines-as-code/pkg/generated/clientset/versioned/typed/pipelinesascode/v1alpha1:

github.com/openshift-pipelines/pipelines-as-code/pkg/generated/clientset/versioned/typed/pipelinesascode/v1alpha1/fake:

github.com/openshift-pipelines/pipelines-as-code/pkg/generated/informers/externalversions:

github.com/openshift-pipelines/pipelines-as-code/pkg/generated/clientset/versioned/fake:

github.com/openshift-pipelines/pipelines-as-code/pkg/generated/informers/externalversions/internalinterfaces:

github.com/openshift-pipelines/pipelines-as-code/pkg/cli/webhook:
✓ Ask BB webhook config (0.00s)
✓ Ask BB webhook config ask all details no defaults (0.00s)
✓ Ask BB webhook config invalid repo format (0.00s)
✓ Ask BB webhook config with defaults (0.00s)
✓ Ask BB webhook config with personalaccesstoken (0.00s)
✓ Ask GH webhook config (0.00s)
✓ Ask GH webhook config ask all details no defaults (0.00s)
✓ Ask GH webhook config invalid repo format (0.00s)
✓ Ask GH webhook config with defaults (0.00s)
✓ Ask GH webhook config with defaults and a slash (0.00s)
✓ Ask GH webhook config with personalaccesstoken (0.00s)
✓ Ask GL webhook config (0.00s)
✓ Ask GL webhook config ask all details no defaults (0.00s)
✓ Ask GL webhook config with defaults (0.00s)
✓ Ask GL webhook config with defaults and given personalaccesstoken (0.00s)
✓ Ask forgejo webhook config (0.00s)
✓ Ask forgejo webhook config ask all details no defaults (0.00s)
✓ Ask forgejo webhook config invalid repo format (0.00s)
✓ Ask forgejo webhook config with SSH URL (0.00s)
✓ Ask forgejo webhook config with defaults (0.00s)
✓ Ask forgejo webhook config with git suffix (0.00s)
✓ Ask forgejo webhook config with instance subpath (0.00s)
✓ Ask forgejo webhook config with personalaccesstoken (0.00s)
✓ Ask forgejo webhook config with provider url (0.00s)
✓ Ask forgejo webhook config with trailing slash (0.00s)
✓ BB create (0.53s)
✓ BB create requires API token (0.00s)
✓ BB create requires account email (0.00s)
✓ BB create uses account email for authentication (0.00s)
✓ BB create webhook created (0.00s)
✓ BB create webhook failed (0.53s)
✓ BB run returns API token and account email (0.00s)
✓ Create (0.00s)
✓ Create webhook created (0.00s)
✓ Create webhook failed (0.00s)
✓ Forgejo create (0.00s)
✓ Forgejo create webhook created (0.00s)
✓ Forgejo create webhook failed (0.00s)
✓ Forgejo run uses personal access token for webhook creation (0.00s)
✓ GL create (0.00s)
✓ GL create webhook created (0.00s)
✓ GL create webhook failed (0.00s)
✓ Get provider name (0.00s)
✓ Get provider name bitbucket cloud (0.00s)
✓ Get provider name forgejo (0.00s)
✓ Get provider name gitea (0.00s)
✓ Get provider name github (0.00s)
✓ Get provider name gitlab (0.00s)
✓ Parse forgejo repository URL (0.00s)
✓ Parse forgejo repository URL HTTPS URL (0.00s)
✓ Parse forgejo repository URL HTTPS URL with instance subpath (0.00s)
✓ Parse forgejo repository URL SCP style SSH URL requires manual input (0.00s)
✓ Parse forgejo repository URL SSH URL requires manual input (0.00s)
✓ Web hook secret (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/generated/informers/externalversions/pipelinesascode:

github.com/openshift-pipelines/pipelines-as-code/pkg/generated/informers/externalversions/pipelinesascode/v1alpha1:

github.com/openshift-pipelines/pipelines-as-code/pkg/generated/injection/client:

github.com/openshift-pipelines/pipelines-as-code/pkg/generated/injection/client/fake:

github.com/openshift-pipelines/pipelines-as-code/pkg/generated/injection/informers/factory/fake:

github.com/openshift-pipelines/pipelines-as-code/pkg/generated/injection/informers/factory/filtered:

github.com/openshift-pipelines/pipelines-as-code/pkg/generated/injection/informers/factory/filtered/fake:

github.com/openshift-pipelines/pipelines-as-code/pkg/generated/injection/informers/pipelinesascode/v1alpha1/repository:

github.com/openshift-pipelines/pipelines-as-code/pkg/generated/injection/informers/pipelinesascode/v1alpha1/repository/fake:

github.com/openshift-pipelines/pipelines-as-code/pkg/generated/injection/informers/pipelinesascode/v1alpha1/repository/filtered:

github.com/openshift-pipelines/pipelines-as-code/pkg/generated/injection/informers/pipelinesascode/v1alpha1/repository/filtered/fake:

github.com/openshift-pipelines/pipelines-as-code/pkg/generated/injection/informers/factory:

github.com/openshift-pipelines/pipelines-as-code/pkg/git:
✓ Get git info (0.11s)
✓ Get git info get git info (0.02s)
✓ Get git info get git info no github url (0.01s)
✓ Get git info get git info remove .git suffix (0.02s)
✓ Get git info get head ref (0.02s)
✓ Get git info transform SSH info (0.02s)
✓ Get git info transform SSH info from upstream (0.02s)

github.com/openshift-pipelines/pipelines-as-code/pkg/generated/listers/pipelinesascode/v1alpha1:

github.com/openshift-pipelines/pipelines-as-code/pkg/formatting:
✓ Age (0.00s)
✓ Camel casit (0.00s)
✓ Camel casit oneword (0.00s)
✓ Camel casit pull request (0.00s)
✓ Clean kubernetes name (0.00s)
✓ Clean kubernetes name contains spaces (0.00s)
✓ Clean kubernetes name end with an alphanumeric character (0.00s)
✓ Clean kubernetes name end with special character (0.00s)
✓ Clean kubernetes name keep dash (0.00s)
✓ Clean kubernetes name keep dot (0.00s)
✓ Clean kubernetes name replace angle bracket (0.00s)
✓ Clean kubernetes name replace new line (0.00s)
✓ Clean kubernetes name replace percent (0.00s)
✓ Clean kubernetes name replace slash (0.00s)
✓ Clean kubernetes name replace square bracket (0.00s)
✓ Clean kubernetes name start with an alphanumeric character (0.00s)
✓ Clean kubernetes name start with lowercase (0.00s)
✓ Clean kubernetes name start with special character (0.00s)
✓ Clean kubernetes name start with uppercase (0.00s)
✓ Condition emoji (0.00s)
✓ Condition emoji failed (0.00s)
✓ Condition emoji none (0.00s)
✓ Condition emoji running (0.00s)
✓ Condition emoji success (0.00s)
✓ Duration (0.00s)
✓ Get repo owner from GHURL (0.00s)
✓ Get repo owner from GHURL bad url (0.00s)
✓ Get repo owner from GHURL repoowner (0.00s)
✓ Get repo owner from GHURL repoowner with capital letters (0.00s)
✓ Get repo owner splitted (0.00s)
✓ Get repo owner splitted bad chars in url (0.00s)
✓ Get repo owner splitted bad no org repo in url (0.00s)
✓ Get repo owner splitted bad url (0.00s)
✓ Get repo owner splitted good parse url (0.00s)
✓ Get repo owner splitted good parse url gitlab subpath (0.00s)
✓ K8 labels cleanup (0.00s)
✓ K8 labels cleanup clean characters for k 8 labels (0.00s)
✓ K8 labels cleanup github bot name (0.00s)
✓ K8 labels cleanup has an invalid end ( ) (0.00s)
✓ K8 labels cleanup has an invalid end ( ) (0.00s)
✓ K8 labels cleanup has an invalid end ( -) (0.00s)
✓ K8 labels cleanup has an invalid end ( .) (0.00s)
✓ K8 labels cleanup has an invalid end ( :) (0.00s)
✓ K8 labels cleanup has an invalid end ( [) (0.00s)
✓ K8 labels cleanup has an invalid end ( ]) (0.00s)
✓ K8 labels cleanup has an invalid start ( ) (0.00s)
✓ K8 labels cleanup has an invalid start ( ) (0.00s)
✓ K8 labels cleanup has an invalid start ( -) (0.00s)
✓ K8 labels cleanup has an invalid start ( .) (0.00s)
✓ K8 labels cleanup has an invalid start ( :) (0.00s)
✓ K8 labels cleanup has an invalid start ( [) (0.00s)
✓ K8 labels cleanup has an invalid start ( ]) (0.00s)
✓ K8 labels cleanup keep dash (0.00s)
✓ K8 labels cleanup long value once cut starts with a . (0.00s)
✓ K8 labels cleanup ones with special chars won't get longer (0.00s)
✓ K8 labels cleanup remove new line (0.00s)
✓ K8 labels cleanup remove new line from the middle (0.00s)
✓ K8 labels cleanup secret name contains non-alphanumeric characters keep underscore (0.00s)
✓ K8 labels cleanup secret name ends with non-alphanumeric character (0.00s)
✓ K8 labels cleanup secret name longer than 63 characters (0.00s)
✓ K8 labels cleanup secret name starts with non-alphanumeric character (0.00s)
✓ K8 labels cleanup trailing dash name removed (0.00s)
✓ Message template make template (0.00s)
✓ Message template make template error make template (0.00s)
✓ Message template make template failure template (0.00s)
✓ Message template make template test make template (0.00s)
✓ PR duration (0.00s)
✓ PR duration no completion time (0.00s)
✓ PR duration no start time (0.00s)
✓ PR duration with both times (0.00s)
✓ Pipeline run status (0.00s)
✓ Pipeline run status cancelled (0.00s)
✓ Pipeline run status failure (0.00s)
✓ Pipeline run status neutral (0.00s)
✓ Pipeline run status success (0.00s)
✓ Sanitize branch (0.00s)
✓ Sanitize branch don't sanitize tags (0.00s)
✓ Sanitize branch sanitize branch (0.00s)
✓ Sanitize branch sanitize main ref (0.00s)
✓ Short SHA (0.00s)
✓ Short SHA nada (0.00s)
✓ Short SHA shorten sha (0.00s)
✓ Short SHA very short (0.00s)
✓ Skip emoji (0.00s)
✓ Timeout (0.00s)
✓ Unique string array (0.00s)
✓ Unique string array no duplicates (0.00s)
✓ Unique string array with duplicates (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/informer/transform:
✓ Measure pipeline run transform savings (0.01s)
✓ Measure repo transform savings (0.00s)
✓ Pipeline run for cache (0.00s)
✓ Pipeline run for cache non-pipeline run passed through unchanged (0.00s)
✓ Pipeline run for cache strips large spec and status fields, keeps conditions and timing (0.00s)
✓ Pipeline run for cache tombstone wrapping pipeline run is unwrapped and transformed (0.00s)
✓ Repository for cache (0.00s)
✓ Repository for cache nil annotations handled safely (0.00s)
✓ Repository for cache non-repository object passed through unchanged (0.00s)
✓ Repository for cache strips managed fields and annotations, keeps spec (0.00s)
✓ Repository for cache tombstone wrapping repository is unwrapped and transformed (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/hostpolicy:
✓ Emptying configured list restores managed policy (0.00s)
✓ Not trusted error is actionable (0.00s)
✓ Trust on first use (0.00s)
✓ Trust on first use a configured allowlist is authoritative for the public instances too (0.00s)
✓ Trust on first use a configured allowlist refuses an unlisted host (0.00s)
✓ Trust on first use a private address is never recorded automatically (0.00s)
✓ Trust on first use a private address listed explicitly is trusted (0.00s)
✓ Trust on first use administrator listed host is accepted without being learned (0.00s)
✓ Trust on first use appends (0.00s)
✓ Trust on first use appends a configured list is authoritative even when it matches a learned host (0.00s)
✓ Trust on first use appends a corrupted learned annotation is replaced safely (0.00s)
✓ Trust on first use appends a public instance stays trusted alongside a learnt one (0.00s)
✓ Trust on first use appends a second self hosted instance is appended, not substituted (0.00s)
✓ Trust on first use appends an administrator configured list is never appended to (0.00s)
✓ Trust on first use does not write when configured (0.00s)
✓ Trust on first use first authenticated host is recorded (0.00s)
✓ Trust on first use host is normalized before being recorded (0.00s)
✓ Trust on first use invalid allowlist is reported and left untouched (0.00s)
✓ Trust on first use invalid host (0.00s)
✓ Trust on first use public github stays trusted without being recorded (0.00s)
✓ Trust on first use rejects concurrent different host (0.00s)
✓ Trust on first use retries conflict (0.01s)
✓ Trusted (0.00s)
✓ Trusted URL (0.00s)
✓ Trusted URL a path prefix is preserved (0.00s)
✓ Trusted URL a unicode lookalike of github.com is refused (0.00s)
✓ Trusted URL an untrusted host is refused (0.00s)
✓ Trusted URL cleartext is refused (0.00s)
✓ Trusted URL the host is replaced by the canonical one (0.00s)
✓ Trusted URL userinfo redirection is refused (0.00s)
✓ Trusted a configured allowlist is authoritative for the public instances too (0.00s)
✓ Trusted a public instance listed explicitly stays trusted (0.00s)
✓ Trusted api.github.com folds into github.com (0.00s)
✓ Trusted config map get error (0.00s)
✓ Trusted controller learned self hosted host is trusted (0.00s)
✓ Trusted invalid allowlist is reported (0.00s)
✓ Trusted invalid host is refused (0.00s)
✓ Trusted listed self hosted host is trusted (0.00s)
✓ Trusted lookalike host is refused (0.00s)
✓ Trusted never writes (0.00s)
✓ Trusted one of several listed hosts is trusted (0.00s)
✓ Trusted public github is trusted without any configuration (0.00s)
✓ Trusted public gitlab is trusted without any configuration (0.00s)
✓ Trusted self hosted host is refused when the allowlist is empty (0.00s)
✓ Trusted unlisted host is refused (0.00s)
✓ Trusted uses controller config map (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/llm/providers/gemini:
✓ Analyze API error (0.00s)
✓ Analyze API error forbidden (0.00s)
✓ Analyze API error internal server error (0.00s)
✓ Analyze API error rate limit exceeded (0.00s)
✓ Analyze API error unauthorized (0.00s)
✓ Analyze HTTP error (0.00s)
✓ Analyze empty content (0.00s)
✓ Analyze empty content empty candidates (0.00s)
✓ Analyze empty content empty parts (0.00s)
✓ Analyze request creation error (0.33s)
✓ Analyze request creation error bad context (0.33s)
✓ Analyze request creation error nested bad context (0.00s)
✓ Analyze response parse error (0.00s)
✓ Analyze success (0.00s)
✓ Analyze timeout (0.20s)
✓ Config defaults (0.00s)
✓ Get provider name (0.00s)
✓ New client (0.00s)
✓ New client custom config (0.00s)
✓ New client empty api key (0.00s)
✓ New client nil config (0.00s)
✓ New client valid config with defaults (0.00s)
✓ Validate config (0.00s)
✓ Validate config empty api key (0.00s)
✓ Validate config invalid URL - has whitespace (0.00s)
✓ Validate config invalid URL - no host (0.00s)
✓ Validate config invalid URL - no scheme (0.00s)
✓ Validate config invalid URL - wrong scheme (0.00s)
✓ Validate config negative max tokens (0.00s)
✓ Validate config negative timeout (0.00s)
✓ Validate config valid config (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/llm/providers/openai:
✓ Analyze API error (0.00s)
✓ Analyze API error API error without body (0.00s)
✓ Analyze API error generic API error (0.00s)
✓ Analyze API error internal server error (0.00s)
✓ Analyze API error rate limit exceeded (0.00s)
✓ Analyze API error unauthorized (0.00s)
✓ Analyze empty response (0.00s)
✓ Analyze errors (0.00s)
✓ Analyze errors HTTP error (empty response) (0.00s)
✓ Analyze errors response parse error (0.00s)
✓ Analyze prompt build error (0.00s)
✓ Analyze success (0.00s)
✓ Analyze timeout (0.20s)
✓ Analyze with context (0.00s)
✓ Config defaults (0.00s)
✓ Get provider name (0.00s)
✓ New client (0.00s)
✓ New client custom config (0.00s)
✓ New client empty api key (0.00s)
✓ New client nil config (0.00s)
✓ New client valid config with defaults (0.00s)
✓ Request marshaling (0.00s)
✓ Validate config (0.00s)
✓ Validate config empty api key (0.00s)
✓ Validate config invalid URL - has whitespace (0.00s)
✓ Validate config invalid URL - no host (0.00s)
✓ Validate config invalid URL - no scheme (0.00s)
✓ Validate config invalid URL - wrong scheme (0.00s)
✓ Validate config negative max tokens (0.00s)
✓ Validate config negative timeout (0.00s)
✓ Validate config valid config (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/opscomments:
✓ Any ops kube label in selector (0.00s)
✓ Comment event type test (0.00s)
✓ Comment event type test cancel all (0.00s)
✓ Comment event type test cancel all with prefix (0.00s)
✓ Comment event type test cancel single (0.00s)
✓ Comment event type test cancel single with prefix (0.00s)
✓ Comment event type test no comment event type (0.00s)
✓ Comment event type test ok to test (0.00s)
✓ Comment event type test retest all (0.00s)
✓ Comment event type test retest all with prefix (0.00s)
✓ Comment event type test retest single (0.00s)
✓ Comment event type test retest single with prefix (0.00s)
✓ Comment event type test test all (0.00s)
✓ Comment event type test test all with prefix (0.00s)
✓ Comment event type test test single (0.00s)
✓ Comment event type test test single with prefix (0.00s)
✓ Get SHA from ok to test comment (0.00s)
✓ Get SHA from ok to test comment full sha (0.00s)
✓ Get SHA from ok to test comment no sha (0.00s)
✓ Get SHA from ok to test comment no sha with prefix (0.00s)
✓ Get SHA from ok to test comment sha with prefix (0.00s)
✓ Get SHA from ok to test comment sha with surrounding text (0.00s)
✓ Get SHA from ok to test comment short sha (0.00s)
✓ Get name from function (0.00s)
✓ Get name from function get name from cancel comment (0.00s)
✓ Get name from function get name from retest comment (0.00s)
✓ Get name from function get name from test comment (0.00s)
✓ Get name from function get name from test comment with args (0.00s)
✓ Get name from function key value arg is not a pipeline name (0.00s)
✓ Get name from function key value args without pipeline name (0.00s)
✓ Is any ops event type (0.00s)
✓ Is any ops event type cancel comment all event type (0.00s)
✓ Is any ops event type cancel comment single event type (0.00s)
✓ Is any ops event type no ops comment event type (0.00s)
✓ Is any ops event type ok to test comment event type (0.00s)
✓ Is any ops event type on comment event type (0.00s)
✓ Is any ops event type random string (0.00s)
✓ Is any ops event type retest all comment event type (0.00s)
✓ Is any ops event type retest single comment event type (0.00s)
✓ Is any ops event type test all comment event type (0.00s)
✓ Is any ops event type test single comment event type (0.00s)
✓ Is ok to test comment (0.00s)
✓ Is ok to test comment invalid (0.00s)
✓ Is ok to test comment valid (0.00s)
✓ Is ok to test comment valid comment with sha (0.00s)
✓ Is ok to test comment valid comment with sha with prefix (0.00s)
✓ Is ok to test comment valid comments (0.00s)
✓ Is ok to test comment valid with some string before (0.00s)
✓ Is ok to test comment valid with some string before and after (0.00s)
✓ Is test retest comment (0.00s)
✓ Is test retest comment invalid (0.00s)
✓ Is test retest comment invalid# 01 (0.00s)
✓ Is test retest comment retest trigger single pr (0.00s)
✓ Is test retest comment retest with some string before and after (0.00s)
✓ Is test retest comment test trigger single pr (0.00s)
✓ Is test retest comment test valid with some string before and after (0.00s)
✓ Is test retest comment test valid with some string before and after# 01 (0.00s)
✓ Is test retest comment valid comments (0.00s)
✓ Is test retest comment valid retest (0.00s)
✓ Is test retest comment valid retest with prefix (0.00s)
✓ Is test retest comment valid retest with some string before (0.00s)
✓ Is test retest comment valid test all (0.00s)
✓ Is test retest comment valid test with prefix (0.00s)
✓ Is test retest comment valid test with some string before (0.00s)
✓ Labels backward compat (0.00s)
✓ Labels backward compat on comment event type (0.00s)
✓ Labels backward compat other label (0.00s)
✓ Labels backward compat retest all comment event type (0.00s)
✓ Parse key value args (0.00s)
✓ Parse key value args do not start with (0.00s)
✓ Parse key value args parse multiple mix (0.00s)
✓ Parse key value args parse multiple mix with non proper keyvalue (0.00s)
✓ Parse key value args parse quoted with space (0.00s)
✓ Parse key value args parse simple (0.00s)
✓ Parse key value args parse with newline (0.00s)
✓ Set event type test pipeline run (0.00s)
✓ Set event type test pipeline run cancel all pr (0.00s)
✓ Set event type test pipeline run cancel all with prefix (0.00s)
✓ Set event type test pipeline run cancel single pr (0.00s)
✓ Set event type test pipeline run cancel single pr with prefix (0.00s)
✓ Set event type test pipeline run no event type (0.00s)
✓ Set event type test pipeline run retest all with prefix (0.00s)
✓ Set event type test pipeline run retest single event type (0.00s)
✓ Set event type test pipeline run retest single pr with prefix (0.00s)
✓ Set event type test pipeline run test all with prefix (0.00s)
✓ Set event type test pipeline run test single event type (0.00s)
✓ Set event type test pipeline run test single pr with prefix (0.00s)
✓ Set event type test pipeline run test with key value arg treated as test all (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/params/clients:
✓ Clients get URL (0.00s)
✓ Clients get URL bad (0.00s)
✓ Clients get URL good (0.00s)
✓ Console UI client (0.00s)
✓ Console UI get set (0.00s)
✓ Dynamic client (0.00s)
✓ Init clients (0.00s)
✓ Kube client (0.00s)
✓ Kube config (0.00s)
✓ New clients (0.01s)
✓ New clients already initialized (0.00s)
✓ Pac client (0.00s)
✓ Tekton client (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/params/info:
✓ Get controller info from env or default (0.00s)
✓ Get controller info from env or default info from default (0.00s)
✓ Get controller info from env or default info with envs (0.00s)
✓ Get current controller name (0.00s)
✓ Get current controller name context with a different key (should not find ours) (0.00s)
✓ Get current controller name context with our key and another key (0.00s)
✓ Get current controller name controller name not present in context (0.00s)
✓ Get current controller name controller name present in context (0.00s)
✓ Get current controller name empty string as controller name (0.00s)
✓ Get current controller name value present but not a string (0.00s)
✓ Get store current controller name (0.00s)
✓ Get store current controller name did not get any (0.00s)
✓ Get store current controller name store controller name (0.00s)
✓ Info event (0.00s)
✓ Kube opts flags (0.00s)
✓ Kube opts flags both flags short form (0.00s)
✓ Kube opts flags both flags together (0.00s)
✓ Kube opts flags kubeconfig flag only (0.00s)
✓ Kube opts flags namespace flag only (0.00s)
✓ Kube opts flags namespace flag short form (0.00s)
✓ Kube opts with env (0.00s)
✓ Kube opts with env with env (0.00s)
✓ Kube opts with env with env# 01 (0.00s)
✓ New info (0.00s)
✓ User home dir (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/params/settings:
✓ Default settings (0.00s)
✓ Get catalog hub (0.00s)
✓ Get catalog hub bad custom catalog called https (0.00s)
✓ Get catalog hub bad invalid url (0.00s)
✓ Get catalog hub bad missing keys custom catalog (0.00s)
✓ Get catalog hub bad missing value for custom catalog (0.00s)
✓ Get catalog hub good custom catalog (0.00s)
✓ Get catalog hub good custom catalog with different data (0.00s)
✓ Get catalog hub good custom catalog with initialization (0.00s)
✓ Get catalog hub good custom catalog with same data (0.00s)
✓ Get catalog hub good default catalog (0.00s)
✓ Get catalog hub multiple custom catalogs (0.00s)
✓ Is valid trusted provider hostnames (0.00s)
✓ Is valid trusted provider hostnames empty value means not configured (0.00s)
✓ Is valid trusted provider hostnames hostname with a path is refused (0.00s)
✓ Is valid trusted provider hostnames hostname with credentials is refused (0.00s)
✓ Is valid trusted provider hostnames https url spelling of a hostname (0.00s)
✓ Is valid trusted provider hostnames valid comma separated hostnames (0.00s)
✓ Sync config (0.00s)
✓ Sync config invalid value for bool field (0.00s)
✓ Sync config invalid value for int field (0.00s)
✓ Sync config invalid value regex (0.00s)
✓ Sync config invalid value trusted provider hostnames (0.00s)
✓ Sync config invalid value url (0.00s)
✓ Sync config invalid value url for custom console pr detail (0.00s)
✓ Sync config override values (0.00s)
✓ Sync config with all default values (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/params/triggertype:

github.com/openshift-pipelines/pipelines-as-code/pkg/params/versiondata:

github.com/openshift-pipelines/pipelines-as-code/pkg/cli/status:
✓ Get run status (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/pipelinerunmetrics:
✓ Count running PRs (0.00s)
✓ Get panics without recorder (0.00s)
✓ Observe running PRs metrics empty (0.00s)
✓ Recorder metrics (0.00s)
✓ Recorder not initialized (0.00s)
✓ Report running pipeline runs (0.00s)
✓ With client (0.00s)
✓ With informer (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/cmd/tknpac/listcmd:
✓ List (0.02s)
✓ List test list repositories only (0.00s)
✓ List test list repositories only all namespaces (0.01s)
✓ List test list repositories only live PR (0.00s)
✓ List test list repositories only specific namespaces (0.00s)
✓ List test list when there are no repositories in the namespace (0.00s)
✓ List test with real time (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/provider:
✓ Cancel comment (0.00s)
✓ Cancel comment cancel single pr (0.00s)
✓ Cancel comment invalid (0.00s)
✓ Cancel comment invalid comment (0.00s)
✓ Cancel comment valid (0.00s)
✓ Cancel comment valid comments (0.00s)
✓ Cancel comment valid with some string before (0.00s)
✓ Cancel comment valid with some string before and after (0.00s)
✓ Compare host of URLS (0.00s)
✓ Compare host of URLS bad url 1 (0.00s)
✓ Compare host of URLS bad url 2 (0.00s)
✓ Compare host of URLS exact same (0.00s)
✓ Compare host of URLS exact same but different (0.00s)
✓ Get BB cloud status key (0.00s)
✓ Get BB cloud status key app and pr name combined exceed 40 chars falls back to pr name only (0.00s)
✓ Get BB cloud status key app and pr name combined fit in 40 chars (0.00s)
✓ Get BB cloud status key application name longer than 40 truncated (0.00s)
✓ Get BB cloud status key application name only no pipeline run name (0.00s)
✓ Get BB cloud status key long pr name with app produces stable hash (0.00s)
✓ Get BB cloud status key no application name no pipeline run name (0.00s)
✓ Get BB cloud status key no application name pipeline run name exactly 40 (0.00s)
✓ Get BB cloud status key no application name pipeline run name longer than 40 truncated with hash (0.00s)
✓ Get BB cloud status key no application name short pipeline run name (0.00s)
✓ Get check name (0.00s)
✓ Get check name application and pipelinerun name (0.00s)
✓ Get check name application no pipelinerun name (0.00s)
✓ Get check name no application name (0.00s)
✓ Get git ops comment prefix (0.00s)
✓ Get git ops comment prefix comment with both default and custom prefix prefers custom (0.00s)
✓ Get git ops comment prefix custom prefix not present in comment returns default prefix (0.00s)
✓ Get git ops comment prefix custom prefix present in comment returns custom prefix (0.00s)
✓ Get git ops comment prefix custom prefix with cancel command (0.00s)
✓ Get git ops comment prefix custom prefix with ok-to-test command (0.00s)
✓ Get git ops comment prefix custom prefix with retest command (0.00s)
✓ Get git ops comment prefix different custom prefix (0.00s)
✓ Get git ops comment prefix empty git ops command prefix returns default prefix (0.00s)
✓ Get git ops comment prefix multiline comment with custom prefix (0.00s)
✓ Get git ops comment prefix multiline comment with default prefix only (0.00s)
✓ Get git ops comment prefix no settings returns default prefix (0.00s)
✓ Get pipeline run and branch name from cancel comment (0.00s)
✓ Get pipeline run and branch name from cancel comment add string after cancel command (0.00s)
✓ Get pipeline run and branch name from cancel comment add string before and after cancel command (0.00s)
✓ Get pipeline run and branch name from cancel comment add string before cancel command (0.00s)
✓ Get pipeline run and branch name from cancel comment cancel a particular pipeline (0.00s)
✓ Get pipeline run and branch name from cancel comment cancel a pipeline on test branch (0.00s)
✓ Get pipeline run and branch name from cancel comment cancel all on test branch (0.00s)
✓ Get pipeline run and branch name from cancel comment cancel all pipeline (0.00s)
✓ Get pipeline run and branch name from cancel comment cancel all with prefix (0.00s)
✓ Get pipeline run and branch name from cancel comment cancel single with branch and prefix (0.00s)
✓ Get pipeline run and branch name from cancel comment cancel single with prefix (0.00s)
✓ Get pipeline run and branch name from cancel comment cancel with branch and prefix (0.00s)
✓ Get pipeline run and branch name from cancel comment different prefix cancel single (0.00s)
✓ Get pipeline run and branch name from cancel comment different word other than branch for cancel command (0.00s)
✓ Get pipeline run and branch name from cancel comment string for cancel command after branch name test (0.00s)
✓ Get pipeline run and branch name from cancel comment string for cancel command before and after branch name test (0.00s)
✓ Get pipeline run and branch name from cancel comment string for cancel command before branch name test (0.00s)
✓ Get pipeline run and branch name from test comment (0.00s)
✓ Get pipeline run and branch name from test comment branch name contains substring tag so not parsed as tag (0.00s)
✓ Get pipeline run and branch name from test comment branch name contains test (0.00s)
✓ Get pipeline run and branch name from test comment different word other than branch for retest command (0.00s)
✓ Get pipeline run and branch name from test comment retest a pipeline with prefix (0.00s)
✓ Get pipeline run and branch name from test comment retest all on test branch (0.00s)
✓ Get pipeline run and branch name from test comment string after retest command (0.00s)
✓ Get pipeline run and branch name from test comment string before and after test command (0.00s)
✓ Get pipeline run and branch name from test comment string before retest command (0.00s)
✓ Get pipeline run and branch name from test comment string for retest command after branch name test (0.00s)
✓ Get pipeline run and branch name from test comment string for test command before and after branch name test (0.00s)
✓ Get pipeline run and branch name from test comment string for test command before branch name test (0.00s)
✓ Get pipeline run and branch name from test comment test a pipeline (0.00s)
✓ Get pipeline run and branch name from test comment test a pipeline on test branch (0.00s)
✓ Get pipeline run and branch name from test comment test a pipeline with key value (0.00s)
✓ Get pipeline run and branch name from test comment test a pipeline with prefix (0.00s)
✓ Get pipeline run and branch name from test comment test a pipeline with prefix and key value (0.00s)
✓ Get pipeline run and branch name from test comment test all (0.00s)
✓ Get pipeline run and branch name from test comment test with key value and branch is not a pipeline name (0.00s)
✓ Get pipeline run and branch name from test comment test with only key value is not a pipeline name (0.00s)
✓ Get pipeline run from cancel comment (0.00s)
✓ Get pipeline run from cancel comment cancel a pipeline (0.00s)
✓ Get pipeline run from cancel comment cancel all (0.00s)
✓ Get pipeline run from cancel comment cancel with key value is not a pipeline name (0.00s)
✓ Get pipeline run from cancel comment string after cancel command (0.00s)
✓ Get pipeline run from cancel comment string before and after cancel command (0.00s)
✓ Get pipeline run from cancel comment string before cancel command (0.00s)
✓ Get pipeline run from comment (0.00s)
✓ Get pipeline run from comment retest a pipeline (0.00s)
✓ Get pipeline run from comment retest no pipelinerun (0.00s)
✓ Get pipeline run from comment string after retest command (0.00s)
✓ Get pipeline run from comment string after test command (0.00s)
✓ Get pipeline run from comment string before and after retest command (0.00s)
✓ Get pipeline run from comment string before and after test command (0.00s)
✓ Get pipeline run from comment string before retest command (0.00s)
✓ Get pipeline run from comment string before test command (0.00s)
✓ Get pipeline run from comment test a pipeline (0.00s)
✓ Get pipeline run from comment test no pipelinerun (0.00s)
✓ Get pipeline run from comment test with key value is not a pipeline name (0.00s)
✓ Is ok to test comment (0.00s)
✓ Is ok to test comment invalid (0.00s)
✓ Is ok to test comment invalid comment (0.00s)
✓ Is ok to test comment valid (0.00s)
✓ Is ok to test comment valid comments (0.00s)
✓ Is ok to test comment valid with some string before (0.00s)
✓ Is ok to test comment valid with some string before and after (0.00s)
✓ Is test retest comment (0.00s)
✓ Is test retest comment invalid (0.00s)
✓ Is test retest comment invalid# 01 (0.00s)
✓ Is test retest comment retest trigger single pr (0.00s)
✓ Is test retest comment test trigger single pr (0.00s)
✓ Is test retest comment test valid with some string before and after (0.00s)
✓ Is test retest comment valid comments (0.00s)
✓ Is test retest comment valid retest (0.00s)
✓ Is test retest comment valid retest with some string before (0.00s)
✓ Is test retest comment valid test (0.00s)
✓ Is test retest comment valid test with some string before (0.00s)
✓ Is test retest comment valid with some string before and after (0.00s)
✓ Skip CI (0.00s)
✓ Skip CI ci skip in middle (0.00s)
✓ Skip CI ci skip lowercase (0.00s)
✓ Skip CI empty commit message (0.00s)
✓ Skip CI multiline with skip ci (0.00s)
✓ Skip CI multiple skip commands (0.00s)
✓ Skip CI no skip command (0.00s)
✓ Skip CI skip ci at beginning (0.00s)
✓ Skip CI skip ci in commit body (0.00s)
✓ Skip CI skip ci lowercase (0.00s)
✓ Skip CI skip ci with extra spaces (0.00s)
✓ Skip CI skip ci with typo (0.00s)
✓ Skip CI skip ci with uppercase (0.00s)
✓ Skip CI skip tkn at end (0.00s)
✓ Skip CI skip tkn lowercase (0.00s)
✓ Skip CI skip without brackets (0.00s)
✓ Skip CI tkn skip lowercase (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/cmd/tknpac/info:
✓ Globbing (0.00s)
✓ Globbing file globbing (0.00s)
✓ Globbing not matched file globbing (0.00s)
✓ Globbing not matched string pattern (0.00s)
✓ Globbing string pattern (0.00s)
✓ Info (0.01s)
✓ Info no repos (0.00s)
✓ Info with github app (0.01s)
✓ Info without github app (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/provider/bitbucketcloud/test:
✓ Setup BB cloud client (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/cmd/tknpac/describe:
✓ Describe (0.03s)
✓ Describe collect failures (0.00s)
✓ Describe multiple live runs (0.00s)
✓ Describe multiple pipelineruns (0.00s)
✓ Describe one live run (0.00s)
✓ Describe one pipelinerun and optnamespace (0.00s)
✓ Describe repository event list failure is non-blocking (0.00s)
✓ Describe repository events (0.00s)
✓ Describe repository multiple events (0.01s)
✓ Describe target a pipelinerun (0.00s)
✓ Describe two pipelineruns (0.00s)
✓ Describe use real time (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/gitclient:
✓ Setup authenticated client comment event types (0.02s)
✓ Setup authenticated client comment event types cancel command on git hub (0.00s)
✓ Setup authenticated client comment event types ok-to-test command on git hub (0.00s)
✓ Setup authenticated client comment event types retest command on git hub (0.00s)
✓ Setup authenticated client comment event types retest command on git lab (0.00s)
✓ Setup authenticated client comment event types test command on git hub (0.00s)
✓ Setup authenticated client comment event types test command on gitea (0.00s)
✓ Setup authenticated client event types (0.01s)
✓ Setup authenticated client event types check run event (0.00s)
✓ Setup authenticated client event types check suite event (0.00s)
✓ Setup authenticated client event types incoming webhook event (skips validation) (0.00s)
✓ Setup authenticated client event types issue comment event (retest command) (0.00s)
✓ Setup authenticated client event types pull request event with git hub app (0.00s)
✓ Setup authenticated client event types pull request event without git hub app (0.00s)
✓ Setup authenticated client event types push event with git hub app (0.00s)
✓ Setup authenticated client event types push event without git hub app (0.00s)
✓ Setup authenticated client git hub app (0.01s)
✓ Setup authenticated client git hub app git hub app with incoming event skips validation (0.00s)
✓ Setup authenticated client git hub app git hub app with pull request event (0.00s)
✓ Setup authenticated client git hub app git hub app with push event (0.00s)
✓ Setup authenticated client git hub app ignores inherited provider secret (0.00s)
✓ Setup authenticated client global repo auto fetch (0.00s)
✓ Setup authenticated client global repo auto fetch global repo nil and does not exist in API continues without error (0.00s)
✓ Setup authenticated client global repo auto fetch global repo nil and exists in API is fetched and merged (0.01s)
✓ Setup authenticated client global repo auto fetch global repo provided skips API fetch (0.01s)
✓ Setup authenticated client global repo merges settings (0.00s)
✓ Setup authenticated client idempotent (0.01s)
✓ Setup authenticated client non git hub app (0.00s)
✓ Setup authenticated client non git hub app non-git hub app with git provider succeeds (0.00s)
✓ Setup authenticated client non git hub app non-git hub app without git provider fails (0.00s)
✓ Setup authenticated client provider specific events (0.02s)
✓ Setup authenticated client provider specific events bitbucket cloud PR event (0.00s)
✓ Setup authenticated client provider specific events bitbucket cloud push event (0.00s)
✓ Setup authenticated client provider specific events bitbucket data center PR opened (0.00s)
✓ Setup authenticated client provider specific events bitbucket data center push (0.00s)
✓ Setup authenticated client provider specific events git lab merge request event (0.00s)
✓ Setup authenticated client provider specific events git lab push event (0.00s)
✓ Setup authenticated client provider specific events git lab tag event (0.00s)
✓ Setup authenticated client provider specific events gitea pull request event (0.00s)
✓ Setup authenticated client provider specific events gitea push event (0.00s)
✓ Setup authenticated client refuses inherited secret with own provider URL (0.01s)
✓ Setup authenticated client refuses inherited secret with own provider URL another path on the same shared host is refused (0.00s)
✓ Setup authenticated client refuses inherited secret with own provider URL downgrading the inherited credential to cleartext is refused (0.00s)
✓ Setup authenticated client refuses inherited secret with own provider URL inheriting the global secret for the same host is allowed (0.00s)
✓ Setup authenticated client refuses inherited secret with own provider URL inheriting the global secret while pointing elsewhere is refused (0.00s)
✓ Setup authenticated client refuses inherited secret with own provider URL inheriting the global secret without an own url is allowed (0.00s)
✓ Setup authenticated client refuses inherited secret with own provider URL pointing elsewhere with an own secret is allowed (0.00s)
✓ Setup authenticated client refuses inherited secret with own provider URL the api entry point of the same deployment is allowed (0.00s)
✓ Setup authenticated client repository config (0.00s)
✓ Setup authenticated client repository config repo with git provider succeeds (0.01s)
✓ Setup authenticated client repository config repo without git provider fails (0.01s)
✓ Setup authenticated client webhook validation (0.00s)
✓ Setup authenticated client webhook validation incoming webhook skips validation (0.00s)
✓ Setup authenticated client webhook validation valid webhook secret (0.00s)
✓ Setup authenticated client webhook validation webhook secret with newline triggers warning (0.01s)
✓ Setup authenticated client webhook validation webhook secret with space triggers warning (0.01s)

github.com/openshift-pipelines/pipelines-as-code/pkg/provider/bitbucketcloud/types:

github.com/openshift-pipelines/pipelines-as-code/pkg/provider/bitbucketdatacenter/test:
✓ Setup BB data center client (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/provider/bitbucketdatacenter/types:

github.com/openshift-pipelines/pipelines-as-code/pkg/provider/bitbucketdatacenter:
✓ Check valid payload (0.00s)
✓ Check valid payload empty actor name (0.00s)
✓ Check valid payload empty from ref display ID (0.00s)
✓ Check valid payload empty from ref repository clone links (0.00s)
✓ Check valid payload empty from ref.project key (0.00s)
✓ Check valid payload empty from ref.repository name (0.00s)
✓ Check valid payload empty to ref display ID (0.00s)
✓ Check valid payload empty to ref repository clone links (0.00s)
✓ Check valid payload empty to ref.project.key (0.00s)
✓ Check valid payload empty to ref.repository name (0.00s)
✓ Check valid payload missing from ref repository links (0.00s)
✓ Check valid payload missing from ref.latest commit (0.00s)
✓ Check valid payload missing from ref.project (0.00s)
✓ Check valid payload missing repository links (0.00s)
✓ Check valid payload missing to ref.latest commit (0.00s)
✓ Check valid payload missing to ref.project (0.00s)
✓ Check valid payload zero actor ID (0.00s)
✓ Check valid payload zero pull request ID (0.00s)
✓ Create status (0.01s)
✓ Create status bad null client (0.00s)
✓ Create status good completed (0.00s)
✓ Create status good completed with comment (0.00s)
✓ Create status good details url (0.00s)
✓ Create status good failed (0.00s)
✓ Create status good neutral (0.00s)
✓ Create status good pending (0.00s)
✓ Create status good pending# 01 (0.00s)
✓ Create status good skipped (0.00s)
✓ Create status good success (0.00s)
✓ Get commit info (0.00s)
✓ Get commit info test valid commit basic fields (0.00s)
✓ Get commit info test valid commit with full info (0.00s)
✓ Get config (0.00s)
✓ Get file inside repo (0.00s)
✓ Get file inside repo bad get files api error (0.00s)
✓ Get file inside repo get file inside default branch (0.00s)
✓ Get file inside repo get file inside repo (0.00s)
✓ Get files (0.01s)
✓ Get files bad merge commit push event api error (0.00s)
✓ Get files bad pull request event (0.00s)
✓ Get files bad push event (0.00s)
✓ Get files good merge commit push event (0.00s)
✓ Get files good pull request event (0.00s)
✓ Get files good push event (0.00s)
✓ Get merge commit changes (0.01s)
✓ Get merge commit changes bad api returns error status (0.00s)
✓ Get merge commit changes bad api returns invalid json (0.00s)
✓ Get merge commit changes good change with src path for rename (0.00s)
✓ Get merge commit changes good empty changes (0.00s)
✓ Get merge commit changes good pagination sets next page (0.00s)
✓ Get merge commit changes good single page of changes (0.00s)
✓ Get tekton dir (0.01s)
✓ Get tekton dir bad badly formatted yaml (0.00s)
✓ Get tekton dir bad get dir api error (0.00s)
✓ Get tekton dir bad get files api error (0.00s)
✓ Get tekton dir bad no yaml files in there (0.00s)
✓ Get tekton dir good get tekton directory (0.01s)
✓ Is allowed (0.05s)
✓ Is allowed allowed from a comment owner (0.01s)
✓ Is allowed allowed from owner file who is not part of workspace (0.01s)
✓ Is allowed allowed ok-to-test on new line (0.01s)
✓ Is allowed allowed user is in project group (0.00s)
✓ Is allowed allowed user is in repo group (0.00s)
✓ Is allowed allowed user is owner (0.00s)
✓ Is allowed disallowed from an ownerfile that has nothing to do with sender (0.00s)
✓ Is allowed disallowed not a valid ok-to-test comment (0.00s)
✓ Is allowed disallowed same nickname different account id (0.00s)
✓ Is allowed disallowed user not in any group members (0.00s)
✓ Parse payload (0.01s)
✓ Parse payload bad bad json (0.00s)
✓ Parse payload bad changes are empty in push (0.00s)
✓ Parse payload bad commits are empty in push (0.00s)
✓ Parse payload bad invalid event type (0.00s)
✓ Parse payload bad url (0.00s)
✓ Parse payload branch deleted with zero hash (0.00s)
✓ Parse payload good comment cancel a pr (0.00s)
✓ Parse payload good comment cancel all (0.00s)
✓ Parse payload good comment non-gitops (0.00s)
✓ Parse payload good comment ok-to-test (0.00s)
✓ Parse payload good comment retest a pr (0.00s)
✓ Parse payload good comment test (0.00s)
✓ Parse payload good comment test single (0.00s)
✓ Parse payload good pull request (0.00s)
✓ Parse payload good push (0.00s)
✓ Provider detect (0.00s)
✓ Provider detect cancel a pipelinerun comment (0.00s)
✓ Provider detect cancel comment (0.00s)
✓ Provider detect comment on closed pull request (0.00s)
✓ Provider detect invalid bitbucket data center event (0.00s)
✓ Provider detect not a bitbucket data center event (0.00s)
✓ Provider detect ok-to-test comment (0.00s)
✓ Provider detect pull request event (0.00s)
✓ Provider detect push event (0.00s)
✓ Provider detect random comment (0.00s)
✓ Provider detect retest comment (0.00s)
✓ Provider detect updated pull request event (0.00s)
✓ Remove last segment (0.00s)
✓ Remove last segment empty path (0.00s)
✓ Remove last segment empty string (0.00s)
✓ Remove last segment https URL (0.00s)
✓ Remove last segment invalid URL (0.00s)
✓ Remove last segment just root path (0.00s)
✓ Remove last segment multiple segments path (0.00s)
✓ Remove last segment multiple segments path with trailing slash (0.00s)
✓ Remove last segment no host, just path (0.00s)
✓ Remove last segment path with double slashes (0.00s)
✓ Remove last segment path with fragment (0.00s)
✓ Remove last segment path with query parameters (0.00s)
✓ Remove last segment path with query parameters and fragment (0.00s)
✓ Remove last segment root path (0.00s)
✓ Remove last segment single segment path (0.00s)
✓ Remove last segment single segment path with trailing slash (0.00s)
✓ Set client (0.01s)
✓ Set client bad invalid user at rest after whomi (0.00s)
✓ Set client bad invalid user in whomi (0.00s)
✓ Set client bad no secret (0.00s)
✓ Set client bad no token (0.00s)
✓ Set client bad no url (0.00s)
✓ Set client good url append rest (0.00s)
✓ Set client internal error at users rest (0.00s)
✓ Set client internal error at whoami (0.00s)
✓ Set client not found at whoami (0.00s)
✓ Set client not found at whoami with error message (0.00s)
✓ Set client transport error at whoami (0.00s)
✓ Validate (0.00s)
✓ Validate bad signature (0.00s)
✓ Validate good SHA1 signature (0.00s)
✓ Validate good SHA256 signature (0.00s)
✓ Validate secret missing (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/provider/gitea/forgejostructs:

github.com/openshift-pipelines/pipelines-as-code/pkg/provider/gitea/test:

github.com/openshift-pipelines/pipelines-as-code/pkg/hub:
✓ Artifact hub client get latest version (0.00s)
✓ Artifact hub client get latest version empty manifest raw field (0.00s)
✓ Artifact hub client get latest version get latest pipeline version with default catalog (0.00s)
✓ Artifact hub client get latest version get latest task version with default catalog (0.00s)
✓ Artifact hub client get latest version get latest version with custom catalog (0.00s)
✓ Artifact hub client get latest version malformed JSON response (0.00s)
✓ Artifact hub client get latest version network error (0.00s)
✓ Artifact hub client get resource (0.00s)
✓ Artifact hub client get resource HTTP client error (0.00s)
✓ Artifact hub client get resource empty manifest in response (0.00s)
✓ Artifact hub client get resource get latest version pipeline (0.00s)
✓ Artifact hub client get resource get latest version task (0.00s)
✓ Artifact hub client get resource get specific version pipeline (0.00s)
✓ Artifact hub client get resource get specific version task (0.00s)
✓ Artifact hub client get resource invalid JSON response (0.00s)
✓ Artifact hub client get resource no config provided (HTTP error) (0.00s)
✓ Artifact hub client get resource resource with multiple colons in version (0.00s)
✓ Artifact hub client get specific version (0.00s)
✓ Artifact hub client get specific version empty manifest raw field (0.00s)
✓ Artifact hub client get specific version get specific pipeline version (0.00s)
✓ Artifact hub client get specific version get specific task version (0.00s)
✓ Artifact hub client get specific version get specific version with custom catalog (0.00s)
✓ Artifact hub client get specific version malformed JSON response (0.00s)
✓ Artifact hub client get specific version resource with multiple colons - use last part as version (0.00s)
✓ Artifact hub client get specific version version not found (0.00s)
✓ Get task (0.01s)
✓ Get task get-latest-pipeline-not-there (0.00s)
✓ Get task get-latest-task-not-there (0.00s)
✓ Get task get-pipeline-latest (0.00s)
✓ Get task get-pipeline-latest-custom (0.00s)
✓ Get task get-pipeline-specific (0.00s)
✓ Get task get-specific-hub-not-there (0.00s)
✓ Get task get-specific-hub-not-there-with-latest (0.00s)
✓ Get task get-specific-pipeline-not-there (0.00s)
✓ Get task get-specific-task-not-there (0.00s)
✓ Get task get-task-latest (0.00s)
✓ Get task get-task-latest-artifacthub (0.00s)
✓ Get task get-task-latest-custom (0.00s)
✓ Get task get-task-specific (0.00s)
✓ Get task get-task-specific-version-artifacthub (0.00s)
✓ Get type by kind (0.00s)
✓ Get type by kind pipeline with custom catalog (0.00s)
✓ Get type by kind pipeline with default catalog (0.00s)
✓ Get type by kind pipeline with empty catalog (0.00s)
✓ Get type by kind task with custom catalog (0.00s)
✓ Get type by kind task with default catalog (0.00s)
✓ Get type by kind task with empty catalog (0.00s)
✓ Get type by kind unknown kind with custom catalog (0.00s)
✓ Get type by kind unknown kind with default catalog (0.00s)
✓ New artifact hub client (0.00s)
✓ New artifact hub client URL handling (0.00s)
✓ New artifact hub client URL handling URL with api v 1 and trailing slash (0.00s)
✓ New artifact hub client URL handling URL with path and trailing slash (0.00s)
✓ New artifact hub client URL handling URL with trailing slash (0.00s)
✓ New artifact hub client URL with api v 1 suffix (0.00s)
✓ New artifact hub client URL without api v 1 suffix (0.00s)
✓ New client (0.00s)
✓ New client artifacthub client (0.00s)
✓ New client default to artifacthub client (0.00s)
✓ New client error on invalid catalog name (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/llm/context:
✓ Build CEL context (0.01s)
✓ Build CEL context all basic event fields (0.01s)
✓ Build CEL context conditional fields (0.00s)
✓ Build CEL context conditional fields without pull request fields (0.00s)
✓ Build CEL context conditional fields without trigger comment (0.00s)
✓ Build CEL context excluded fields (0.00s)
✓ Build CEL context incoming webhook target pipelinerun (0.00s)
✓ Build CEL context nil event (0.00s)
✓ Build CEL context pull request specific fields (0.00s)
✓ Build CEL context push event without PR fields (0.00s)
✓ Build CEL context trigger comment field (0.00s)
✓ Build PR content (0.00s)
✓ Build PR content nil event (0.00s)
✓ Build PR content no pull request (0.00s)
✓ Build PR content with pull request (0.00s)
✓ Build basic pipeline context (0.00s)
✓ Build basic pipeline context no conditions or timestamps (0.00s)
✓ Build basic pipeline context with condition and timestamps (0.00s)
✓ Build commit content (0.00s)
✓ Build commit content basic commit fields without provider (0.00s)
✓ Build commit content nil event (0.00s)
✓ Build commit content verify emails are always excluded even when present (0.00s)
✓ Build commit content when full message equals title, don't duplicate (0.00s)
✓ Build commit content with author date and committer date (0.00s)
✓ Build commit content with full commit information after get commit info (0.00s)
✓ Build container logs (0.00s)
✓ Build container logs no failed tasks returns nil (0.00s)
✓ Build context (0.00s)
✓ Build context full config (0.00s)
✓ Build context nil config returns basic pipeline context only (0.00s)
✓ Build context with PR content (0.00s)
✓ Build error content (0.00s)
✓ Build error content condition failed without task failures (0.00s)
✓ Build error content condition not failed (0.00s)
✓ Build error content no conditions (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/kubeinteraction/status:
✓ Collect failed tasks log snippet (0.00s)
✓ Collect failed tasks log snippet UTF8 safe truncation (0.00s)
✓ Collect failed tasks log snippet UTF8 safe truncation long ascii text over limit (0.00s)
✓ Collect failed tasks log snippet UTF8 safe truncation mixed utf 8 at boundary (0.00s)
✓ Collect failed tasks log snippet UTF8 safe truncation short ascii text (0.00s)
✓ Collect failed tasks log snippet UTF8 safe truncation utf 8 text over limit (0.00s)
✓ Collect failed tasks log snippet UTF8 safe truncation utf 8 text under limit (0.00s)
✓ Collect failed tasks log snippet failure pod output (0.00s)
✓ Collect failed tasks log snippet no failures (0.00s)
✓ Collect failed tasks log snippet waiting reasons (0.00s)
✓ Collect failed tasks log snippet waiting reasons create container config error surfaces step waiting message (0.00s)
✓ Collect failed tasks log snippet waiting reasons no steps falls back to condition message (0.00s)
✓ Get status from task status or from asking (0.00s)
✓ Get status from task status or from asking error get status from child references post tektoncd pipelines 0.44 (0.00s)
✓ Get status from task status or from asking get status from child references post tektoncd pipelines 0.44 (0.00s)
✓ Get status from task status or from asking get status with display name (0.00s)
✓ Waiting message (0.00s)
✓ Waiting message no steps (0.00s)
✓ Waiting message skips non waiting steps until waiting one (0.00s)
✓ Waiting message step not waiting (0.00s)
✓ Waiting message waiting with empty message (0.00s)
✓ Waiting message waiting with message and no reason (0.00s)
✓ Waiting message waiting with reason and message (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/kubeinteraction:
✓ Add labels and annotations (0.00s)
✓ Add labels and annotations span context (0.00s)
✓ Add labels and annotations test label and annotation added to pr (0.00s)
✓ Add results annotation (0.00s)
✓ Add results annotation empty event (0.00s)
✓ Add results annotation valid event (0.00s)
✓ Cleanup pipelines (0.01s)
✓ Cleanup pipelines cleanup (0.00s)
✓ Cleanup pipelines cleanup the secrets related to pipelinerun but not the other secret (0.00s)
✓ Cleanup pipelines cleanup with secrets (0.00s)
✓ Cleanup pipelines cleanup-skip-pending (0.00s)
✓ Cleanup pipelines cleanup-skip-running (0.00s)
✓ Delete secret (0.00s)
✓ Delete secret auth basic secret not there (0.00s)
✓ Delete secret auth basic secret there (0.00s)
✓ New kubernetes interaction (0.00s)
✓ Poll immediate with context (0.00s)
✓ Poll immediate with context test false (0.00s)
✓ Poll immediate with context test true (0.00s)
✓ Poll immediate with context timeout (0.00s)
✓ Update secret with owner ref (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/customparams:
✓ Apply incoming params (0.00s)
✓ Apply incoming params apply params (0.00s)
✓ Apply incoming params apply params with same key (0.00s)
✓ Apply incoming params cannot convert incoming param (0.00s)
✓ Apply incoming params no request in event (0.00s)
✓ Make standard params from event (0.00s)
✓ Make standard params from event basic event test (0.00s)
✓ Make standard params from event event with different clone URL (0.00s)
✓ Make standard params from event git tag push test event (0.00s)
✓ Process templates (0.03s)
✓ Process templates params added from incoming (0.00s)
✓ Process templates params added from incoming webhook override (0.00s)
✓ Process templates params bad filter skipped (0.00s)
✓ Process templates params bad payload skipped (0.00s)
✓ Process templates params basic (0.00s)
✓ Process templates params changed files (0.01s)
✓ Process templates params fallback to stdparams (0.00s)
✓ Process templates params filter (0.01s)
✓ Process templates params filter on body (0.00s)
✓ Process templates params filter on body with bad filter (0.00s)
✓ Process templates params from secret (0.00s)
✓ Process templates params from unknown secret (0.00s)
✓ Process templates params no filter match (0.00s)
✓ Process templates params not a condition (0.00s)
✓ Process templates params override params via gitops arguments (0.00s)
✓ Process templates params override params with no value via gitops arguments (0.00s)
✓ Process templates params pick value when value and secret set (0.00s)
✓ Process templates params skip with no name (0.00s)
✓ Process templates params skip with no value (0.00s)
✓ Process templates params two filters same name, match first (0.00s)
✓ Process templates params use last params when two values of the same name (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/cmd/tknpac/resolve:
✓ Command filename set properly (0.00s)
✓ Detect webhook secret (0.00s)
✓ Detect webhook secret detects webhook secret no quote (0.00s)
✓ Detect webhook secret detects webhook secret single quote (0.00s)
✓ Detect webhook secret not webhook secret detected (0.00s)
✓ Make git auth secret (0.02s)
✓ Make git auth secret ask for provider token (0.00s)
✓ Make git auth secret do not care about token stuff (0.00s)
✓ Make git auth secret falls back to environment token when kubernetes options are unavailable (0.00s)
✓ Make git auth secret falls back to environment token when listing secrets fails (0.00s)
✓ Make git auth secret provided a token on flag (0.00s)
✓ Make git auth secret provided a token via env (0.00s)
✓ Make git auth secret provided a token via existing secret (0.00s)
✓ Resolve filenames (0.03s)
✓ Resolve filenames no pipelinerun (0.00s)
✓ Resolve filenames resolve templates no prefix (0.02s)
✓ Resolve filenames resolve templates no prefix as v 1beta 1 (0.00s)
✓ Resolve filenames resolve templates with prefix (0.00s)
✓ Split args in map (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/adapter:
✓ Apply incoming params (0.00s)
✓ Apply incoming params all params allowed (0.00s)
✓ Apply incoming params invalid content type (0.00s)
✓ Apply incoming params invalid payload format (0.00s)
✓ Apply incoming params param not allowed (0.00s)
✓ Compare secret (0.00s)
✓ Compare secret bad secret comparison (0.00s)
✓ Compare secret good secret comparison (0.00s)
✓ Detect incoming body params are parsed (0.00s)
✓ Detect incoming handles git hub app installation (0.01s)
✓ Detect incoming handles git hub app installation installed (0.01s)
✓ Detect incoming handles git hub app installation zero installation id (0.00s)
✓ Detect incoming legacy warning (0.00s)
✓ Detect incoming legacy warning legacy mode - params in URL (0.00s)
✓ Detect incoming legacy warning new mode - params in JSON body (0.00s)
✓ Detect incoming rejects unconfigured git hub host (0.00s)
✓ Detect incoming returns repository list errors (0.00s)
✓ Find matching repository (0.00s)
✓ Find matching repository find matching repository (0.00s)
✓ Find matching repository no matching repository (0.00s)
✓ Get commit info error (0.00s)
✓ Get commit info error get commit info fails with custom message (0.00s)
✓ Get commit info error get commit info fails with default message (0.00s)
✓ Get commit info error get commit info succeeds (0.00s)
✓ Get commit info sets has skip command (0.00s)
✓ Get commit info sets has skip command commit with [ci skip] should set has skip command (0.00s)
✓ Get commit info sets has skip command commit with [skip ci] should set has skip command (0.00s)
✓ Get commit info sets has skip command commit with [skip tkn] should set has skip command (0.00s)
✓ Get commit info sets has skip command commit with [tkn skip] should set has skip command (0.00s)
✓ Get commit info sets has skip command commit with uppercase should NOT set has skip command (case-sensitive) (0.00s)
✓ Get commit info sets has skip command commit without skip command should NOT set has skip command (0.00s)
✓ Handle event (0.00s)
✓ Handle event detected global repository (0.00s)
✓ Handle event get http call (0.00s)
✓ Handle event git provider not detected (0.00s)
✓ Handle event invalid json body (0.00s)
✓ Handle event invalid json body only when payload has been set (0.00s)
✓ Handle event skip event (0.00s)
✓ Handle event valid event (0.00s)
✓ Incoming git hub app scopes token through client setup (0.01s)
✓ Is tls enabled (0.00s)
✓ Is tls enabled found secret (0.00s)
✓ Is tls enabled missing key (0.00s)
✓ Is tls enabled no secret (0.00s)
✓ Listener detect incoming (0.01s)
✓ Listener detect incoming bad empty secret (0.00s)
✓ Listener detect incoming bad incoming with no accept (0.00s)
✓ Listener detect incoming bad multiple repos with name (0.00s)
✓ Listener detect incoming bad no branch in query (0.00s)
✓ Listener detect incoming bad no incomings (0.00s)
✓ Listener detect incoming bad no matched branch in incoming (0.00s)
✓ Listener detect incoming bad no matched repo (0.00s)
✓ Listener detect incoming bad no matched secret (0.00s)
✓ Listener detect incoming bad no matched secret# 01 (0.00s)
✓ Listener detect incoming bad no pr in query (0.00s)
✓ Listener detect incoming bad no repository in query (0.00s)
✓ Listener detect incoming bad no repository in query# 01 (0.00s)
✓ Listener detect incoming bad no secret in query (0.00s)
✓ Listener detect incoming bad noincomingurl (0.00s)
✓ Listener detect incoming bad not git provider type provided (0.00s)
✓ Listener detect incoming bad passed params is not in spec (0.00s)
✓ Listener detect incoming good incoming (0.00s)
✓ Listener detect incoming good incoming with body (0.00s)
✓ Listener detect incoming good incoming with body partial params (0.00s)
✓ Listener detect incoming good incoming with default secret key (0.00s)
✓ Listener detect incoming good incoming with namespace (0.00s)
✓ Listener detect incoming invalid incoming body (0.00s)
✓ Listener detect incoming no git provider (0.00s)
✓ Listener process incoming (0.00s)
✓ Listener process incoming error bad url (0.00s)
✓ Listener process incoming error not enough path in url (0.00s)
✓ Listener process incoming error unknown provider (0.00s)
✓ Listener process incoming no git provider is provided (0.00s)
✓ Listener process incoming no git provider type is provided (0.00s)
✓ Listener process incoming process bitbucketcloud (0.00s)
✓ Listener process incoming process bitbucketdatacenter (0.00s)
✓ Listener process incoming process forgejo (0.00s)
✓ Listener process incoming process gitea (0.00s)
✓ Listener process incoming process github (0.00s)
✓ Listener process incoming process gitlab (0.00s)
✓ Listener process res (0.00s)
✓ Listener process res process event with provider (0.00s)
✓ Listener process res process event without provider (0.00s)
✓ Parse incoming payload (0.00s)
✓ Parse incoming payload fallback from invalid query params to JSON body (0.00s)
✓ Parse incoming payload legacy mode with valid query params (0.00s)
✓ Parse incoming payload malformed JSON error (0.00s)
✓ Parse incoming payload missing required fields in JSON (0.00s)
✓ Parse incoming payload new mode with valid JSON body (0.00s)
✓ Process event branch creation (0.00s)
✓ Process event branch creation commit lookup failure aborts the event (0.00s)
✓ Process event branch creation skip command in the resolved message skips the run (0.00s)
✓ Process event skip CI integration (0.00s)
✓ Process event skip CI integration PR event with has skip command set (0.00s)
✓ Process event skip CI integration PR event without skip command (0.00s)
✓ Process event skip CI integration comment event should NOT skip (0.00s)
✓ Process event skip CI integration push event with skip-c i in commit message (0.00s)
✓ Process event skip CI integration push event without skip command (0.00s)
✓ Process event skip CI push event (0.01s)
✓ Process event skip CI push event push with [ci skip] should skip (0.00s)
✓ Process event skip CI push event push with [skip ci] should skip (0.00s)
✓ Process event skip CI push event push with [skip tkn] should skip (0.00s)
✓ Process event skip CI push event push with [tkn skip] should skip (0.00s)
✓ Process event skip CI push event push with uppercase SKIP CI should NOT skip (case-sensitive) (0.00s)
✓ Process event skip CI push event push without skip command should NOT skip (0.00s)
✓ Process event span creates root without incoming context (0.00s)
✓ Process event span honors incoming trace context (0.00s)
✓ Set VCS span attributes (0.00s)
✓ Set VCS span attributes event type only (0.00s)
✓ Set VCS span attributes full event (0.00s)
✓ Set VCS span attributes url without sha (0.00s)
✓ Setup client git hub app vs other (0.00s)
✓ Setup client git hub app vs other git hub app should use controller secret (0.00s)
✓ Setup client git hub app vs other non-git hub app requires git provider (0.00s)
✓ Setup client git hub app vs other non-git hub app with git provider succeeds (0.00s)
✓ Should skip push event (0.00s)
✓ Should skip push event non-push event makes no API call (0.00s)
✓ Should skip push event ordinary push with empty payload metadata makes no API call (0.00s)
✓ Should skip push event ordinary push with skip command uses payload metadata (0.00s)
✓ Should skip push event ordinary push without skip command makes no API call (0.00s)
✓ Should skip push event push with missing metadata and no matched repository makes no API call (0.00s)
✓ Should skip push event push with missing metadata propagates lookup failure (0.00s)
✓ Should skip push event push with missing metadata resolves skip command from full message (0.00s)
✓ Start graceful shutdown (0.10s)
✓ Which provider (0.00s)
✓ Which provider github event (0.00s)
✓ Which provider some random event (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/matcher:
✓ Branch match (0.00s)
✓ Branch match base branch refs head (0.00s)
✓ Branch match base branch refs head and prun branch refs tags (0.00s)
✓ Branch match base branch refs tags (0.00s)
✓ Branch match base branch refs tags and prun branch refs head (0.00s)
✓ Branch match base value of path is same (0.00s)
✓ Branch match base value of path is same in both (0.00s)
✓ Branch match base value of path is same opposite (0.00s)
✓ Branch match both names (0.00s)
✓ Branch match both refs heads (0.00s)
✓ Branch match both refs tags (0.00s)
✓ Branch match different names (0.00s)
✓ Branch match different refs heads (0.00s)
✓ Branch match different refs tags (0.00s)
✓ Branch match prun branch refs head (0.00s)
✓ Branch match prun branch refs tags (0.00s)
✓ Build available matching annotation err (0.00s)
✓ Build available matching annotation err test with one pipeline run and one annotation (0.00s)
✓ Filter successful templates (0.00s)
✓ Filter successful templates all templates filtered results in empty list (0.00s)
✓ Filter successful templates different SHA does not find existing runs (0.00s)
✓ Filter successful templates different event type does not filter anything (0.00s)
✓ Filter successful templates empty SHA does not filter anything (0.00s)
✓ Filter successful templates fallback to commit statuses (0.00s)
✓ Filter successful templates fallback to commit statuses BB cloud key without prefix matched via get BB cloud status key (0.00s)
✓ Filter successful templates fallback to commit statuses BB cloud truncated key matched via get BB cloud status key (0.00s)
✓ Filter successful templates fallback to commit statuses fallback filters successful templates from commit statuses (0.00s)
✓ Filter successful templates fallback to commit statuses fallback ignores statuses with different app name prefix (0.00s)
✓ Filter successful templates fallback to commit statuses fallback with all successful statuses filters all (0.00s)
✓ Filter successful templates fallback to commit statuses nil pac uses default application name for status matching (0.00s)
✓ Filter successful templates fallback to commit statuses no commit statuses re-runs all (0.00s)
✓ Filter successful templates fallback to commit statuses non BB cloud provider skips get BB cloud status key fallback (0.00s)
✓ Filter successful templates ok-to-test command filters templates with successful runs (0.00s)
✓ Filter successful templates retest command filters templates with successful runs (0.00s)
✓ Filter successful templates templates without original PR name identification are ignored (0.00s)
✓ Get annotation values (0.00s)
✓ Get annotation values get-annotation-bad-syntax (0.00s)
✓ Get annotation values get-annotation-error-empty (0.00s)
✓ Get annotation values get-annotation-multiple-string-bad-syntax (0.00s)
✓ Get annotation values get-annotation-multiples (0.00s)
✓ Get annotation values get-annotation-simple (0.00s)
✓ Get annotation values get-annotation-string (0.00s)
✓ Get annotation values get-annotation-string-html-encoded-comma (0.00s)
✓ Get annotation values get-annotation-string-html-encoded-comma-list (0.00s)
✓ Get name (0.00s)
✓ Get name test with generate name (0.00s)
✓ Get name test with generate name and name (0.00s)
✓ Get name test with name (0.00s)
✓ Get pipeline from annotation name (0.01s)
✓ Get pipeline from annotation name bad could not get remote (0.00s)
✓ Get pipeline from annotation name bad error getting pipeline (0.00s)
✓ Get pipeline from annotation name bad not a pipeline (0.00s)
✓ Get pipeline from annotation name bad not found (0.00s)
✓ Get pipeline from annotation name good fetching from remote http (0.00s)
✓ Get pipeline from annotation name good fetching with bundle (0.00s)
✓ Get pipeline from annotation name test-annotations-unknown-hub (0.00s)
✓ Get pipeline from annotation name test-get-from-artifacthub-custom-hub (0.00s)
✓ Get pipeline from annotation name test-get-from-artifacthub-latest (0.00s)
✓ Get pipeline from annotation name test-get-from-artifacthub-specific-version (0.00s)
✓ Get pipeline from annotation name test-get-from-custom-hub (0.00s)
✓ Get pipeline from annotation name test-get-from-hub-latest (0.00s)
✓ Get pipeline from annotation name test-get-from-hub-specific-version (0.00s)
✓ Get repo by CR (0.00s)
✓ Get repo by CR glob-branch (0.00s)
✓ Get repo by CR straightforward-branch (0.00s)
✓ Get repo by CR test-match (0.00s)
✓ Get repo by CR test-match-url-slash-at-the-end (0.00s)
✓ Get repo by CR test-multiple-match-get-oldest (0.00s)
✓ Get repo by CR test-nomatch-url (0.00s)
✓ Get repo by name with lister (0.00s)
✓ Get repo by name with lister get by name with lister - conflict without namespace (0.00s)
✓ Get repo by name with lister get by name with lister - found in specific namespace (0.00s)
✓ Get repo by name with lister get by name with lister - not found (0.00s)
✓ Get repo by name with lister get by name with lister - unique name without namespace (0.00s)
✓ Get repo by name with lister get by name without lister - found via API (0.00s)
✓ Get repo by name with lister get by name without lister - uses API with field selector (0.00s)
✓ Get target branch (0.00s)
✓ Get target branch test empty array on event (0.00s)
✓ Get target branch test empty array on target branch (0.00s)
✓ Get target branch test with incoming event (0.00s)
✓ Get target branch test with no match (0.00s)
✓ Get target branch test with pull request event (0.00s)
✓ Get target branch test with pull request event# 01 (0.00s)
✓ Get task from annotation name (0.01s)
✓ Get task from annotation name bad not a tasl (0.00s)
✓ Get task from annotation name test-annotations-error-remote-http-not-k 8 (0.00s)
✓ Get task from annotation name test-annotations-inside-repo (0.00s)
✓ Get task from annotation name test-annotations-remote-http (0.01s)
✓ Get task from annotation name test-annotations-remote-https (0.00s)
✓ Get task from annotation name test-annotations-remote-inside-file-not-found (0.00s)
✓ Get task from annotation name test-annotations-remote-no-event-not-found-no-error (0.00s)
✓ Get task from annotation name test-annotations-unknown-hub (0.00s)
✓ Get task from annotation name test-bad-coming-from-provider (0.00s)
✓ Get task from annotation name test-get-from-artifacthub-custom-hub (0.00s)
✓ Get task from annotation name test-get-from-artifacthub-latest (0.00s)
✓ Get task from annotation name test-get-from-artifacthub-specific-version (0.00s)
✓ Get task from annotation name test-get-from-custom-hub (0.00s)
✓ Get task from annotation name test-get-from-hub-latest (0.00s)
✓ Get task from annotation name test-get-from-hub-specific-version (0.00s)
✓ Get task from annotation name test-good-coming-from-provider (0.00s)
✓ Get task from local FS (0.00s)
✓ Grab pipeline from annotation (0.00s)
✓ Grab pipeline from annotation multiple pipelines with one annotation (0.00s)
✓ Grab pipeline from annotation sing pipeline and a wrong key (0.00s)
✓ Grab pipeline from annotation single pipeline (0.00s)
✓ Grab pipeline from annotation single pipeline with only wrong key (0.00s)
✓ Grab pipeline from annotation test-annotations-remote-http-bad-annotation (0.00s)
✓ Grab tasks from annotation (0.00s)
✓ Grab tasks from annotation multiple tasks (0.00s)
✓ Grab tasks from annotation multiple tasks with one annotation (0.00s)
✓ Grab tasks from annotation multiple tasks with only orders (0.00s)
✓ Grab tasks from annotation multiple tasks with random order (0.00s)
✓ Grab tasks from annotation single task (0.00s)
✓ Grab tasks from annotation test-annotations-remote-http-bad-annotation (0.00s)
✓ Grab tasks from annotation wrong key (0.00s)
✓ Incoming webhook rule (0.00s)
✓ Incoming webhook rule empty targets (0.00s)
✓ Incoming webhook rule empty webhooks (0.00s)
✓ Incoming webhook rule exact match - backward compatibility (0.00s)
✓ Incoming webhook rule exact match - second target (0.00s)
✓ Incoming webhook rule first match wins - exact before glob (0.00s)
✓ Incoming webhook rule first match wins - first glob wins (0.00s)
✓ Incoming webhook rule first match wins - webhook order matters (0.00s)
✓ Incoming webhook rule glob match - feature branch (0.00s)
✓ Incoming webhook rule glob match - release branch with semver (0.00s)
✓ Incoming webhook rule glob pattern with wildcard (0.00s)
✓ Incoming webhook rule glob with alternation (0.00s)
✓ Incoming webhook rule glob with character class (0.00s)
✓ Incoming webhook rule invalid glob - skip and continue (0.00s)
✓ Incoming webhook rule mixed exact and glob in same webhook (0.00s)
✓ Incoming webhook rule multiple webhooks - production first wins (0.00s)
✓ Incoming webhook rule no match - branch not in targets (0.00s)
✓ Incoming webhook rule no match - glob doesn't match (0.00s)
✓ Match event URL repo with lister (0.00s)
✓ Match event URL repo with lister match event URL with lister - found (0.00s)
✓ Match event URL repo with lister match event URL with lister - not found (0.00s)
✓ Match event URL repo with lister match event URL without lister - uses API list (0.00s)
✓ Match pipelinerun annotation and repositories (0.10s)
✓ Match pipelinerun annotation and repositories cel NOT match on all changed files (0.00s)
✓ Match pipelinerun annotation and repositories cel bad expression (0.00s)
✓ Match pipelinerun annotation and repositories cel custom-params-combined-with-builtin (0.01s)
✓ Match pipelinerun annotation and repositories cel custom-params-from-secret (0.01s)
✓ Match pipelinerun annotation and repositories cel custom-params-multiple (0.00s)
✓ Match pipelinerun annotation and repositories cel custom-params-not-matching (0.00s)
✓ Match pipelinerun annotation and repositories cel custom-params-simple (0.00s)
✓ Match pipelinerun annotation and repositories cel custom-params-with-reserved-keyword (0.00s)
✓ Match pipelinerun annotation and repositories cel match body payload (0.00s)
✓ Match pipelinerun annotation and repositories cel match by direct path (0.00s)
✓ Match pipelinerun annotation and repositories cel match on added, modified, deleted and renamed files (0.01s)
✓ Match pipelinerun annotation and repositories cel match on all changed files (0.00s)
✓ Match pipelinerun annotation and repositories cel match path by glob (0.00s)
✓ Match pipelinerun annotation and repositories cel match path by glob along with push event and target branch info (0.00s)
✓ Match pipelinerun annotation and repositories cel match path title pr (0.00s)
✓ Match pipelinerun annotation and repositories cel match path title push (0.00s)
✓ Match pipelinerun annotation and repositories cel match request header (0.00s)
✓ Match pipelinerun annotation and repositories cel match source target (0.01s)
✓ Match pipelinerun annotation and repositories cel no match path by glob (0.00s)
✓ Match pipelinerun annotation and repositories cel no match path title pr (0.00s)
✓ Match pipelinerun annotation and repositories error match on-path-change match path no match event (0.00s)
✓ Match pipelinerun annotation and repositories error on only when on annotation (0.00s)
✓ Match pipelinerun annotation and repositories error when no pac annotation has been set (0.00s)
✓ Match pipelinerun annotation and repositories error when pac annotation has been set but empty (0.00s)
✓ Match pipelinerun annotation and repositories ignored on-path-change-ignore include and ignore path (0.00s)
✓ Match pipelinerun annotation and repositories ignored on-path-change-ignore no path change (0.00s)
✓ Match pipelinerun annotation and repositories match a repository with target NS (0.00s)
✓ Match pipelinerun annotation and repositories match on-path-change match path by glob (0.00s)
✓ Match pipelinerun annotation and repositories match on-path-change-ignore ignore path (0.00s)
✓ Match pipelinerun annotation and repositories match on-path-change-ignore include and ignore path (0.00s)
✓ Match pipelinerun annotation and repositories match on-path-change-ignore with commas (0.00s)
✓ Match pipelinerun annotation and repositories match same webhook on multiple repos takes the oldest one (0.00s)
✓ Match pipelinerun annotation and repositories match target pipeline run (0.00s)
✓ Match pipelinerun annotation and repositories matching incoming webhook event on incoming target (0.00s)
✓ Match pipelinerun annotation and repositories matching incoming webhook event on push target (0.00s)
✓ Match pipelinerun annotation and repositories no match a repository with target NS (0.00s)
✓ Match pipelinerun by annotation (0.01s)
✓ Match pipelinerun by annotation base-does-not-compare (0.00s)
✓ Match pipelinerun by annotation branch-glob-matching (0.00s)
✓ Match pipelinerun by annotation branch-matching-doesnot-match-for-pull-request (0.00s)
✓ Match pipelinerun by annotation branch-matching-doesnot-match-for-push-event (0.00s)
✓ Match pipelinerun by annotation branch-matching-match-for-pull request-when-there-are-slashes-in-between-branch-name (0.00s)
✓ Match pipelinerun by annotation branch-matching-match-for-push-when-there-are-slashes-in-between-branch-name (0.00s)
✓ Match pipelinerun by annotation cel-expression-takes-precedence-over-annotations (0.00s)
✓ Match pipelinerun by annotation empty-annotation (0.00s)
✓ Match pipelinerun by annotation first-one-match-with-two-good-ones (0.00s)
✓ Match pipelinerun by annotation good-match-on-label (0.00s)
✓ Match pipelinerun by annotation good-match-with-only-one (0.00s)
✓ Match pipelinerun by annotation invalid-cel-expression-error (0.00s)
✓ Match pipelinerun by annotation match-branch-matching (0.00s)
✓ Match pipelinerun by annotation match-on-cel-expression (0.00s)
✓ Match pipelinerun by annotation match-on-comment (0.00s)
✓ Match pipelinerun by annotation no-annotation (0.00s)
✓ Match pipelinerun by annotation no-match-on-event (0.00s)
✓ Match pipelinerun by annotation no-match-on-label (0.00s)
✓ Match pipelinerun by annotation no-match-on-target-branch (0.00s)
✓ Match pipelinerun by annotation no-match-on-the-comment-should-not-match-the-other-pruns (0.00s)
✓ Match pipelinerun by annotation no-on-label-annotation-on-pr (0.00s)
✓ Match pipelinerun by annotation on-comment-annotation-with-invalid-regexp-match (0.00s)
✓ Match pipelinerun by annotation ref-heads-*--allow-any-branch (0.00s)
✓ Match pipelinerun by annotation ref-heads-main-push-rerequested-case (0.00s)
✓ Match pipelinerun by annotation ref-heads-regex-allow (0.00s)
✓ Match pipelinerun by annotation ref-heads-regex-not-match (0.00s)
✓ Match pipelinerun by annotation retest when all pipelines already succeeded returns err no failed pipeline to retest and no matches (0.00s)
✓ Match pipelinerun by annotation single-event-annotation (0.00s)
✓ Match pipelinerun by annotation single-target-branch-annotation (0.00s)
✓ Match running pipeline run for incoming webhook (0.00s)
✓ Match running pipeline run for incoming webhook return all pipelineruns if event type is different and incoming pipelinerun name is empty (0.00s)
✓ Match running pipeline run for incoming webhook return all pipelineruns if event type is other than incoming (0.00s)
✓ Match running pipeline run for incoming webhook return all pipelineruns if pipelinerun name is empty for incoming event (0.00s)
✓ Match running pipeline run for incoming webhook return matched pipelinerun for matching pipelinerun generate name (0.00s)
✓ Match running pipeline run for incoming webhook return matched pipelinerun for matching pipelinerun name (0.00s)
✓ Match running pipeline run for incoming webhook return nil when failing to match with an event type or a pipelinerun name (0.00s)
✓ Match target (0.00s)
✓ Match target dots are literal - do not match any char (0.00s)
✓ Match target dots are literal - exact version match (0.00s)
✓ Match target exact match (0.00s)
✓ Match target glob * - catch-all (0.00s)
✓ Match target glob * - must match from start (0.00s)
✓ Match target glob * - prefix pattern (0.00s)
✓ Match target glob * - substring match with wildcards (0.00s)
✓ Match target glob ? - single char match (0.00s)
✓ Match target glob [range] - character class (0.00s)
✓ Match target glob {a,b,c} - alternation (0.00s)
✓ Match target invalid glob - unclosed bracket (0.00s)
✓ Match target no substring match (0.00s)
✓ Match target real-world - JIRA pattern (0.00s)
✓ Match target real-world - version tags (0.00s)
✓ Match target semver with wildcards (0.00s)
✓ Walk expr for label references (0.02s)
✓ Walk expr for label references PR title contains 'labels' - should NOT match (string method on literal) (0.00s)
✓ Walk expr for label references PR title equals 'labels' literally - should NOT match (string literal) (0.00s)
✓ Walk expr for label references body.pull request.title with label in value - should NOT match (0.00s)
✓ Walk expr for label references bracket notation - body["labels"] ( git lab style) (0.00s)
✓ Walk expr for label references bracket notation - body["pull request"]["labels"] (0.00s)
✓ Walk expr for label references deeply nested bracket notation (0.00s)
✓ Walk expr for label references empty expression - returns false (0.00s)
✓ Walk expr for label references head.label (branch label) - should NOT match (0.00s)
✓ Walk expr for label references invalid CEL expression - returns false (0.00s)
✓ Walk expr for label references labels in comprehension filter (0.00s)
✓ Walk expr for label references mixed notation - body.pull request["labels"] (0.00s)
✓ Walk expr for label references path changed - no labels (0.00s)
✓ Walk expr for label references pull request with branch check - no labels (0.00s)
✓ Walk expr for label references push event - no labels (0.00s)
✓ Walk expr for label references references body.labels ( git lab style) (0.00s)
✓ Walk expr for label references references body.pull request.labels ( git hub gitea style) (0.00s)
✓ Walk expr for label references references event type directly (0.00s)
✓ Walk expr for label references references event type in complex expression (0.00s)
✓ Walk expr for label references references labels with size check (0.00s)
✓ Walk expr for label references simple pull request event check - no labels (0.00s)
✓ Walk expr for label references ternary with labels in condition (0.00s)
✓ Walk expr for label references ternary with labels in false branch (0.00s)
✓ Walk expr for label references ternary with labels in true branch (0.00s)
✓ Walk expr for label references ternary without labels - should NOT match (0.00s)
✓ Walk expr for label references title contains label word - should NOT match (string literal) (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/llm:
✓ Analysis error message (0.00s)
✓ Analyze (0.56s)
✓ Analyze ai analysis disabled (0.00s)
✓ Analyze invalid config (0.00s)
✓ Analyze nil response (0.01s)
✓ Analyze no ai analysis config (0.00s)
✓ Build prompt (0.00s)
✓ Build prompt context ordering (0.00s)
✓ Build prompt empty prompt with context (0.00s)
✓ Build prompt error (0.00s)
✓ Build prompt error unmarshalable channel in array (0.00s)
✓ Build prompt error unmarshalable channel in nested map (0.00s)
✓ Build prompt error unmarshalable function in nested map (0.00s)
✓ Build prompt prompt with array context (0.00s)
✓ Build prompt prompt with boolean context (0.00s)
✓ Build prompt prompt with map context (0.00s)
✓ Build prompt prompt with multiple context keys (0.00s)
✓ Build prompt prompt with number context (0.00s)
✓ Build prompt prompt with string context (0.00s)
✓ Build prompt simple prompt without context (0.00s)
✓ Count results (0.00s)
✓ Execute analysis (0.00s)
✓ Execute analysis ai analysis disabled (0.00s)
✓ Execute analysis ai analysis nil (0.00s)
✓ Execute analysis invalid config returns error wrapped (0.00s)
✓ Execute analysis nil pipelinerun (0.00s)
✓ Execute analysis no settings (0.00s)
✓ Get context cache key (0.00s)
✓ Get context cache key config without container logs (0.00s)
✓ Get context cache key container logs enabled with default max lines (0.00s)
✓ Get context cache key container logs enabled with explicit max lines (0.00s)
✓ Get context cache key nil config returns default key (0.00s)
✓ New client (0.00s)
✓ New client create gemini client (0.00s)
✓ New client create openai client (0.00s)
✓ New client missing secret (0.00s)
✓ New client unsupported provider (0.00s)
✓ New client validation (0.00s)
✓ New client validation empty secret name is rejected (0.00s)
✓ New client validation malformed api url is rejected (0.00s)
✓ New client validation negative max tokens is rejected (0.00s)
✓ New client validation negative timeout is rejected (0.00s)
✓ New client validation nil secret ref is rejected (0.00s)
✓ New client with real providers (0.00s)
✓ New client with real providers real gemini registration (0.00s)
✓ New client with real providers real openai registration (0.00s)
✓ Post PR comment (0.00s)
✓ Post PR comment no pull request number, skipped (0.00s)
✓ Post PR comment with pull request number (0.00s)
✓ Provider registration (0.00s)
✓ Should trigger role (0.00s)
✓ Should trigger role evaluations (0.01s)
✓ Should trigger role evaluations expression evaluates false (0.00s)
✓ Should trigger role evaluations expression evaluates true (0.00s)
✓ Should trigger role evaluations invalid expression (0.00s)
✓ Should trigger role evaluations no expression defaults to completed pipelines (0.00s)
✓ Should trigger role invalid cel expression (0.00s)
✓ Should trigger role no cel expression - skips nil pipelinerun (0.00s)
✓ Should trigger role no cel expression - skips pending pipeline (0.00s)
✓ Should trigger role no cel expression - skips pipelinerun without status (0.00s)
✓ Should trigger role no cel expression - triggers for failed pipeline (0.00s)
✓ Should trigger role no cel expression - triggers for succeeded pipeline (0.00s)
✓ Should trigger role simple false expression (0.00s)
✓ Should trigger role simple true expression (0.00s)
✓ Supported providers (0.00s)
✓ Validate URL (0.00s)
✓ Validate URL empty URL is valid (0.00s)
✓ Validate URL invalid URL - malformed scheme (0.00s)
✓ Validate URL invalid URL - no host (0.00s)
✓ Validate URL invalid URL - no scheme (0.00s)
✓ Validate URL invalid URL - with newline (0.00s)
✓ Validate URL invalid URL - with tab (0.00s)
✓ Validate URL invalid URL - with whitespace (0.00s)
✓ Validate URL invalid URL - wrong scheme (0.00s)
✓ Validate URL invalid URL - ws scheme (0.00s)
✓ Validate URL valid HTTP URL (0.00s)
✓ Validate URL valid HTTPS URL (0.00s)
✓ Validate URL valid URL with path (0.00s)
✓ Validate URL valid URL with port (0.00s)
✓ Validate analysis config (0.00s)
✓ Validate analysis config invalid role - invalid output (0.00s)
✓ Validate analysis config invalid role - missing name (0.00s)
✓ Validate analysis config invalid role - missing prompt (0.00s)
✓ Validate analysis config missing provider (0.00s)
✓ Validate analysis config missing token secret ref (0.00s)
✓ Validate analysis config no roles (0.00s)
✓ Validate analysis config valid config (0.00s)
✓ Validate analysis config with models (0.00s)
✓ Validate analysis config with models role with custom model (0.00s)
✓ Validate analysis config with models role without model uses default (0.00s)
✓ Validate analysis config with models roles with different models (0.00s)
✓ Validate client config (0.00s)
✓ Validate client config invalid api url - malformed (0.00s)
✓ Validate client config invalid api url - missing scheme (0.00s)
✓ Validate client config invalid api url - wrong scheme (0.00s)
✓ Validate client config invalid provider (0.00s)
✓ Validate client config missing provider (0.00s)
✓ Validate client config missing token secret ref (0.00s)
✓ Validate client config negative max tokens (0.00s)
✓ Validate client config negative timeout (0.00s)
✓ Validate client config valid config with custom api url (0.00s)
✓ Validate client config valid config with http api url (0.00s)
✓ Validate client config valid gemini config (0.00s)
✓ Validate client config valid openai config (0.00s)
✓ Validate client config zero max tokens is valid (0.00s)
✓ Validate client config zero timeout is valid (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/cmd/tknpac/webhook:
✓ Webhook add (0.73s)
✓ Webhook add failed to configure webhook when git provider secret is empty (0.00s)
✓ Webhook add invalid repository (0.00s)
✓ Webhook add list all repositories (0.00s)
✓ Webhook add list all repository in a namespace where none repo exist (0.00s)
✓ Webhook add update secret token for existing github webhook (0.23s)
✓ Webhook add use webhook add command to add github webhook when github app is configured (0.49s)
✓ Webhook update token (0.00s)
✓ Webhook update token command (0.00s)
✓ Webhook update token don't use webhook update-token command when github app is configured (0.00s)
✓ Webhook update token don't use webhook update-token command when github app is configured# 01 (0.00s)
✓ Webhook update token invalid repository (0.00s)
✓ Webhook update token list all repositories when github app is configured (0.00s)
✓ Webhook update token list all repository in a namespace where none repo exist (0.00s)
✓ Webhook update token update provider token for existing bitbucket cloud webhook (0.00s)
✓ Webhook update token update provider token for existing github webhook (0.00s)
✓ Webhook update token update token for bitbucket cloud with stale username (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/policy:
✓ Policy is allowed (0.00s)
✓ Policy is allowed allowed allowing member for pull request (0.00s)
✓ Policy is allowed allowed from owners file (0.00s)
✓ Policy is allowed allowed member in team for ok-to-test (0.00s)
✓ Policy is allowed allowed retest same as ok-to-test (0.00s)
✓ Policy is allowed disallowed from owners file (0.00s)
✓ Policy is allowed disallowed member not in team (0.00s)
✓ Policy is allowed disallowed member not in team for ok-to-test (0.00s)
✓ Policy is allowed disallowed member not in team for pull request (0.00s)
✓ Policy is allowed disallowed policy set with empty list (0.00s)
✓ Policy is allowed notset not set (0.00s)
✓ Policy is allowed notset push (0.00s)
✓ Policy is allowed notset unknown event type (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/provider/bitbucketcloud:
✓ Create status (0.02s)
✓ Create status application name (0.00s)
✓ Create status completed (0.00s)
✓ Create status completed with comment (0.00s)
✓ Create status details url (0.00s)
✓ Create status failed (0.00s)
✓ Create status neutral (0.00s)
✓ Create status pending (0.00s)
✓ Create status skipped (0.00s)
✓ Create status success (0.00s)
✓ Get commit info (0.01s)
✓ Get commit info get commit info no SHA (0.00s)
✓ Get commit info get commit info with author (0.00s)
✓ Get commit info get commit info without author (0.00s)
✓ Get commit statuses (0.01s)
✓ Get commit statuses empty statuses (0.00s)
✓ Get commit statuses nil client returns error (0.00s)
✓ Get commit statuses raw key without prefix returned as-is (0.00s)
✓ Get commit statuses statuses with mixed states (0.00s)
✓ Get commit statuses truncated key with hash returned as-is (0.00s)
✓ Get config (0.00s)
✓ Get tekton dir (0.04s)
✓ Get tekton dir bad yaml files in there (0.00s)
✓ Get tekton dir get tekton directory and subdirectory (0.01s)
✓ Get tekton dir get tekton directory mainbranch (0.01s)
✓ Get tekton dir get tekton directory on pull request (0.00s)
✓ Get tekton dir get tekton directory on push (0.01s)
✓ Get tekton dir no yaml files in there (0.00s)
✓ Is allowed (0.03s)
✓ Is allowed allowed from a comment owner (0.00s)
✓ Is allowed allowed from an ownerfile who is a workspace member (0.00s)
✓ Is allowed allowed from owner file who is not part of workspace (0.00s)
✓ Is allowed allowed ok-to-test on new line (0.01s)
✓ Is allowed allowed user is owner (0.00s)
✓ Is allowed disallowed not a valid ok-to-test comment (0.00s)
✓ Is allowed disallowed same nickname different account id (0.00s)
✓ Parse payload (0.01s)
✓ Parse payload additional network allowed with spaces (0.00s)
✓ Parse payload additional source ip allowed (0.00s)
✓ Parse payload cancel all comment (0.00s)
✓ Parse payload cancel comment with a pipelinerun (0.00s)
✓ Parse payload check source ip allowed (0.00s)
✓ Parse payload check source ip allowed multiple xff (0.00s)
✓ Parse payload check source ip not allowed (0.00s)
✓ Parse payload check xff hijack (0.00s)
✓ Parse payload not allowed with additional ips (0.00s)
✓ Parse payload ok-to-test comment (0.00s)
✓ Parse payload parse pull request (0.00s)
✓ Parse payload parse push request (0.00s)
✓ Parse payload parse push tag (0.00s)
✓ Parse payload retest comment with a pipelinerun (0.00s)
✓ Parse payload test comment (0.00s)
✓ Provider detect (0.00s)
✓ Provider detect cancel a pr (0.00s)
✓ Provider detect cancel comment (0.00s)
✓ Provider detect invalid bitbucket cloud event (0.00s)
✓ Provider detect not a bitbucket cloud event (0.00s)
✓ Provider detect ok-to-test comment (0.00s)
✓ Provider detect pull request event (0.00s)
✓ Provider detect push event (0.00s)
✓ Provider detect random comment (0.00s)
✓ Provider detect retest comment (0.00s)
✓ Provider detect updated pull request event (0.00s)
✓ Set client (0.00s)
✓ Set client no token (0.00s)
✓ Set client no user (0.00s)
✓ Set client set token (0.00s)
✓ Validate (0.00s)
✓ Validate HMAC signature mismatch (0.00s)
✓ Validate invalid signature (0.00s)
✓ Validate missing signature header (0.00s)
✓ Validate no webhook secret configured (0.00s)
✓ Validate source IP check enabled (0.00s)
✓ Validate valid SHA1 signature (0.00s)
✓ Validate valid SHA256 signature (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/provider/gitea:
✓ Acl check all (0.01s)
✓ Acl check all allowed when sender has repository admin permission (0.00s)
✓ Acl check all allowed when sender has repository read permission (0.00s)
✓ Acl check all allowed when sender has repository write collaborator permission (0.00s)
✓ Acl check all allowed when sender is approver in OWNERS file (0.00s)
✓ Acl check all disallowed when sender has no collaborator or OWNERS approval (0.00s)
✓ Check policy allowing (0.03s)
✓ Check policy allowing caching (0.00s)
✓ Check policy allowing error while getting team membership (0.00s)
✓ Check policy allowing forbidden when listing org teams (0.00s)
✓ Check policy allowing no team in org is found (0.00s)
✓ Check policy allowing user is a member of the allowed team (0.01s)
✓ Check policy allowing user is not a member of the allowed team (0.00s)
✓ Create comment (0.01s)
✓ Create comment create new comment (0.00s)
✓ Create comment nil client error (0.00s)
✓ Create comment no matching comment creates new (0.00s)
✓ Create comment not a pull request error (0.00s)
✓ Create comment skip comment from different user and create new (0.00s)
✓ Create comment update existing comment (0.00s)
✓ Create status update comment normalizes breaks (0.00s)
✓ Format pipeline comment emoji (0.00s)
✓ Format pipeline comment emoji failure conclusion uses failure emoji (0.00s)
✓ Format pipeline comment emoji in progress status uses rocket emoji (0.00s)
✓ Get commit info (0.00s)
✓ Get commit info PR lookup populates URLs (0.00s)
✓ Get commit info basic fields only (0.00s)
✓ Get commit info good with full commit info (0.00s)
✓ Get commit info no client error (0.00s)
✓ Get commit statuses (0.01s)
✓ Get commit statuses API error (0.00s)
✓ Get commit statuses deduplicates identical statuses (0.00s)
✓ Get commit statuses empty response (0.00s)
✓ Get commit statuses happy path with multiple statuses (0.00s)
✓ Get commit statuses nil client returns error (0.00s)
✓ Get task URI (0.00s)
✓ Get task URI bad URI format (0.00s)
✓ Get task URI different host returns not found (0.00s)
✓ Get task URI fetch task from raw branch URL (0.00s)
✓ Get task URI fetch task from src branch URL (0.00s)
✓ Get task URI fetch task from tag URL (0.00s)
✓ Get tekton dir (0.00s)
✓ Get tekton dir test with badly formatted yaml (0.00s)
✓ Ok to test comment (0.03s)
✓ Ok to test comment allowed from org good issue comment event (0.00s)
✓ Ok to test comment allowed from org good issue comment event without remember (0.00s)
✓ Ok to test comment allowed from org good issue pull request event (0.00s)
✓ Ok to test comment allowed from org good issue pull request event without remember (0.00s)
✓ Ok to test comment disallowed bad event origin (0.00s)
✓ Ok to test comment disallowed bad event origin without remember (0.00s)
✓ Ok to test comment disallowed no-ok-to-test (0.00s)
✓ Ok to test comment disallowed no-ok-to-test without remember (0.00s)
✓ Ok to test comment disallowed ok-to-test-not-from-owner (0.00s)
✓ Ok to test comment disallowed ok-to-test-not-from-owner without remember (0.00s)
✓ Parse payload errors (0.00s)
✓ Parse payload errors invalid json payload (0.00s)
✓ Parse payload errors missing event type header (0.00s)
✓ Parse payload errors supported webhook event but unsupported by parse payload (0.00s)
✓ Parse payload errors unknown event type rejected by webhook parser (0.00s)
✓ Parse payload issue comment pull request data (0.00s)
✓ Parse payload issue comment pull request data empty issue URL falls back to pull request index (0.00s)
✓ Parse payload issue comment pull request data issue comment populates source and target urls (0.00s)
✓ Parse payload issue comment pull request data missing head repo does not panic and leaves head url empty (0.00s)
✓ Parse payload issue comment pull request data nil comment skips event type override (0.00s)
✓ Parse payload issue comment pull request data non pull request issue comment still fails (0.00s)
✓ Parse payload issue comment pull request data pull request comment populates source and target urls (0.00s)
✓ Parse payload pull request (0.00s)
✓ Parse payload pull request closed pull request sets pull request closed target (0.00s)
✓ Parse payload pull request label updated sets pull request labeled event type (0.00s)
✓ Parse payload pull request opened pull request sets pull request event and target (0.00s)
✓ Parse payload pull request synchronized pull request sets pull request event and target (0.00s)
✓ Parse payload push (0.00s)
✓ Parse payload push head commit provides sha url and title (0.00s)
✓ Parse payload push missing head commit falls back to before sha (0.00s)
✓ Parse webhook (0.00s)
✓ Parse webhook push (0.00s)
✓ Populate event from gitea pull request (0.00s)
✓ Populate event from gitea pull request full pull request populates every field (0.00s)
✓ Populate event from gitea pull request head and base without repository leave urls empty (0.00s)
✓ Populate event from gitea pull request nil pull request leaves event untouched (0.00s)
✓ Populate event from gitea pull request no sha skips the sha url (0.00s)
✓ Provider create status (0.01s)
✓ Provider create status commit (0.01s)
✓ Provider create status commit cancel (0.00s)
✓ Provider create status commit ok-to-test (0.00s)
✓ Provider create status commit pending (0.00s)
✓ Provider create status commit pending from status (0.00s)
✓ Provider create status commit retest (0.00s)
✓ Provider create status commit retry on transient error (0.01s)
✓ Provider create status commit retry on transient error fail after max retries (0.00s)
✓ Provider create status commit retry on transient error no retry on other errors (0.00s)
✓ Provider create status commit retry on transient error retry on user does not exist error (0.00s)
✓ Provider create status commit success (0.00s)
✓ Provider create status test status text (0.00s)
✓ Provider create status test with failure conclusion (0.00s)
✓ Provider create status test with in progress status (0.00s)
✓ Provider create status test with neutral conclusion (0.00s)
✓ Provider create status test with ok-to-test event (0.00s)
✓ Provider create status test with oncomment event (0.00s)
✓ Provider create status test with onpr (0.00s)
✓ Provider create status test with pending conclusion (0.00s)
✓ Provider create status test with success conclusion (0.00s)
✓ Provider detect (0.00s)
✓ Provider detect bad event not supported (0.00s)
✓ Provider detect bad invalid issue comment payload type (0.00s)
✓ Provider detect bad invalid json payload (0.00s)
✓ Provider detect bad invalid pull request payload type (0.00s)
✓ Provider detect bad invalid push payload type (0.00s)
✓ Provider detect bad test not a gitea request (0.00s)
✓ Provider detect good cancel comment (0.00s)
✓ Provider detect good cancel comment single pr (0.00s)
✓ Provider detect good ok-to-test comment (0.00s)
✓ Provider detect good pull request (0.00s)
✓ Provider detect good push (0.00s)
✓ Provider detect good random issue comment (0.00s)
✓ Provider detect good retest comment (0.00s)
✓ Provider get file inside repo (0.00s)
✓ Provider get file inside repo content field is null does not panic (0.00s)
✓ Provider get file inside repo null response body yields content nil without panic (0.00s)
✓ Provider get file inside repo valid file content is decoded (0.00s)
✓ Provider get files (0.00s)
✓ Provider get files pull request (0.00s)
✓ Provider get files push (0.00s)
✓ Provider validate (0.00s)
✓ Provider validate invalid hex in signature (0.00s)
✓ Provider validate invalid signature mismatch (0.00s)
✓ Provider validate no secret and no signature (0.00s)
✓ Provider validate secret configured but no signature (0.00s)
✓ Provider validate signature present but no secret configured (0.00s)
✓ Provider validate valid forgejo signature (0.00s)
✓ Provider validate valid gitea signature (0.00s)
✓ Split gitea URL (0.00s)
✓ Split gitea URL URL encoded branch name (0.00s)
✓ Split gitea URL URL encoded path (0.00s)
✓ Split gitea URL invalid action segment (0.00s)
✓ Split gitea URL invalid ref type (0.00s)
✓ Split gitea URL raw branch URL (0.00s)
✓ Split gitea URL raw commit URL (0.00s)
✓ Split gitea URL raw tag URL (0.00s)
✓ Split gitea URL src branch URL (0.00s)
✓ Split gitea URL src commit URL (0.00s)
✓ Split gitea URL src tag URL (0.00s)
✓ Split gitea URL too short URL (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/params:
✓ Get install location (0.51s)
✓ Get install location deployment with version label (0.51s)
✓ Get install location deployment without version label (0.00s)
✓ Get install location no deployments found (0.00s)
✓ Get repository (0.00s)
✓ Get repository deep copy (0.00s)
✓ Get repository get repository with lister - found (0.00s)
✓ Get repository get repository with lister - not found (0.00s)
✓ Get repository get repository without lister - found via API (0.00s)
✓ Get repository get repository without lister - not found via API (0.00s)
✓ List repositories (0.00s)
✓ List repositories deep copy (0.00s)
✓ List repositories list repositories with lister - all namespaces (0.00s)
✓ List repositories list repositories with lister - empty namespace (0.00s)
✓ List repositories list repositories with lister - specific namespace (0.00s)
✓ List repositories list repositories without lister - all namespaces via API (0.00s)
✓ List repositories list repositories without lister - specific namespace via API (0.00s)
✓ Update pac config reset console UI (0.00s)
✓ Update pac config reset console UI reset to fallback console when route lookup fails (0.00s)
✓ Update pac config reset console UI reset to openshift console when route is available (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/provider/gitlab/test:

github.com/openshift-pipelines/pipelines-as-code/pkg/provider/providermetrics:
✓ Record APIUs age (0.00s)
✓ Record APIUs age when repository is nil (0.00s)
✓ Record APIUs age when repository is not nil (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/provider/retryhttp:
✓ Backoff large attempt does not overflow (0.00s)
✓ Get body failure does not return closed response (0.09s)
✓ Round trip (3.09s)
✓ Round trip does not truncate or retry unreplayable body (0.03s)
✓ Round trip gives up after max attempts (0.36s)
✓ Round trip gives up when reset is beyond max wait (0.00s)
✓ Round trip no retry of 500 on POST (0.00s)
✓ Round trip no retry on 404 (0.00s)
✓ Round trip no retry on plain 403 without rate limit headers (0.00s)
✓ Round trip no retry on success (0.00s)
✓ Round trip replays POST body on 429 retry (0.18s)
✓ Round trip retries 429 until success (0.94s)
✓ Round trip retries 500 on GET (1.15s)
✓ Round trip retries github 403 rate limit (0.42s)

github.com/openshift-pipelines/pipelines-as-code/pkg/provider/status:

github.com/openshift-pipelines/pipelines-as-code/pkg/random:
✓ Random alpha string (0.00s)
✓ Random alpha string length (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/queue:
✓ Add to pending queue directly (0.00s)
✓ Check and update semaphore size handles removed limit (0.00s)
✓ Debug handler (0.00s)
✓ Debug handler does not wait for the queue (0.00s)
✓ Debug handler empty manager (0.00s)
✓ Debug handler no manager registered yet (0.00s)
✓ Debug handler one running and one pending (0.00s)
✓ Filter pipeline run by in progress (0.00s)
✓ New manager for list (0.00s)
✓ New manager re listing (0.00s)
✓ New semaphore (0.00s)
✓ New semaphore preserves insertion order for equal priority (0.00s)
✓ Priority queue (0.00s)
✓ Queue manager concurrent repository access (0.01s)
✓ Queue manager init queues (0.00s)
✓ Queue manager init queues skips pipeline runs without order (0.00s)
✓ Someone else set pending with no concurrency limit (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/secrets/types:

github.com/openshift-pipelines/pipelines-as-code/pkg/provider/github/app:
✓ Generate JWT (0.00s)
✓ Generate JWT invalid github-application-id (0.00s)
✓ Generate JWT invalid private key (0.00s)
✓ Generate JWT secret not found (0.00s)
✓ Generate JWT valid secret found (0.00s)
✓ Get and update installation ID (0.01s)
✓ Get and update installation ID fallbacks (0.01s)
✓ Get and update installation ID fallbacks all installations fail (0.00s)
✓ Get and update installation ID fallbacks invalid repo url (0.00s)
✓ Get and update installation ID fallbacks repo and org installation fail, user installation succeeds (0.00s)
✓ Get and update installation ID fallbacks repo installation fails, org installation succeeds (0.01s)
✓ Get and update installation ID handles installation and token errors (0.01s)
✓ Get and update installation ID handles installation and token errors installation has no id (0.00s)
✓ Get and update installation ID handles installation and token errors token request fails (0.01s)
✓ Get and update installation ID rejects invalid repository URLs (0.00s)
✓ Get and update installation ID rejects invalid repository URLs userinfo (0.00s)
✓ Get and update installation ID rejects unconfigured repository host (0.00s)
✓ Get and update installation ID returns setup errors (0.00s)
✓ Get and update installation ID returns setup errors invalid application id (0.00s)
✓ Get and update installation ID returns setup errors invalid private key (0.00s)
✓ Get and update installation ID returns setup errors invalid token api url (0.00s)
✓ Get and update installation ID returns setup errors missing controller secret (0.00s)
✓ Get and update installation IDUs es configured public endpoint (0.00s)
✓ GetAndUpdateInstallationIDRejectsInvalidRepositoryURLsHttp scheme (0.00s)
✓ GetAndUpdateInstallationIDRejectsInvalidRepositoryURLsParse error (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/test/cli:

github.com/openshift-pipelines/pipelines-as-code/pkg/test/concurrency:

github.com/openshift-pipelines/pipelines-as-code/pkg/test/clients:

github.com/openshift-pipelines/pipelines-as-code/pkg/test/github:

github.com/openshift-pipelines/pipelines-as-code/pkg/test/http:

github.com/openshift-pipelines/pipelines-as-code/pkg/test/kubernetestint:

github.com/openshift-pipelines/pipelines-as-code/pkg/test/logger:

github.com/openshift-pipelines/pipelines-as-code/pkg/test/provider:

github.com/openshift-pipelines/pipelines-as-code/pkg/test/tekton:

github.com/openshift-pipelines/pipelines-as-code/pkg/test/repository:

github.com/openshift-pipelines/pipelines-as-code/pkg/test/nonoai:

github.com/openshift-pipelines/pipelines-as-code/pkg/test/tracing:

github.com/openshift-pipelines/pipelines-as-code/pkg/templates:
✓ Replace place holders variables (0.03s)
✓ Replace place holders variables JSON output (0.00s)
✓ Replace place holders variables JSON output CEL array serialization (0.00s)
✓ Replace place holders variables JSON output CEL bytes value (0.00s)
✓ Replace place holders variables JSON output CEL double value (0.00s)
✓ Replace place holders variables JSON output CEL int value (0.00s)
✓ Replace place holders variables JSON output CEL object serialization (0.00s)
✓ Replace place holders variables cel prefix (0.02s)
✓ Replace place holders variables cel prefix cel: prefix mixed with regular placeholders (0.00s)
✓ Replace place holders variables cel prefix cel: prefix with boolean result (0.00s)
✓ Replace place holders variables cel prefix cel: prefix with complex nested conditional (merge commit detection) (0.00s)
✓ Replace place holders variables cel prefix cel: prefix with complex nested conditional - regular commit (0.00s)
✓ Replace place holders variables cel prefix cel: prefix with evaluation error returns empty string (0.00s)
✓ Replace place holders variables cel prefix cel: prefix with extra whitespace (0.00s)
✓ Replace place holders variables cel prefix cel: prefix with files access (0.00s)
✓ Replace place holders variables cel prefix cel: prefix with files access - no go files (0.00s)
✓ Replace place holders variables cel prefix cel: prefix with has() function (0.00s)
✓ Replace place holders variables cel prefix cel: prefix with has() function - field missing (0.00s)
✓ Replace place holders variables cel prefix cel: prefix with headers access (0.00s)
✓ Replace place holders variables cel prefix cel: prefix with invalid expression returns empty string (0.00s)
✓ Replace place holders variables cel prefix cel: prefix with nil raw event still works (0.00s)
✓ Replace place holders variables cel prefix cel: prefix with pac namespace - staging branch (0.00s)
✓ Replace place holders variables cel prefix cel: prefix with pac namespace access (0.00s)
✓ Replace place holders variables cel prefix cel: prefix with pac namespace conditional (0.00s)
✓ Replace place holders variables cel prefix cel: prefix with simple body access (0.00s)
✓ Replace place holders variables cel prefix cel: prefix with size function (0.00s)
✓ Replace place holders variables cel prefix cel: prefix with string concatenation (0.00s)
✓ Replace place holders variables cel prefix cel: prefix with ternary expression (0.00s)
✓ Replace place holders variables cel prefix cel: prefix with ternary expression - else branch (0.00s)
✓ Replace place holders variables changed files - changed (0.00s)
✓ Replace place holders variables edge cases (0.00s)
✓ Replace place holders variables edge cases CEL expression with complex nested access (0.00s)
✓ Replace place holders variables edge cases CEL with nil in nested structure (0.00s)
✓ Replace place holders variables edge cases files with nested structure (0.00s)
✓ Replace place holders variables edge cases multi-level headers access (0.00s)
✓ Replace place holders variables test CEL with boolean value (0.00s)
✓ Replace place holders variables test CEL with invalid key (0.00s)
✓ Replace place holders variables test CEL with numeric value (0.00s)
✓ Replace place holders variables test CEL with string join (0.00s)
✓ Replace place holders variables test CEL with string replace (0.00s)
✓ Replace place holders variables test CEL with string substring (0.00s)
✓ Replace place holders variables test multiple placeholders mixed (0.00s)
✓ Replace place holders variables test placeholder not found in dico (0.00s)
✓ Replace place holders variables test replace standard (0.00s)
✓ Replace place holders variables test replace with CEL body (0.00s)
✓ Replace place holders variables test replace with CEL body expression (0.00s)
✓ Replace place holders variables test replace with headers (0.00s)
✓ Replace place holders variables test with file prefix but nil raw event (0.00s)
✓ Replace place holders variables test with header prefix but nil raw event (0.00s)
✓ Replace place holders variables test with nil headers only (0.00s)
✓ Replace place holders variables test with nil raw event and headers (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/secrets:
✓ Create basic auth secret (0.00s)
✓ Create basic auth secret bitbucket cloud API token git user (0.00s)
✓ Create basic auth secret cleaned up gitlab style long repo and organisation name (0.00s)
✓ Create basic auth secret different git user (0.00s)
✓ Create basic auth secret lowercase secrets (0.00s)
✓ Create basic auth secret target secret already there (0.00s)
✓ Create basic auth secret target secret not there (0.00s)
✓ Create basic auth secret use clone UR L#01 (0.00s)
✓ Create basic auth secret use clone URL (0.00s)
✓ Get basic auth secret (0.00s)
✓ Get secrets attached to pipeline run (0.00s)
✓ Get secrets attached to pipeline run get secrets (0.00s)
✓ Get secrets attached to pipeline run no secret key ref skip (0.00s)
✓ Get secrets attached to pipeline run no secrets skip (0.00s)
✓ Get secrets attached to pipeline run remove doublons (0.00s)
✓ Replace secrets in text (0.00s)
✓ Replace secrets in text replace secrets in text (0.00s)
✓ Replace secrets in text replace secrets in text with same prefix (0.00s)
✓ Resolve inherited secret (0.00s)
✓ Resolve inherited secret downgrading the inherited credential to cleartext is refused (0.00s)
✓ Resolve inherited secret global repository without a secret grants nothing (0.00s)
✓ Resolve inherited secret inheriting for the same endpoint is allowed (0.00s)
✓ Resolve inherited secret inheriting without an own url is allowed (0.00s)
✓ Resolve inherited secret no global repository keeps the local namespace (0.00s)
✓ Resolve inherited secret own secret is never inherited (0.00s)
✓ Resolve inherited secret pointing the inherited credential at another host is refused (0.00s)
✓ Resolve inherited secret repository without a git provider keeps the local namespace (0.00s)
✓ Same provider endpoint (0.00s)
✓ Same provider endpoint another path prefix on the same host is another owner (0.00s)
✓ Same provider endpoint api suffix under a path prefix keeps the prefix (0.00s)
✓ Same provider endpoint bare hostname reads as https (0.00s)
✓ Same provider endpoint different hosts (0.00s)
✓ Same provider endpoint empty urls are the same endpoint (0.00s)
✓ Same provider endpoint explicit port is another endpoint (0.00s)
✓ Same provider endpoint github api v 3 suffix names the root deployment (0.00s)
✓ Same provider endpoint gitlab api v 4 suffix names the root deployment (0.00s)
✓ Same provider endpoint host case does not tell endpoints apart (0.00s)
✓ Same provider endpoint http downgrade of an https endpoint (0.00s)
✓ Same provider endpoint identical https urls (0.00s)
✓ Same provider endpoint idna spelling matches its punycode form (0.00s)
✓ Same provider endpoint naming no prefix when the credential belongs under one (0.00s)
✓ Same provider endpoint same path prefix on a shared front end (0.00s)
✓ Same provider endpoint trailing slash names the same endpoint (0.00s)
✓ Same provider endpoint unicode lookalike host is not the ascii one (0.00s)
✓ Same provider endpoint unparsable urls only match themselves (0.00s)
✓ Secret from repository (0.00s)
✓ Secret from repository config default (0.00s)
✓ Secret from repository git provider secret bad key (0.00s)
✓ Secret from repository git provider secret doesn't exist (0.00s)
✓ Secret from repository no git provider (0.00s)
✓ Secret from repository no git provider secret (0.00s)
✓ Secret from repository set api url (0.00s)
✓ Secret from repository set user (0.00s)
✓ Secret from repository webhook secret bad key (0.00s)
✓ Secret from repository webhook secret missing (0.00s)
✓ Sort by longest (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/webhook:
✓ Path (0.00s)
✓ Reconcile (0.00s)
✓ Reconcile leader secret and webhook (0.00s)
✓ Reconcile missing secret (0.00s)
✓ Reconcile run reconcile (0.00s)
✓ Reconciler admit (1.63s)
✓ Reconciler admit allow (0.00s)
✓ Reconciler admit allow as it is be update to existing repo (0.00s)
✓ Reconciler admit allow bitbucket repository URL with subgroups (1.00s)
✓ Reconciler admit allow git hub URL with correct format (0.00s)
✓ Reconciler admit allow git lab repository URL with subgroups (0.60s)
✓ Reconciler admit allow github.com URL with correct format, git hub auto-detected (0.00s)
✓ Reconciler admit allow user with pipeline run create permission (0.00s)
✓ Reconciler admit bad url (0.00s)
✓ Reconciler admit bad url for global namespace allowed (0.00s)
✓ Reconciler admit no http or https (0.00s)
✓ Reconciler admit no http or https for global namespace allowed (0.00s)
✓ Reconciler admit reject (0.01s)
✓ Reconciler admit reject as repo namespace different (0.00s)
✓ Reconciler admit reject git hub repository URL with multiple subgroups (0.00s)
✓ Reconciler admit reject git hub repository URL with subgroup (0.00s)
✓ Reconciler admit reject github.com URL with subgroup, git hub auto-detected (0.00s)
✓ Reconciler admit reject repository URL with multiple trailing slashes (0.00s)
✓ Reconciler admit reject repository URL with trailing slash (0.00s)
✓ Reconciler admit reject user without pipeline run create permission (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/tracing:
✓ Attribute key composition (0.00s)
✓ Attribute key composition application (0.00s)
✓ Attribute key composition component (0.00s)
✓ Attribute key composition namespace bare (0.00s)
✓ Attribute key composition pac event type (0.00s)
✓ Attribute key composition pipelinerun bare (0.00s)
✓ Attribute key composition pipelinerun uid (0.00s)
✓ Attribute key composition result message (0.00s)
✓ Global is noop (0.00s)
✓ New does not warn when only o tel configured (0.00s)
✓ New installs SDK and W3C propagator on GRPC (0.00s)
✓ New installs SDK on HTTP protobuf (0.00s)
✓ New preserves existing provider when o tel unset (0.00s)
✓ New returns noop when endpoint unset (0.00s)
✓ New returns noop when sampler unset (0.00s)
✓ New warns when both backends configured (0.00s)
✓ Protocol from env (0.00s)
✓ Protocol from env OTLP protocol grpc applies (0.00s)
✓ Protocol from env defaults to grpc when neither is set (0.00s)
✓ Protocol from env falls back to OTLP protocol when the traces-specific var is unset (0.00s)
✓ Protocol from env traces-specific takes precedence over the generic var (0.00s)
✓ Result enum (0.00s)
✓ Result enum cancelled (0.00s)
✓ Result enum cancelled running finally (0.00s)
✓ Result enum completed with skipped tasks (0.00s)
✓ Result enum couldn't get pipeline (0.00s)
✓ Result enum couldn't get task (0.00s)
✓ Result enum create run failed (0.00s)
✓ Result enum failed (0.00s)
✓ Result enum future reason from upstream (0.00s)
✓ Result enum invalid graph (0.00s)
✓ Result enum invalid workspace binding (0.00s)
✓ Result enum parameter missing (0.00s)
✓ Result enum parameter type mismatch (0.00s)
✓ Result enum resource verification failed (0.00s)
✓ Result enum successful (0.00s)
✓ Result enum timed out (0.00s)
✓ Result enum validation failed (0.00s)
✓ Sampler from env (0.00s)
✓ Sampler from env always off (0.00s)
✓ Sampler from env always on (0.00s)
✓ Sampler from env empty value falls back to never sample (0.00s)
✓ Sampler from env parentbased always off (0.00s)
✓ Sampler from env parentbased always on (0.00s)
✓ Sampler from env parentbased traceidratio one tenth (0.00s)
✓ Sampler from env traceidratio half (0.00s)
✓ Sampler from env unrecognized falls back to never sample (0.00s)
✓ Shutdown is idempotent (0.00s)
✓ Shutdown on provider without hook returns nil (0.00s)
✓ Shutdown returns nil for passthrough provider (0.00s)
✓ Truncate result message (0.00s)
✓ Truncate result message empty (0.00s)
✓ Truncate result message exact limit stays untouched (0.00s)
✓ Truncate result message multi-byte rune at boundary is walked back to a valid boundary (0.00s)
✓ Truncate result message over limit is truncated with marker (0.00s)
✓ Truncate result message short stays untouched (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/tlsconfig:
✓ Format cipher suites (0.00s)
✓ Format cipher suites empty returns default (0.00s)
✓ Format cipher suites empty slice returns default (0.00s)
✓ Format cipher suites multiple known ciphers (0.00s)
✓ Format cipher suites single known cipher (0.00s)
✓ Format cipher suites unknown cipher shows hex ID (0.00s)
✓ Format curve preferences (0.00s)
✓ Format curve preferences empty returns default (0.00s)
✓ Format curve preferences empty slice returns default (0.00s)
✓ Format curve preferences multiple known curves (0.00s)
✓ Format curve preferences single known curve (0.00s)
✓ Format curve preferences unknown curve shows hex ID (0.00s)
✓ Get TLS version name (0.00s)
✓ Get TLS version name TLS 1.0 (0.00s)
✓ Get TLS version name TLS 1.1 (0.00s)
✓ Get TLS version name TLS 1.2 (0.00s)
✓ Get TLS version name TLS 1.3 (0.00s)
✓ Get TLS version name default (0.00s)
✓ Get TLS version name unknown ( 0x 999 9) (0.00s)
✓ Get cipher suite map (0.00s)
✓ Get cipher suite name (0.00s)
✓ Get cipher suite name TLS AES 128 GCM SHA256 (0.00s)
✓ Get cipher suite name TLS ECDHE RSA WITH AES 128 GCM SHA256 (0.00s)
✓ Get cipher suite name unknown ( 0x 999 9) (0.00s)
✓ Get curve name (0.00s)
✓ Get curve name P256 (0.00s)
✓ Get curve name P384 (0.00s)
✓ Get curve name P521 (0.00s)
✓ Get curve name X25519 (0.00s)
✓ Get curve name X25519 kyber 768 draft 00 (0.00s)
✓ Get curve name unknown ( 0x 999 9) (0.00s)
✓ Load from env (0.00s)
✓ Load from env all values set (0.00s)
✓ Load from env empty environment (0.00s)
✓ Load from env only min version (0.00s)
✓ Parse TLS version (0.00s)
✓ Parse TLS version TL sv 1.2 (0.00s)
✓ Parse TLS version TLS 1.0 (0.00s)
✓ Parse TLS version TLS 1.1 (0.00s)
✓ Parse TLS version TLS 1.2 (0.00s)
✓ Parse TLS version TLS 1.3 (0.00s)
✓ Parse TLS version TLS 1.3 (0.00s)
✓ Parse TLS version empty (0.00s)
✓ Parse TLS version invalid (0.00s)
✓ Parse TLS version numeric TLS 1.2 (0.00s)
✓ Parse TLS version numeric TLS 1.3 (0.00s)
✓ Parse cipher suites (0.00s)
✓ Parse cipher suites TLS 1.2 ciphers (0.00s)
✓ Parse cipher suites all invalid (0.00s)
✓ Parse cipher suites empty string (0.00s)
✓ Parse cipher suites mixed formats with spaces (0.00s)
✓ Parse cipher suites multiple IANA names (0.00s)
✓ Parse cipher suites numeric IDs (0.00s)
✓ Parse cipher suites single IANA name (0.00s)
✓ Parse curve preferences (0.00s)
✓ Parse curve preferences PQC curve by numeric ID (0.00s)
✓ Parse curve preferences PQC hybrid curve by name (0.00s)
✓ Parse curve preferences all invalid (0.00s)
✓ Parse curve preferences empty string (0.00s)
✓ Parse curve preferences multiple curves (0.00s)
✓ Parse curve preferences numeric IDs (0.00s)
✓ Parse curve preferences single curve (0.00s)
✓ Parse curve preferences with spaces (0.00s)
✓ To TLS config (0.00s)
✓ To TLS config TLS 1.2 minimum (0.00s)
✓ To TLS config TLS 1.3 minimum (0.00s)
✓ To TLS config default (no config) (0.00s)
✓ To TLS config invalid cipher suites (0.00s)
✓ To TLS config invalid curve preferences (0.00s)
✓ To TLS config invalid min version (0.00s)
✓ To TLS config with PQC curve (0.00s)
✓ To TLS config with curve preferences (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/vcshost:
✓ Allowed (0.00s)
✓ Allowed api.github.com matches github.com (0.00s)
✓ Allowed case is ignored (0.00s)
✓ Allowed empty allowlist matches nothing (0.00s)
✓ Allowed listed host (0.00s)
✓ Allowed suffix lookalike does not match (0.00s)
✓ Allowed unlisted host (0.00s)
✓ Canonical (0.00s)
✓ Canonical api.github.com folds into github.com (0.00s)
✓ Canonical github.com is unchanged (0.00s)
✓ Canonical self hosted is lowercased (0.00s)
✓ Is private (0.00s)
✓ Is private 017 7. 0. 0.1 (0.00s)
✓ Is private 0x 7f. 1 (0.00s)
✓ Is private 1 0. 0. 0. 1:8443 (0.00s)
✓ Is private 12 7. 0. 0.1 (0.00s)
✓ Is private 12 7.1 (0.00s)
✓ Is private 14 0.8 2.12 1.4 (0.00s)
✓ Is private 16 9.25 4.16 9.254 (0.00s)
✓ Is private 19 2.16 8. 1.10 (0.00s)
✓ Is private 19 2.16 8.1 (0.00s)
✓ Is private 1password.com (0.00s)
✓ Is private [ :: 1] (0.00s)
✓ Is private ghe.example.com (0.00s)
✓ Is private gitea (0.00s)
✓ Is private gitea.gitea.svc (0.00s)
✓ Is private gitea.gitea.svc.cluster.local (0.00s)
✓ Is private gitea.home.arpa (0.00s)
✓ Is private github.com (0.00s)
✓ Is private localhost (0.00s)
✓ Is private myservice.cluster.local (0.00s)
✓ Is private printer.local (0.00s)
✓ Is private runner.internal (0.00s)
✓ Is private svc.example.com (0.00s)
✓ Is public (0.00s)
✓ Is public api.github.com (0.00s)
✓ Is public bitbucket.org (0.00s)
✓ Is public covers every hosted provider (0.00s)
✓ Is public github.com (0.00s)
✓ Is public gitlab.com (0.00s)
✓ Is public lookalike is not public (0.00s)
✓ Is public self hosted is not public (0.00s)
✓ Is public uppercase is still public (0.00s)
✓ Join (0.00s)
✓ Parse (0.00s)
✓ Parse allowlist (0.00s)
✓ Parse allowlist api.github.com is canonicalized (0.00s)
✓ Parse allowlist duplicates are collapsed (0.00s)
✓ Parse allowlist empty value yields no host (0.00s)
✓ Parse allowlist https prefixes are normalized (0.00s)
✓ Parse allowlist invalid entry is rejected (0.00s)
✓ Parse allowlist only separators yields no host (0.00s)
✓ Parse allowlist several hosts with spaces (0.00s)
✓ Parse allowlist single host (0.00s)
✓ Parse bare hostname is accepted (0.00s)
✓ Parse empty host (0.00s)
✓ Parse fragment is rejected (0.00s)
✓ Parse http scheme (0.00s)
✓ Parse missing host (0.00s)
✓ Parse normalisation (0.00s)
✓ Parse normalisation a turkish dotted capital i does not impersonate github.com (0.00s)
✓ Parse normalisation an already punycoded host is stable (0.00s)
✓ Parse normalisation http scheme is refused (0.00s)
✓ Parse normalisation port is kept (0.00s)
✓ Parse normalisation root label trailing dot is dropped (0.00s)
✓ Parse normalisation unicode is mapped to punycode (0.00s)
✓ Parse normalisation unicode mapping cannot introduce a URL path (0.00s)
✓ Parse normalisation uppercase host is lowercased (0.00s)
✓ Parse normalisation uppercase scheme is accepted (0.00s)
✓ Parse normalisation userinfo redirection is refused (0.00s)
✓ Parse normalizes case and trailing slash (0.00s)
✓ Parse path is rejected (0.00s)
✓ Parse query is rejected (0.00s)
✓ Parse surrounding spaces are trimmed (0.00s)
✓ Parse unparsable URL (0.00s)
✓ Parse userinfo is rejected (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/sort:
✓ Pipeline run sort by completion time (0.00s)
✓ Pipeline run sort by completion time empty list (0.00s)
✓ Pipeline run sort by completion time same time (0.00s)
✓ Pipeline run sort by completion time single item (0.00s)
✓ Pipeline run sort by completion time sort by completion time (0.00s)
✓ Pipeline run sort by completion time sort by completion time with missing (0.00s)
✓ Pipeline run sort by completion time sort by completion time with one missing (0.00s)
✓ Pipeline run sort by completion time sort with uncompleted item first (0.00s)
✓ Pipeline run sort by start time (0.00s)
✓ Pipeline run sort by start time empty list (0.00s)
✓ Pipeline run sort by start time finished last started first (0.00s)
✓ Pipeline run sort by start time no completion but started first (0.00s)
✓ Pipeline run sort by start time not started yet (0.00s)
✓ Pipeline run sort by start time not started yet single (0.00s)
✓ Pipeline run sort by start time same time (0.00s)
✓ Pipeline run sort by start time single item (0.00s)
✓ Pipeline run sort by start time sort with not-started item first (0.00s)
✓ Runtime sort less (0.00s)
✓ Runtime sort less test cpu 0.5 1 0mi less false (0.00s)
✓ Runtime sort less test cpu 0.5 2 less true (0.00s)
✓ Runtime sort less test cpu 2 1 0mi less false (0.00s)
✓ Runtime sort less test memory 1 gi 1 ki less false (0.00s)
✓ Runtime sort less test memory 1 gi 1 ti less true (0.00s)
✓ Runtime sort less test memory 1 ti 1 ki less false (0.00s)
✓ Runtime sort less test name b a less false (0.00s)
✓ Runtime sort less test name b c less true (0.00s)
✓ Runtime sort less test name c a less false (0.00s)
✓ Sort repositories (0.00s)
✓ Status tmpl (0.00s)
✓ Status tmpl badtemplate (0.00s)
✓ Status tmpl not completed yet come first (0.00s)
✓ Status tmpl same start time (0.00s)
✓ Status tmpl sorted (0.00s)
✓ Status tmpl sorted with displayname (0.00s)
✓ Status tmpl test sorted status nada (0.00s)
✓ Task infos (0.00s)
✓ Task infos same completion time sorts by name (0.00s)
✓ Task infos test sort (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/reconciler:
✓ Build common attributes (0.00s)
✓ Build common attributes nil settings (0.00s)
✓ Build event from pipeline run (0.00s)
✓ Build event from pipeline run build event from pr (0.00s)
✓ Build execute attributes nil condition (0.00s)
✓ Build execute attributes success (0.00s)
✓ Calculate pipeline run duration (0.00s)
✓ Calculate pipeline run duration pipelinerun cancelled (0.00s)
✓ Calculate pipeline run duration pipelinerun completed (0.00s)
✓ Calculate pipeline run duration pipelinerun failed (0.00s)
✓ Calculate pipeline run duration pipelinerun failed due to couldn't get pipeline (0.00s)
✓ Calculate pipeline run duration pipelinerun succeeded (0.00s)
✓ Calculate pipeline run duration pipelinerun timed out (0.00s)
✓ Check state and enqueue (0.00s)
✓ Cleanup pipeline runs (0.00s)
✓ Cleanup pipeline runs no max-keep-runs annotation, using default from config (0.00s)
✓ Cleanup pipeline runs using from annotation (0.00s)
✓ Cleanup pipeline runs using from annotation, as annotation value is less than config (0.00s)
✓ Cleanup pipeline runs using from config, as annotation value is more than config (0.00s)
✓ Controller info for pipeline run (0.00s)
✓ Controller info for pipeline run controller annotation (0.00s)
✓ Controller info for pipeline run default controller without fallback (0.00s)
✓ Controller info for pipeline run fallback controller (0.00s)
✓ Controller info for pipeline run invalid annotation (0.00s)
✓ Controller info for pipeline run null annotation (0.00s)
✓ Copy repository for merge copies mutable spec pointers (0.00s)
✓ Count pipeline run (0.00s)
✓ Count pipeline run provider is forgejo (0.00s)
✓ Count pipeline run provider is git hub app (0.00s)
✓ Count pipeline run provider is git hub enterprise app (0.00s)
✓ Count pipeline run provider is git hub webhook (0.00s)
✓ Count pipeline run provider is git lab (0.00s)
✓ Count pipeline run unsupported provider (0.00s)
✓ Create secret for pipeline run (0.00s)
✓ Create secret for pipeline run create secret already exists succeeds with warning (0.00s)
✓ Create secret for pipeline run create secret generic failure (0.00s)
✓ Create secret for pipeline run happy path with custom git user (0.00s)
✓ Create secret for pipeline run happy path with default git user (0.00s)
✓ Create secret for pipeline run make basic auth secret failure with malformed URL (0.00s)
✓ Create secret for pipeline run missing git-auth-secret annotation (0.00s)
✓ Create secret for pipeline run patch pipeline run failure returns error (0.00s)
✓ Create secret for pipeline run update secret with owner ref failure (0.00s)
✓ Create status with retry (0.00s)
✓ Create status with retry error case (0.00s)
✓ Ctrl opts (0.00s)
✓ Detect provider (0.00s)
✓ Detect provider forgejo provider resolves to gitea (0.00s)
✓ Detect provider known provider (0.00s)
✓ Detect provider no label (0.00s)
✓ Detect provider unknown provider (0.00s)
✓ Earliest failing task run message (0.00s)
✓ Earliest failing task run message all succeeded (0.00s)
✓ Earliest failing task run message empty map (0.00s)
✓ Earliest failing task run message mixed statuses ignores succeeded (0.00s)
✓ Earliest failing task run message nil map (0.00s)
✓ Earliest failing task run message single failure (0.00s)
✓ Earliest failing task run message skips entries without completion time (0.00s)
✓ Earliest failing task run message two failures picks earliest by completion time (0.00s)
✓ Emit timing spans (0.00s)
✓ Emit timing spans cancelled pipeline run maps to cancellation (0.00s)
✓ Emit timing spans completed with skipped tasks maps to success without result message (0.00s)
✓ Emit timing spans failed pipeline run carries failing task run message (0.00s)
✓ Emit timing spans missing annotation emits no spans (0.00s)
✓ Emit timing spans missing completion time emits only wait duration (0.00s)
✓ Emit timing spans missing start time emits no spans (0.00s)
✓ Emit timing spans no application component labels emits neither (0.00s)
✓ Emit timing spans successful pipeline run emits both spans without result message (0.00s)
✓ Emit timing spans timed-out pipeline run maps to timeout (0.00s)
✓ Emit timing spans trace parentage (0.00s)
✓ Emit timing spans validation-error pipeline run falls back to PR condition message (0.00s)
✓ Enqueue queued pipeline runs (0.00s)
✓ Enqueue queued pipeline runs enqueues only the queued runs of that repository (0.00s)
✓ Enqueue queued pipeline runs repository with no queued runs enqueues nothing (0.00s)
✓ Extract span context (0.00s)
✓ Extract span context empty JSON object (0.00s)
✓ Extract span context empty value (0.00s)
✓ Extract span context invalid JSON (0.00s)
✓ Extract span context logs malformed JSON (0.00s)
✓ Extract span context missing annotation (0.00s)
✓ Extract span context valid JSON but invalid traceparent (0.00s)
✓ Extract span context valid annotation (0.00s)
✓ Finalize kind controller info handling (0.00s)
✓ Finalize kind controller info handling controller annotation does not mutate shared run (0.00s)
✓ Finalize kind controller info handling invalid controller annotation (0.00s)
✓ Init git provider client refuses inherited secret with own provider URL (0.00s)
✓ Init git provider client uses global secret without mutating cache (0.00s)
✓ Post final status (0.00s)
✓ Queue pipeline run (0.00s)
✓ Queue pipeline run drops gone keys from retry (0.00s)
✓ Queue pipeline run empty repo name annotation (0.00s)
✓ Queue pipeline run failed to get PR from the q after many iterations (0.00s)
✓ Queue pipeline run merging global repository settings (0.00s)
✓ Queue pipeline run no existing order annotation (0.00s)
✓ Queue pipeline run no new PR acquired (0.00s)
✓ Queue pipeline run no repo found (0.00s)
✓ Queue pipeline run no repo name annotation (0.00s)
✓ Queue pipeline run processes all acquired slots (0.00s)
✓ Queue pipeline run slot release (0.01s)
✓ Queue pipeline run slot release failing state patch releases the queue slot (0.00s)
✓ Queue pipeline run slot release start failure after the state patch keeps the queue slot (0.01s)
✓ Queue pipeline run slot release transient get failure releases the queue slot (0.00s)
✓ Queue pipeline run slot release vanished pipeline run releases the queue slot (0.00s)
✓ Reconcile kind SCM reporting logic (0.00s)
✓ Reconcile kind SCM reporting logic non-running reason - should NOT call update pipeline run to in progress (0.00s)
✓ Reconcile kind SCM reporting logic running reason with SCM reporting PLR started=true - should NOT call update pipeline run to in progress (0.00s)
✓ Reconcile kind SCM reporting logic running reason without SCM reporting PLR started - should call update pipeline run to in progress (0.00s)
✓ Reconcile kind controller info handling (0.00s)
✓ Reconcile kind controller info handling controller annotation does not mutate shared run (0.00s)
✓ Reconcile kind controller info handling fallback controller is copied (0.00s)
✓ Reconcile kind controller info handling invalid controller annotation (0.00s)
✓ Reconcile kind controller info handling null controller annotation (0.00s)
✓ Reconcile kind secret creation does not log on success (0.00s)
✓ Reconciler finalize kind (0.00s)
✓ Reconciler finalize kind cancelled status reported (0.00s)
✓ Reconciler finalize kind completed pipelinerun (0.00s)
✓ Reconciler finalize kind queued pipelinerun (0.00s)
✓ Reconciler finalize kind repo was deleted (0.00s)
✓ Reconciler reconcile kind (0.01s)
✓ Reconciler reconcile kind failed pipelinerun (0.00s)
✓ Reconciler reconcile kind success pipelinerun (0.00s)
✓ Start next pipeline run in queue (0.00s)
✓ Start next pipeline run in queue failing state patch releases the slot and the next one starts (0.00s)
✓ Start next pipeline run in queue gives up (0.00s)
✓ Start next pipeline run in queue gives up a cancelled context releases the slot it just took (0.00s)
✓ Start next pipeline run in queue gives up a malformed key is dropped instead of indexed (0.00s)
✓ Start next pipeline run in queue gives up a queue that keeps returning a removed key is abandoned (0.00s)
✓ Start next pipeline run in queue releases slot for real (0.00s)
✓ Start next pipeline run in queue start failure after the state patch keeps the slot (0.00s)
✓ Start next pipeline run in queue vanished candidate releases its slot and the next one starts (0.00s)
✓ Update pipeline run state (0.00s)
✓ Update pipeline run state already running reported as started should not repatch spec (0.00s)
✓ Update pipeline run state queued to started (0.00s)
✓ Update pipeline run state started to completed (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/resolve:
✓ Assemble task FQDNs (0.00s)
✓ AssembleTaskFQDNsCustom hub without version returns tasks unchanged (0.00s)
✓ AssembleTaskFQDNsEmpty pipeline URL returns tasks unchanged (0.00s)
✓ AssembleTaskFQDNsHttp URL resolves relative tasks (0.00s)
✓ AssembleTaskFQDNsHttps URL resolves relative tasks (0.00s)
✓ AssembleTaskFQDNsHub catalog URL returns tasks unchanged (0.00s)
✓ AssembleTaskFQDNsMixed-Case HTTPS URL resolves relative tasks (0.00s)
✓ AssembleTaskFQDNsRepository file path URL resolves relative tasks (0.00s)
✓ AssembleTaskFQDNsUppercase HTTP URL resolves relative tasks (0.00s)
✓ Custom tasks skipped (0.00s)
✓ Detect name or generate name and schema (0.00s)
✓ Detect name or generate name and schema invalid yaml (0.00s)
✓ Detect name or generate name and schema valid yaml with generate name and api version (0.00s)
✓ Detect name or generate name and schema valid yaml with name and api version (0.00s)
✓ Detect name or generate name and schema yaml without name or generate name (0.00s)
✓ Error message format (0.00s)
✓ Generate name (0.00s)
✓ Generic bad YAML validation (0.00s)
✓ Ignore doc space (0.00s)
✓ In repo should not embed if no annotations (0.00s)
✓ Metadata resolve (0.00s)
✓ Metadata resolve label and annotation for pipelinerun generate name (0.00s)
✓ Metadata resolve label and annotation for pipelinerun name (0.00s)
✓ No pipeline runs (0.00s)
✓ Not tekton document ignore (0.00s)
✓ Original PR name label set (0.00s)
✓ Pipeline V1 stay V1 (0.00s)
✓ Pipeline bundles skipped (0.00s)
✓ Pipeline resolver skipped (0.00s)
✓ Pipeline run pipeline middle (0.00s)
✓ Pipeline run pipeline spec task ref (0.00s)
✓ Pipeline run pipeline spec task spec (0.00s)
✓ Pipeline run pipeline task (0.01s)
✓ Pipeline run remote task bad pac annotations (0.00s)
✓ Pipeline run remote task disabled (0.00s)
✓ Pipeline run remote task not pac annotations (0.00s)
✓ Pipeline run with finally (0.00s)
✓ Pipeline run with finally V1 (0.00s)
✓ Pipeline runs with same name (0.00s)
✓ Pipeline runs with same name different pipelineruns exists (0.00s)
✓ Pipeline runs with same name doesn't pipelinerun generate name exists (0.00s)
✓ Pipeline runs with same name doesn't pipelinerun name exists (0.00s)
✓ Pipeline runs with same name same generate name pipelineruns exists (0.00s)
✓ Pipeline runs with same name same name and generate name pipelineruns exists (0.00s)
✓ Pipeline runs with same name same name pipelineruns exists (0.00s)
✓ Pipeline with finally (0.00s)
✓ Referenced pipeline not in repo (0.00s)
✓ Referenced task not in repo (0.00s)
✓ Remote (0.04s)
✓ Remote error remote pipelinerun is 404 (0.00s)
✓ Remote multiple pipelineruns sharing same remote pipeline with relative tasks, pipeline and tasks all resolve (0.01s)
✓ Remote remote pipeline with remote task from pipeline (0.01s)
✓ Remote remote pipeline with remote task in pipeline overridden from pipelinerun (0.00s)
✓ Remote remote pipelinerun no annotations (0.00s)
✓ Remote remote pipelines with relative tasks (0.01s)
✓ Remote skip fetching multiple pipelines of the same name from pipelinerun annotations and tektondir (0.00s)
✓ Remote skip fetching multiple tasks of the same name from pipelinerun annotations and pipeline annotation (0.00s)
✓ Remote skip fetching multiple tasks of the same name from pipelinerun annotations and tektondir (0.00s)
✓ Report bad tekton yaml (0.00s)
✓ Report bad tekton yaml bad tekton yaml generate name (0.00s)
✓ Report bad tekton yaml bad tekton yaml name (0.00s)
✓ Resolve repository revision propagation (0.00s)
✓ Resolve repository revision propagation empty repository revision leaves the provider to pick its own default (0.00s)
✓ Resolve repository revision propagation explicit repository revision reaches the provider (0.00s)
✓ Shared remote pipeline cache not mutated (0.00s)
✓ Task bundles skipped (0.00s)
✓ Task resolver skipped (0.00s)
✓ Task run pass metadata annotations (0.00s)
✓ V1 beta 1 conversion fixtures are accepted by read tekton types (0.00s)
✓ V1 beta 1 conversion fixtures are accepted by read tekton types pipeline fixture (0.00s)
✓ V1 beta 1 conversion fixtures are accepted by read tekton types pipelinerun fixture (0.00s)
✓ V1 beta 1 conversion fixtures are accepted by read tekton types task fixture (0.00s)
✓ Validation error filtering (0.00s)
✓ Validation error filtering empty schema error should not be reported (0.00s)
✓ Validation error filtering generic bad yaml error should be reported (0.00s)
✓ Validation error filtering non-tekton resource error should not be reported (0.00s)
✓ Validation error filtering tekton resource error should be reported (0.00s)
✓ Validation error filtering tekton v 1beta 1 resource error should be reported (0.00s)
✓ Validation error structure (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/provider/github:
✓ ACL check all issue comment logs shortcut skip (0.00s)
✓ Acl check all (0.01s)
✓ Acl check all err it (0.00s)
✓ Acl check all owner is sender is allowed (0.00s)
✓ Acl check all sender allowed from owner file (0.00s)
✓ Acl check all sender allowed in org (0.00s)
✓ Acl check all sender allowed since collaborator on repo (0.00s)
✓ Acl check all sender not allowed in org (0.00s)
✓ App token generation (0.01s)
✓ App token generation authenticated enterprise payload configures event endpoints (0.00s)
✓ App token generation enterprise host does not match signed repository payload (0.00s)
✓ App token generation installation delivery without repository is skipped (0.00s)
✓ App token generation invalid app id in secret (0.00s)
✓ App token generation invalid private key in secret (0.00s)
✓ App token generation missing webhook signature (0.00s)
✓ App token generation ping delivery without repository is skipped (0.00s)
✓ App token generation repository delivery without repository is refused (0.00s)
✓ App token generation secret found (0.00s)
✓ App token generation secret not found (0.00s)
✓ App token generation signed payload host outside the configured allowlist (0.00s)
✓ App token test APIURL (0.00s)
✓ App token test APIURL fragment is rejected (0.00s)
✓ App token test APIURL loopback test server (0.00s)
✓ App token test APIURL malformed URL (0.00s)
✓ App token test APIURL query is rejected (0.00s)
✓ App token test APIURL remote host (0.00s)
✓ App token test APIURL scheme is rejected (0.00s)
✓ App token test APIURL trailing slash is trimmed (0.00s)
✓ App token test APIURL unexpected path (0.00s)
✓ App token test APIURL unset (0.00s)
✓ App token test APIURL userinfo is rejected (0.00s)
✓ Authenticated API endpoint (0.00s)
✓ Authenticated API endpoint a configured allowlist refuses another host (0.00s)
✓ Authenticated API endpoint a private address is never recorded automatically (0.00s)
✓ Authenticated API endpoint an allowlist without the public host refuses public git hub (0.00s)
✓ Authenticated API endpoint first authenticated self hosted webhook is recorded (0.00s)
✓ Authenticated API endpoint public git hub stays trusted without being recorded (0.00s)
✓ Build graph QL endpoint (0.00s)
✓ Build graph QL endpoint ghe root (0.00s)
✓ Build graph QL endpoint ghe v 3 (0.00s)
✓ Build graph QL endpoint ghe v 3 slash (0.00s)
✓ Build graph QL endpoint public (0.00s)
✓ Build graph QL endpoint public slash (0.00s)
✓ Build graph QL query (0.00s)
✓ Build graph QL query filename with backslash (0.00s)
✓ Build graph QL query filename with both quote and backslash (0.00s)
✓ Build graph QL query filename with double quotes (0.00s)
✓ Build graph QL query no files (0.00s)
✓ Build graph QL query two files (0.00s)
✓ Check policy allowing (0.01s)
✓ Check policy allowing error while getting team membership (0.00s)
✓ Check policy allowing team is not found (0.00s)
✓ Check policy allowing user is a member of the allowed team (0.00s)
✓ Check policy allowing user is not a member of the allowed team (0.00s)
✓ Check sender org membership (0.00s)
✓ Check sender org membership check sender not in org membership (0.00s)
✓ Check sender org membership check sender org membership (0.00s)
✓ Check sender org membership not found on organization (0.00s)
✓ Configure repository (0.00s)
✓ Configure repository non supported event (0.00s)
✓ Configure repository repo create event with no ns template (0.00s)
✓ Configure repository repo create event with ns already exist (0.00s)
✓ Configure repository repo create event with ns template (0.00s)
✓ Configure repository repo create event with repo template (0.00s)
✓ Configure repository repo updated event (0.00s)
✓ Create comment (0.01s)
✓ Create comment create new comment (0.00s)
✓ Create comment dedup logging (0.01s)
✓ Create comment dedup logging logs duplicate detection for multiple markers and edits first (0.00s)
✓ Create comment dedup logging logs edit flow for one existing marker comment (0.00s)
✓ Create comment dedup logging logs full create flow when marker comment does not exist (0.00s)
✓ Create comment dedup logging logs no marker phase when update marker is empty (0.00s)
✓ Create comment nil client error (0.00s)
✓ Create comment no matching comment creates new (0.00s)
✓ Create comment not a pull request error (0.00s)
✓ Create comment skip comment from different user and create new (0.00s)
✓ Create comment update existing comment (0.00s)
✓ Create token (0.47s)
✓ Create token uses event GHEURL for app token (0.00s)
✓ Expand glob and add repo IDs invalid pattern (0.00s)
✓ Fetch app slug (0.01s)
✓ Fetch app slug accepts the api url set client produces (0.00s)
✓ Fetch app slug app endpoint returns 404 (0.00s)
✓ Fetch app slug app endpoint returns malformed JSON (0.00s)
✓ Fetch app slug app returns empty slug (0.00s)
✓ Fetch app slug invalid private key (0.00s)
✓ Fetch app slug rejects invalid app token test URL (0.00s)
✓ Fetch app slug rejects untrusted app URL before sending JWT (0.00s)
✓ Fetch app slug success fetch app slug (0.00s)
✓ Fetch files batch (0.00s)
✓ Fetch files batch http error (0.00s)
✓ Fetch files batch preserves git hub headers (0.00s)
✓ Fetch files batch single batch (0.00s)
✓ Find open pull request by SHA (0.01s)
✓ Find open pull request by SHA matching open PR after ten pages (0.00s)
✓ Find open pull request by SHA matching open PR before and after ten pages returns ambiguity error (0.00s)
✓ Find open pull request by SHA multiple matching open PRs across pages returns ambiguity error (0.00s)
✓ Find open pull request by SHA single matching open PR (0.00s)
✓ Generate namespace and repository name (0.00s)
✓ Generate namespace and repository name empty ns template (0.00s)
✓ Generate namespace and repository name empty repo template (0.00s)
✓ Generate namespace and repository name no template (0.00s)
✓ Generate namespace and repository name template (0.00s)
✓ Get app token rejects invalid token APIURL (0.00s)
✓ Get app token rejects untrusted host (0.00s)
✓ Get app token scopes repository names (0.01s)
✓ Get app token scopes repository names only repository IDs (0.00s)
✓ Get app token scopes repository names only repository names (0.00s)
✓ Get app token scopes repository names repository IDs takes precedence over repository names (0.00s)
✓ Get commit statuses (0.01s)
✓ Get commit statuses check runs API error (0.00s)
✓ Get commit statuses check runs with in progress status (0.00s)
✓ Get commit statuses check runs with mixed conclusions (0.00s)
✓ Get commit statuses check runs with pagination (0.00s)
✓ Get commit statuses commit statuses API error webhook mode (0.00s)
✓ Get commit statuses commit statuses webhook mode (0.00s)
✓ Get commit statuses commit statuses with pagination webhook mode (0.00s)
✓ Get commit statuses nil client returns error (0.00s)
✓ Get commit statuses no check runs returns empty (0.00s)
✓ Get existing check run ID cache (0.20s)
✓ Get existing check run ID cache concurrent calls share single fetch (0.00s)
✓ Get existing check run ID cache retries on transient error (0.20s)
✓ Get existing check run ID cache second call serves from cache (0.00s)
✓ Get existing check run ID from multiple (0.00s)
✓ Get existing failed check run ID (0.00s)
✓ Get existing pending approval check run ID (0.00s)
✓ Get file inside repo (0.00s)
✓ Get file inside repo error cannot get blob (0.00s)
✓ Get file inside repo fail bad encoding (0.00s)
✓ Get file inside repo fail bad json (0.00s)
✓ Get file inside repo fail trying to get a subdir (0.00s)
✓ Get file inside repo ref selection (0.00s)
✓ Get file inside repo ref selection uses SHA when target is empty (0.00s)
✓ Get file inside repo ref selection uses default branch when target is empty and provenance is default branch (0.00s)
✓ Get file inside repo ref selection uses target ref when target is provided (0.00s)
✓ Get files (0.00s)
✓ Get files pull-request (0.00s)
✓ Get files push (0.00s)
✓ Get or update check run status for multiple failed pipeline run (0.61s)
✓ Get pull request (0.00s)
✓ Get pull request caching (0.00s)
✓ Get pull request populates all event fields from PR response (0.00s)
✓ Get pull request returns error on API failure (0.00s)
✓ Get pull requests with commit (0.01s)
✓ Get pull requests with commit api error unauthorized (0.00s)
✓ Get pull requests with commit commit is included in multiple PRs (0.00s)
✓ Get pull requests with commit commit is included in multiple PRs with pagination (0.00s)
✓ Get pull requests with commit commit is not part of any PR (0.00s)
✓ Get pull requests with commit commit is part of one PR and is a merge commit (0.00s)
✓ Get pull requests with commit commit is part of one PR only (0.00s)
✓ Get pull requests with commit empty org returns error (0.00s)
✓ Get pull requests with commit empty repo returns error (0.00s)
✓ Get pull requests with commit empty sha returns error (0.00s)
✓ Get pull requests with commit nil client returns error (0.00s)
✓ Get string pull request comment (0.00s)
✓ Get string pull request comment get string from comments (0.00s)
✓ Get string pull request comment not matching string in comments (0.00s)
✓ Get task URI (0.00s)
✓ Get task URI bad uri (0.00s)
✓ Get task URI get task URI (0.00s)
✓ Get task URI not comparable host (0.00s)
✓ Get tekton dir (0.02s)
✓ Get tekton dir graph QL (0.01s)
✓ Get tekton dir graph QL default branch uses resolved sha for graphql (0.00s)
✓ Get tekton dir graph QL graphql batch fetch reduces api calls (0.00s)
✓ Get tekton dir graph QL graphql error handling (0.00s)
✓ Get tekton dir test no subtree on pull request (0.00s)
✓ Get tekton dir test no subtree on push (0.00s)
✓ Get tekton dir test no tekton directory (0.00s)
✓ Get tekton dir test provenance default branch (0.01s)
✓ Get tekton dir test tekton directory path is file (0.00s)
✓ Get tekton dir test with badly formatted yaml (0.00s)
✓ Get tekton dir test with subtree (0.00s)
✓ Github endpoint from payload (0.00s)
✓ Github endpoint from payload enterprise payload with matching header (0.00s)
✓ Github endpoint from payload invalid json (0.00s)
✓ Github endpoint from payload missing repository URL (0.00s)
✓ Github endpoint from payload public github payload without enterprise header (0.00s)
✓ Github endpoint from payload rejects insecure repository URL (0.00s)
✓ Github endpoint from payload rejects invalid enterprise header (0.00s)
✓ Github endpoint from payload rejects mismatched enterprise header (0.00s)
✓ Github endpoint from payload rejects repository URL with userinfo (0.00s)
✓ Github get commit info (0.01s)
✓ Github get commit info basic fields only (0.00s)
✓ Github get commit info commit with ci skip command in title (0.00s)
✓ Github get commit info commit with skip ci command (0.00s)
✓ Github get commit info commit with skip tkn command in title (0.00s)
✓ Github get commit info commit with tkn skip command in body (0.00s)
✓ Github get commit info default branch already set is preserved (0.00s)
✓ Github get commit info error (0.00s)
✓ Github get commit info good with full commit info (0.00s)
✓ Github get commit info incoming webhook populates default branch (0.00s)
✓ Github get commit info noclient (0.00s)
✓ Github provider create check run (0.61s)
✓ Github provider create status (0.03s)
✓ Github provider create status failure (0.00s)
✓ Github provider create status failure from bot (0.00s)
✓ Github provider create status in progress (0.00s)
✓ Github provider create status no token set (0.00s)
✓ Github provider create status skipped (0.00s)
✓ Github provider create status success (0.00s)
✓ Github provider create status success coming from webhook (0.00s)
✓ Github provider create status success from bot (0.00s)
✓ Github provider create status success with using existing pending approval run checkrun (0.02s)
✓ Github provider create status unknown (0.00s)
✓ Github provider create status validation failure (0.00s)
✓ Github providercreate status commit (0.01s)
✓ Github providercreate status commit completed (0.00s)
✓ Github providercreate status commit in progress (0.00s)
✓ Github providercreate status commit pull request status neutral (0.00s)
✓ Github providercreate status commit pull request status pending (0.00s)
✓ Github set client (0.00s)
✓ Github set client a repository url that is not trusted is refused (0.00s)
✓ Github set client api url set (0.00s)
✓ Github set client default to public github (0.00s)
✓ Github set client invalid enterprise URL (0.00s)
✓ Github set client preauthenticated client (0.00s)
✓ Github set client preauthenticated client an untrusted host is kept when the caller built the client (0.00s)
✓ Github set client preauthenticated client an untrusted host is refused when the provider builds the client (0.00s)
✓ Github set client uses signed enterprise endpoint (0.00s)
✓ Github set client uses signed enterprise endpoint forged enterprise host (0.00s)
✓ Github set client uses signed enterprise endpoint matching signed enterprise host (0.00s)
✓ Github set client uses signed enterprise endpoint missing webhook secret fails before endpoint derivation (0.00s)
✓ Github set client uses signed enterprise endpoint signature validation fails before endpoint derivation (0.00s)
✓ Github set client uses signed enterprise endpoint signed enterprise host outside the controller allowlist (0.00s)
✓ Github set client uses signed enterprise endpoint signed enterprise host with an unconfigured allowlist (0.00s)
✓ Github split URL (0.00s)
✓ Github split URL bad formatted ghe url (0.00s)
✓ Github split URL invalid no path URL (0.00s)
✓ Github split URL not a full direct url (0.00s)
✓ Github split URL not matching ghe but allowed from public gh (0.00s)
✓ Github split URL not matching raw (0.00s)
✓ Github split URL raw GHE URL (0.00s)
✓ Github split URL split URL (0.00s)
✓ Github split URL split URL with encoding emoji in branch (0.00s)
✓ Github split URL split URL with slash in branch (0.00s)
✓ Github split URL split URL with url encoding emoji in filename (0.00s)
✓ Github split URL split raw URL (0.00s)
✓ Github split URL split raw URL2 (0.00s)
✓ Github split URL too small URL (0.00s)
✓ If pull request is for same repo without fork (0.01s)
✓ If pull request is for same repo without fork when check run rerequest resolves to same repo pull request the shortcut is applied (0.00s)
✓ If pull request is for same repo without fork when check suite rerequest resolves to same repo pull request the shortcut is applied (0.00s)
✓ If pull request is for same repo without fork when head URL is not populated on the event (0.00s)
✓ If pull request is for same repo without fork when issue comment sender is not trusted, same repo shortcut is not applied (0.00s)
✓ If pull request is for same repo without fork when pull request raised by non owner to the repository where non owner did not fork but have permission to create branch (0.00s)
✓ If pull request is for same repo without fork when pull request raised by non owner to the repository where non owner don't have any permissions (0.00s)
✓ Is commit part of pull request (0.00s)
✓ Is commit part of pull request commit is not part of any PR (0.00s)
✓ Is commit part of pull request commit is part of an open PR (0.00s)
✓ Is commit part of pull request commit is part of closed PR only (0.00s)
✓ Is commit part of pull request multiple PRs but only one is open (0.00s)
✓ Is head commit of branch (0.00s)
✓ Is head commit of branch sha doesn't exist in the branch (0.00s)
✓ Is head commit of branch sha exist in the branch (0.00s)
✓ List repos (0.00s)
✓ Make client enterprise URLs (0.00s)
✓ MakeClientEnterpriseURLsEnterprise API URL (0.00s)
✓ MakeClientEnterpriseURLsEnterprise API URL with trailing slash (0.00s)
✓ MakeClientEnterpriseURLsEnterprise base URL (0.00s)
✓ Ok to test comment (0.05s)
✓ Ok to test comment SHA (0.01s)
✓ Ok to test comment SHA bad issue comment event with sha (0.00s)
✓ Ok to test comment SHA bad issue comment event without sha when required (0.00s)
✓ Ok to test comment SHA good issue comment event with sha (0.00s)
✓ Ok to test comment SHA good issue comment event with sha and custom prefix (0.00s)
✓ Ok to test comment SHA good issue comment event without sha (0.00s)
✓ Ok to test comment bad event origin (0.00s)
✓ Ok to test comment bad event origin without remember (0.00s)
✓ Ok to test comment good issue comment event (0.00s)
✓ Ok to test comment good issue comment event with custom prefix (0.00s)
✓ Ok to test comment good issue comment event without remember (0.01s)
✓ Ok to test comment good issue pull request event (0.00s)
✓ Ok to test comment good issue pull request event without remember (0.00s)
✓ Ok to test comment no-ok-to-test (0.00s)
✓ Ok to test comment no-ok-to-test without remember (0.00s)
✓ Ok to test comment ok-to-test-not-from-owner (0.01s)
✓ Ok to test comment ok-to-test-not-from-owner without remember (0.00s)
✓ Parse TS (0.00s)
✓ Parse TS invalid (0.00s)
✓ Parse TS valid as defined by go-github (0.00s)
✓ Parse TS valid with UTC and eu time (0.00s)
✓ Parse TS valid with timezone inside (0.00s)
✓ Parse event type missing header (0.00s)
✓ Parse pay load (0.10s)
✓ Parse pay load bad check run only issue recheck supported (0.00s)
✓ Parse pay load bad check run only with github apps (0.00s)
✓ Parse pay load bad commit comment for cancel a pr with invalid branch name (0.00s)
✓ Parse pay load bad commit comment for event has no repository reference (0.00s)
✓ Parse pay load bad commit comment for test command does not contain branch keyword (0.00s)
✓ Parse pay load bad commit comment for test tag invalid object type (0.00s)
✓ Parse pay load bad commit comment for test with pipelinerun name and wrong tag keyword (0.00s)
✓ Parse pay load bad commit comment retest only with github apps (0.00s)
✓ Parse pay load bad invalid json (0.00s)
✓ Parse pay load bad issue comment no matching repo (0.00s)
✓ Parse pay load bad issue comment not coming from pull request (0.00s)
✓ Parse pay load bad no repository cr matched (0.00s)
✓ Parse pay load bad not supported (0.00s)
✓ Parse pay load bad pull request (0.00s)
✓ Parse pay load bad push (0.00s)
✓ Parse pay load bad rerequest check run null head branch ambiguous fallback PRs found (0.00s)
✓ Parse pay load bad rerequest check run null head branch no PR found (0.00s)
✓ Parse pay load bad rerequest check run null head branch only closed PRs found (0.00s)
✓ Parse pay load bad rerequest check run with multiple check suite pull requests in payload (0.00s)
✓ Parse pay load bad rerequest check run with multiple pull requests in payload (0.00s)
✓ Parse pay load bad rerequest check suite null head branch multiple open PRs found (0.00s)
✓ Parse pay load bad rerequest check suite null head branch no PR found (0.00s)
✓ Parse pay load bad rerequest check suite with multiple pull requests in payload (0.00s)
✓ Parse pay load bad rerequest error fetching PR (0.00s)
✓ Parse pay load bad unknown event (0.00s)
✓ Parse pay load branch deleted (0.00s)
✓ Parse pay load commit comment to retest a pr with a SHA is not HEAD commit of the main branch (0.00s)
✓ Parse pay load commit comment to retest a pr with a merge commit (0.00s)
✓ Parse pay load good commit comment for cancel a pr (0.00s)
✓ Parse pay load good commit comment for cancel a pr with branch name (0.00s)
✓ Parse pay load good commit comment for cancel a pr with prefix (0.00s)
✓ Parse pay load good commit comment for cancel all (0.00s)
✓ Parse pay load good commit comment for cancel all with branch name (0.00s)
✓ Parse pay load good commit comment for retest a pr (0.00s)
✓ Parse pay load good commit comment for retest a pr with prefix (0.00s)
✓ Parse pay load good commit comment for retest all (0.00s)
✓ Parse pay load good commit comment for retest with branch name (0.00s)
✓ Parse pay load good commit comment for test a pr with prefix (0.00s)
✓ Parse pay load good commit comment for test tag with object type commit (0.00s)
✓ Parse pay load good commit comment for test with pipelinerun name and tag (0.00s)
✓ Parse pay load good commit comment for test with tag (0.00s)
✓ Parse pay load good commit comment want pull request number (0.00s)
✓ Parse pay load good issue comment (0.00s)
✓ Parse pay load good issue comment for cancel a pr (0.00s)
✓ Parse pay load good issue comment for cancel all (0.00s)
✓ Parse pay load good issue comment for cancel with prefix (0.00s)
✓ Parse pay load good issue comment for retest (0.00s)
✓ Parse pay load good issue comment for retest with prefix (0.00s)
✓ Parse pay load good issue comment for test with prefix (0.00s)
✓ Parse pay load good issue comment without gh client initializes webhook client (0.00s)
✓ Parse pay load good pull request (0.00s)
✓ Parse pay load good pull request closed (0.00s)
✓ Parse pay load good push (0.00s)
✓ Parse pay load good rerequest check run ignores commit API PR when SHA is not PR head (0.00s)
✓ Parse pay load good rerequest check run null head branch resolves PR from SHA (0.00s)
✓ Parse pay load good rerequest check run null head branch resolves fork PR from open PR list (0.00s)
✓ Parse pay load good rerequest check run on pull request (0.00s)
✓ Parse pay load good rerequest check run resolves PR from check run pull requests (0.00s)
✓ Parse pay load good rerequest check suite null head branch resolves PR from SHA (0.00s)
✓ Parse pay load good rerequest check suite on pull request (0.00s)
✓ Parse pay load good rerequest on push (0.00s)
✓ Parse pay load good skip push event for skip-pr-commits setting (0.00s)
✓ Parse pay load good skip tag push event for skip-pr-commits setting (0.00s)
✓ Provider check webhook secret validity (0.01s)
✓ Provider check webhook secret validity api error (0.00s)
✓ Provider check webhook secret validity expired (0.00s)
✓ Provider check webhook secret validity no header but no remaining scim calls (0.00s)
✓ Provider check webhook secret validity no header mean unlimited (0.00s)
✓ Provider check webhook secret validity no remaining scim calls (0.00s)
✓ Provider check webhook secret validity not enabled (0.00s)
✓ Provider check webhook secret validity not enabled# 01 (0.00s)
✓ Provider check webhook secret validity remaining scim calls (0.00s)
✓ Provider check webhook secret validity resp is nil (0.00s)
✓ Provider check webhook secret validity skipping api rate limit is not enabled (0.00s)
✓ Provider check webhook secret validity skipping because scim is not available (0.00s)
✓ Provider detect (0.01s)
✓ Provider detect commit comment event with cancel comment (0.00s)
✓ Provider detect commit comment event with ok-to-test being ignore as git ops command on pushed commits (0.00s)
✓ Provider detect commit comment event with retest (0.00s)
✓ Provider detect commit comment event with test (0.00s)
✓ Provider detect invalid check run event (0.00s)
✓ Provider detect invalid github event (0.00s)
✓ Provider detect invalid issue comment event (0.00s)
✓ Provider detect issue comment event with cancel comment (0.00s)
✓ Provider detect issue comment event with cancel comment (0.00s)
✓ Provider detect issue comment event with no valid comment (0.00s)
✓ Provider detect issue comment event with ok-to-test and some string (0.00s)
✓ Provider detect issue comment event with ok-to-test comment (0.00s)
✓ Provider detect issue comment event with retest (0.00s)
✓ Provider detect issue comment event with retest with some string (0.00s)
✓ Provider detect non standard commit comment event (0.00s)
✓ Provider detect not a github event (0.00s)
✓ Provider detect pull request event (0.00s)
✓ Provider detect pull request event converted from draft to active (0.00s)
✓ Provider detect pull request event not supported action (0.00s)
✓ Provider detect push event (0.00s)
✓ Provider detect unsupported event (0.00s)
✓ Provider detect valid check run event (0.00s)
✓ Provider detect valid check suite event (0.00s)
✓ Provider get existing check run ID (0.60s)
✓ Provider get existing check run ID error it (0.60s)
✓ Provider get existing check run ID has check runs (0.00s)
✓ Provider get existing check run ID no check runs (0.00s)
✓ Rate limit warnings (0.00s)
✓ Rate limit warnings critical rate limit (0.00s)
✓ Rate limit warnings info rate limit (0.00s)
✓ Rate limit warnings normal rate limit (0.00s)
✓ Rate limit warnings warning rate limit (0.00s)
✓ Resolve untrusted API endpoint (0.00s)
✓ Resolve untrusted API endpoint enterprise host (0.00s)
✓ Resolve untrusted API endpoint insecure scheme (0.00s)
✓ Resolve untrusted API endpoint invalid path (0.00s)
✓ Resolve untrusted API endpoint public API host (0.00s)
✓ Resolve untrusted API endpoint public repository host (0.00s)
✓ Retry options (0.00s)
✓ Retry options disabled by default (0.00s)
✓ Retry options enabled with settings (0.00s)
✓ Retry options nil pacinfo (0.00s)
✓ Scope token to list of repos (0.02s)
✓ Scope token to list of repos failed to scope git hub token to a list of repositories provided by repo level as repo scoped key secret-github-app-token-scoped is enabled (0.00s)
✓ Scope token to list of repos glob pattern that matches no repos returns error (0.00s)
✓ Scope token to list of repos invalid glob pattern in global config returns error (0.00s)
✓ Scope token to list of repos invalid glob pattern returns error (0.00s)
✓ Scope token to list of repos malformed pattern in global config with extra path segments returns error (0.00s)
✓ Scope token to list of repos malformed pattern with extra path segments returns error (0.00s)
✓ Scope token to list of repos malformed repository URL with extra path segments returns error (0.00s)
✓ Scope token to list of repos repo exist and repos are listed under both repo level and global configuration (0.00s)
✓ Scope token to list of repos repos are listed under global configuration (0.00s)
✓ Scope token to list of repos repos are listed under repo level configuration (0.00s)
✓ Scope token to list of repos repos are listed under repo level configuration but listed repo doesn't exist in namespace (0.00s)
✓ Scope token to list of repos repos are listed using both glob pattern and exact match (0.00s)
✓ Scope token to list of repos successfully scoped git hub token to a list of repositories provided by global and repo level even though secret-github-app-token-scoped key is enabled because global configuration takes precedence (0.00s)
✓ Set client fallback scopes token (0.01s)
✓ Set client fallback scopes token scopes by both (0.00s)
✓ Set client fallback scopes token scopes by repository IDs (0.00s)
✓ Set client fallback scopes token scopes by repository names (0.00s)
✓ Skip push event for PR commits (0.00s)
✓ Skip push event for PR commits continue processing push event when commit is not part of PR (0.00s)
✓ Skip push event for PR commits continue when skip feature is disabled (0.00s)
✓ Skip push event for PR commits log warning when API error occurs (0.00s)
✓ Skip push event for PR commits skip push event when commit is part of an open PR (0.00s)
✓ Trusted API endpoint for host (0.00s)
✓ Trusted API endpoint for host empty host defaults to public git hub (0.00s)
✓ Trusted API endpoint for host insecure scheme is rejected (0.00s)
✓ Trusted API endpoint for host trusted self hosted host (0.00s)
✓ Trusted API endpoint for host untrusted self hosted host (0.00s)
✓ Trusted API endpoint for repository (0.00s)
✓ Trusted API endpoint for repository fragment is rejected (0.00s)
✓ Trusted API endpoint for repository http scheme is rejected (0.00s)
✓ Trusted API endpoint for repository invalid allowlist is reported (0.00s)
✓ Trusted API endpoint for repository public git hub needs no allowlist (0.00s)
✓ Trusted API endpoint for repository query string is rejected (0.00s)
✓ Trusted API endpoint for repository self hosted needs a trusted host (0.00s)
✓ Trusted API endpoint for repository trusted self hosted repository (0.00s)
✓ Trusted API endpoint for repository untrusted repository host is refused (0.00s)
✓ Trusted API endpoint for repository userinfo is rejected (0.00s)
✓ Validate (0.00s)
✓ Validate app webhook signature requires controller secret (0.00s)
✓ Validate bad signature (0.00s)
✓ Validate good SHA1 signature (0.00s)
✓ Validate good SHA256 signature (0.00s)
✓ Wrap API (0.00s)
✓ Wrap API API 404 logs at debug level (0.00s)
✓ Wrap API non-404 error logs at error level (0.00s)
✓ Wrap API response is nil (0.00s)
✓ Wrap get contents (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/provider/gitlab:
✓ Check membership (0.01s)
✓ Check membership api failure + owners allowed (0.00s)
✓ Check membership api failure + owners denied (0.00s)
✓ Check membership cache initialization (0.00s)
✓ Check membership gitlab member + owners allowed (0.00s)
✓ Check membership gitlab member + owners denied (0.00s)
✓ Check membership gitlab not member + owners allowed (0.00s)
✓ Check membership gitlab not member + owners denied (0.00s)
✓ Client options (0.00s)
✓ Client options disabled keeps client defaults (0.00s)
✓ Client options enabled adds retry options (0.00s)
✓ Client options nil pacinfo keeps client defaults (0.00s)
✓ Client retry attempts (5.34s)
✓ Client retry attempts disabled keeps client default retries (1.33s)
✓ Client retry attempts enabled honors total attempt limit (1.86s)
✓ Client retry attempts enabled with unset max attempts uses default (2.15s)
✓ Create status (0.04s)
✓ Create status cancelled conclusion (0.00s)
✓ Create status commit status fails with state transition error skips MR comment (0.00s)
✓ Create status commit status falls back to target project (0.00s)
✓ Create status commit status success on source project (0.00s)
✓ Create status completed conclusion (0.00s)
✓ Create status completed conclusion for gitops command on pushed commit (0.00s)
✓ Create status completed with a details url (0.00s)
✓ Create status failure conclusion (0.00s)
✓ Create status generic error on both projects creates MR comment (0.00s)
✓ Create status gitops comments completed (0.00s)
✓ Create status neutral conclusion (0.00s)
✓ Create status no client has been set (0.00s)
✓ Create status pending conclusion (0.00s)
✓ Create status pending conclusion for gitops command on pushed commit (0.00s)
✓ Create status permission error 401 on source creates MR comment (0.00s)
✓ Create status permission error 403 on source creates MR comment (0.00s)
✓ Create status pipeline ID first call discovers and caches (0.00s)
✓ Create status pipeline ID read from annotation (0.00s)
✓ Create status pipeline ID same project fallback preserves annotation (0.00s)
✓ Create status pipeline ID shared across pipeline runs (0.00s)
✓ Create status pipeline ID target fallback reads annotation (0.00s)
✓ Create status pipeline ID target fallback without annotation (0.00s)
✓ Create status pipeline ID zero in response does not cache (0.00s)
✓ Create status skip in progress (0.00s)
✓ Create status skipped conclusion (0.00s)
✓ Create status success conclusion (0.00s)
✓ Extract git lab info (0.00s)
✓ Extract git lab info custom host (0.00s)
✓ Extract git lab info long group and subgroups (0.00s)
✓ Extract git lab info org repo (0.00s)
✓ Get commit info (0.01s)
✓ Get commit info accept canonical metadata SHA with different hex casing (0.00s)
✓ Get commit info basic fields only (0.00s)
✓ Get commit info branch creation commit lookup failure (0.00s)
✓ Get commit info event with existing SHA makes no API call (0.00s)
✓ Get commit info good with full commit info (0.00s)
✓ Get commit info no client error (0.00s)
✓ Get commit info reject branch creation metadata for a different SHA (0.00s)
✓ Get commit info resolve branch creation metadata by event SHA (0.00s)
✓ Get commit statuses (0.00s)
✓ Get commit statuses falls back to provider source project id when event source project id is empty (0.00s)
✓ Get commit statuses falls back to target project when source project lookup fails (0.00s)
✓ Get commit statuses uses event source project statuses (0.00s)
✓ Get config (0.00s)
✓ Get file inside repo (0.01s)
✓ Get file inside repo branch creation uses explicit default branch revision (0.00s)
✓ Get file inside repo branch creation uses explicit source revision (0.00s)
✓ Get file inside repo branch creation without explicit target uses event SHA (0.00s)
✓ Get file inside repo empty SHA uses head branch (0.00s)
✓ Get file inside repo missing file returns an error (0.00s)
✓ Get file inside repo non push trigger target uses event SHA (0.00s)
✓ Get file inside repo ordinary event uses event SHA (0.00s)
✓ Get file inside repo push creating a branch with commits uses event SHA (0.00s)
✓ Get file inside repo push whose SHA differs from the payload after SHA uses event SHA (0.00s)
✓ Get file inside repo zero SHA uses head branch (0.00s)
✓ Get files (0.01s)
✓ Get files merge request exceeding gitlab diff API (0.00s)
✓ Get files paging (0.01s)
✓ Get files paging pull-request (0.00s)
✓ Get files paging push (0.00s)
✓ Get files pull-request (0.00s)
✓ Get files pull-request with wrong project ID (0.00s)
✓ Get files push (0.00s)
✓ Get repository lock (0.00s)
✓ Get task URI (0.01s)
✓ Get task URI API error on get project (0.00s)
✓ Get task URI API error on get raw file (0.00s)
✓ Get task URI different host - should return not found (0.00s)
✓ Get task URI file not found (40 4) (0.00s)
✓ Get task URI invalid gitlab URL format (0.00s)
✓ Get task URI project not found (40 4) (0.00s)
✓ Get task URI success (0.00s)
✓ Get tekton dir (0.03s)
✓ Get tekton dir bad yaml (0.00s)
✓ Get tekton dir get file raw api call error (0.00s)
✓ Get tekton dir list tekton dir for branch creation by event SHA (0.00s)
✓ Get tekton dir list tekton dir for branch creation carrying commits uses event SHA (0.00s)
✓ Get tekton dir list tekton dir for branch creation from default branch (0.00s)
✓ Get tekton dir list tekton dir no - -- prefix (0.00s)
✓ Get tekton dir list tekton dir on default branch (0.00s)
✓ Get tekton dir list tekton dir on pull request (0.00s)
✓ Get tekton dir list tekton dir on push (0.00s)
✓ Get tekton dir list tekton dir tree api call error (0.00s)
✓ Get tekton dir list tekton dir with empty SHA uses head branch (0.00s)
✓ Get tekton dir list tekton dir with zero SHA uses head branch (0.00s)
✓ Get tekton dir no client set (0.00s)
✓ Get tekton dir not found, no err (0.00s)
✓ Git lab create comment (0.01s)
✓ Git lab create comment create new comment (0.00s)
✓ Git lab create comment nil client error (0.00s)
✓ Git lab create comment no matching comment creates new (0.00s)
✓ Git lab create comment not a merge request error (0.00s)
✓ Git lab create comment paging (0.00s)
✓ Git lab create comment skip comment from different user and create new (0.00s)
✓ Git lab create comment update existing comment (0.00s)
✓ Git lab retry backoff transient (0.00s)
✓ Git lab retry backoff transient later attempts grow but stay bounded (0.00s)
✓ Git lab retry backoff transient network failure without response stays short (0.00s)
✓ Git lab retry backoff transient server error ignores rate limit headers (0.00s)
✓ Git lab retry policy methods (0.00s)
✓ Git lab retry policy methods do not retry server error for POST (0.00s)
✓ Git lab retry policy methods retry rate limit for POST (0.00s)
✓ Git lab retry policy methods retry server error for GET (0.00s)
✓ Git lab retry policy network errors (0.00s)
✓ Git lab retry policy network errors do not retry network error for POST (0.00s)
✓ Git lab retry policy network errors retry network error for GET (0.00s)
✓ Git lab retry wait cap (0.00s)
✓ Init git lab client skips token auto rotation (0.00s)
✓ Introspect token (0.00s)
✓ Introspect token server error (0.00s)
✓ Introspect token unauthorized (0.00s)
✓ Introspect token valid active token (0.00s)
✓ Is allowed (0.01s)
✓ Is allowed allowed as member of project (0.00s)
✓ Is allowed allowed from ok-to-test with remember OK to test disabled (0.00s)
✓ Is allowed allowed from ok-to-test with remember OK to test enabled (0.00s)
✓ Is allowed allowed from ownerfile (0.00s)
✓ Is allowed allowed when ok-to-test is in a reply note (0.00s)
✓ Is allowed check client has been set (0.00s)
✓ Is allowed disallowed from non authorized note (0.00s)
✓ Is allowed owners file (0.01s)
✓ Is allowed owners file no owners file (0.00s)
✓ Is allowed owners file owners aliases returns error status (0.00s)
✓ Is allowed owners file owners aliases returns internal server error (0.00s)
✓ Is allowed owners file owners file allows user (0.00s)
✓ Is allowed owners file owners file denies user (0.00s)
✓ Is allowed owners file owners file with aliases file exists (0.00s)
✓ Is allowed owners file owners file with aliases not found (0.00s)
✓ Is branch creation payload (0.00s)
✓ Is branch creation payload branch creation push (0.00s)
✓ Is branch creation payload branch deletion (0.00s)
✓ Is branch creation payload branch ref without a branch name (0.00s)
✓ Is branch creation payload malformed after SHA (0.00s)
✓ Is branch creation payload push onto an existing branch (0.00s)
✓ Is branch creation payload tag creation is not a branch creation (0.00s)
✓ Is head commit of branch (0.00s)
✓ Is head commit of branch bad SHA is not HEAD of the branch (0.00s)
✓ Is head commit of branch bad branch doesn't exist (0.00s)
✓ Is head commit of branch bad client is not initialized (0.00s)
✓ Is head commit of branch bad user is not authorized (0.00s)
✓ Is head commit of branch good SHA is HEAD commit (0.00s)
✓ Is token auto rotation enabled (0.00s)
✓ Is token auto rotation enabled empty git provider secret name (0.00s)
✓ Is token auto rotation enabled explicitly false (0.00s)
✓ Is token auto rotation enabled explicitly true (0.00s)
✓ Is token auto rotation enabled nil git provider (0.00s)
✓ Is token auto rotation enabled nil git provider secret (0.00s)
✓ Is token auto rotation enabled nil gitlab settings (0.00s)
✓ Is token auto rotation enabled nil repo (0.00s)
✓ Is token auto rotation enabled nil settings (0.00s)
✓ Is token auto rotation enabled nil token auto rotation (0.00s)
✓ Is valid commit SHA (0.00s)
✓ Is valid commit SHA abbreviated SHA (0.00s)
✓ Is valid commit SHA all zero SHA (0.00s)
✓ Is valid commit SHA correct length but not hexadecimal (0.00s)
✓ Is valid commit SHA empty SHA (0.00s)
✓ Is valid commit SHA lowercase hexadecimal SHA (0.00s)
✓ Is valid commit SHA one character too long (0.00s)
✓ Is valid commit SHA single non hexadecimal character (0.00s)
✓ Is valid commit SHA uppercase hexadecimal SHA (0.00s)
✓ Maybe rotate token (0.01s)
✓ Maybe rotate token PAT rotation fails with 40 5, fallback to project token (0.00s)
✓ Maybe rotate token introspection fails (0.00s)
✓ Maybe rotate token rotation returns 403 missing scope (0.00s)
✓ Maybe rotate token secret update fails (0.00s)
✓ Maybe rotate token secret write denied aborts rotation before revoking old token (0.00s)
✓ Maybe rotate token token expired and unauthorized (0.00s)
✓ Maybe rotate token token expiring soon and rotated (0.00s)
✓ Maybe rotate token token expiring soon and rotated with nil secret data (0.00s)
✓ Maybe rotate token token expiring soon and rotated without expiry (0.00s)
✓ Maybe rotate token token no expiry (0.00s)
✓ Maybe rotate token token not expiring soon (0.00s)
✓ Membership API failure does not cache api error (0.00s)
✓ Membership caching (0.00s)
✓ Needs rotation (0.00s)
✓ Needs rotation expires after threshold (0.00s)
✓ Needs rotation expires within threshold (0.00s)
✓ Needs rotation no expiry (0.00s)
✓ Needs rotation not active (0.00s)
✓ Owners aliases response error (0.00s)
✓ Owners aliases response error nil embedded HTTP response (0.00s)
✓ Owners aliases response error nil response (0.00s)
✓ Owners aliases response error nil response preserves upstream error (0.00s)
✓ Owners aliases response error not found is optional (0.00s)
✓ Owners aliases response error successful response (0.00s)
✓ Owners aliases response error successful status preserves body error (0.00s)
✓ Owners aliases response error unexpected status without API error (0.00s)
✓ Parse payload (0.03s)
✓ Parse payload bad commit comment SHA does not match tag commit (0.00s)
✓ Parse payload bad commit comment repository is nil (0.00s)
✓ Parse payload bad commit comment tag does not exist (0.00s)
✓ Parse payload bad commit comment wrong branch keyword (0.00s)
✓ Parse payload bad payload (0.00s)
✓ Parse payload event not supported (0.00s)
✓ Parse payload good commit comment cancel all pipelineruns (0.00s)
✓ Parse payload good commit comment cancel on a tag (0.00s)
✓ Parse payload good commit comment retest a single pipelinerun (0.00s)
✓ Parse payload good commit comment retest a single pipelinerun# 01 (0.00s)
✓ Parse payload good commit comment retest all pipelineruns (0.00s)
✓ Parse payload good commit comment retest on a tag (0.00s)
✓ Parse payload good commit comment test a single pipelinerun (0.00s)
✓ Parse payload good commit comment test all pipelineruns (0.00s)
✓ Parse payload good commit comment test on a tag (0.00s)
✓ Parse payload merge event (0.00s)
✓ Parse payload merge event closed (0.00s)
✓ Parse payload note event (0.00s)
✓ Parse payload note event cancel a pr (0.00s)
✓ Parse payload note event cancel all (0.00s)
✓ Parse payload note event test (0.00s)
✓ Parse payload push event (0.00s)
✓ Parse payload push event creates branch without commits (0.00s)
✓ Parse payload push event deletes branch without commits (0.00s)
✓ Parse payload push event no commits (0.00s)
✓ Parse payload push event with multiple commits uses the last commit (0.00s)
✓ Parse payload push event without commits is not branch creation when before is nonzero (0.00s)
✓ Parse payload push event without commits rejects empty after SHA (0.00s)
✓ Parse payload push event without commits rejects empty before SHA (0.00s)
✓ Parse payload push event without commits rejects empty branch name (0.00s)
✓ Parse payload push event without commits rejects invalid after SHA (0.00s)
✓ Parse payload push event without commits rejects non hexadecimal after SHA (0.00s)
✓ Parse payload push event without commits rejects tag ref (0.00s)
✓ Parse payload tag event (0.00s)
✓ Provider detect (0.01s)
✓ Provider detect bad commit comment unsupported action (0.00s)
✓ Provider detect bad commit comment unsupported gitops command (0.00s)
✓ Provider detect bad commit comment unsupported large comment (0.00s)
✓ Provider detect bad invalid gitlab event (0.00s)
✓ Provider detect bad merge request closed event (0.00s)
✓ Provider detect bad merge request update event with label addition and description change (0.00s)
✓ Provider detect bad merge request update event with label addition on draft to ready transition (0.00s)
✓ Provider detect bad merge request update event with label addition on ready to draft transition (0.00s)
✓ Provider detect bad merge request update event with label removal (0.00s)
✓ Provider detect bad merge request update event with label removal partial (0.00s)
✓ Provider detect bad not a gitlab event (0.00s)
✓ Provider detect bad note event with ok-to-test comment (0.00s)
✓ Provider detect good commit comment cancel command (0.00s)
✓ Provider detect good commit comment retest command (0.00s)
✓ Provider detect good commit comment test command (0.00s)
✓ Provider detect good issue comment event with cancel (0.00s)
✓ Provider detect good issue comment event with cancel a pr (0.00s)
✓ Provider detect good issue comment event with ok-to-test and some string (0.00s)
✓ Provider detect good issue comment event with retest (0.00s)
✓ Provider detect good merge request open event (0.00s)
✓ Provider detect good merge request update event with commit (0.00s)
✓ Provider detect good merge request update event with description (0.00s)
✓ Provider detect good merge request update event with label addition (0.00s)
✓ Provider detect good merge request update event with label addition and removal (0.00s)
✓ Provider detect good merge request update event with label addition and updated at metadata (0.00s)
✓ Provider detect good merge request update event with title (0.00s)
✓ Provider detect good note event (0.00s)
✓ Provider detect good push event (0.00s)
✓ Provider detect good tag event (0.00s)
✓ Rotate token fallback to project token (0.00s)
✓ Rotate token skips project fallback without target project ID (0.00s)
✓ Set client (0.00s)
✓ Set client detect APIURL (0.00s)
✓ Set client detect APIURL error: inherited credential with a payload derived host (0.00s)
✓ Set client detect APIURL error: invalid URL from event. URL (0.00s)
✓ Set client detect APIURL error: invalid URL from event. provider. URL (final parse) (0.00s)
✓ Set client detect APIURL error: invalid URL from v.repo URL (final parse) (0.00s)
✓ Set client detect APIURL error: no token provided (0.00s)
✓ Set client detect APIURL success: API URL from event. URL (0.00s)
✓ Set client detect APIURL success: API URL from event. provider. URL (highest precedence) (0.00s)
✓ Set client detect APIURL success: API URL from v.repo URL (non-public) (0.00s)
✓ Set client detect APIURL success: default URL when repo URL is public git lab (0.00s)
✓ Set client detect APIURL success: fallback to default public API URL (0.00s)
✓ Set client detect APIURL success: inherited credential with an explicit provider url (0.00s)
✓ Set client fields initialized on error (0.00s)
✓ Set client fields initialized on error fields initialized even when project access fails (0.00s)
✓ Set client fields initialized on error fields initialized when invalid URL causes error (0.00s)
✓ Set client project token fallback uses target project ID (0.00s)
✓ Set client repository access check (0.00s)
✓ Set client repository access check non-pull request trigger should skip access check (0.00s)
✓ Set client repository access check pull request with not found should return specific error (0.00s)
✓ Set client repository access check pull request with successful access (0.00s)
✓ Set client returns error when rotated token cannot be stored (0.00s)
✓ Set client skips token auto rotation for global repository secret (0.00s)
✓ Set client skips token auto rotation without repository secret (0.00s)
✓ Set client source repo access posts comment (0.01s)
✓ Set client source repo access posts comment 403 on source project posts MR comment (0.00s)
✓ Set client source repo access posts comment 404 on source project posts MR comment (0.00s)
✓ Set client source repo access posts comment comment posting failure is non-fatal (0.00s)
✓ Set client source repo access posts comment push event skips source project check entirely (0.00s)
✓ Set client source repo access posts comment successful access posts no comment (0.00s)
✓ Source revision (0.00s)
✓ Source revision empty SHA (0.00s)
✓ Source revision valid SHA (0.00s)
✓ Source revision zero SHA (0.00s)
✓ Validate (0.00s)
✓ Validate invalid when X- gitlab-token header missing (0.00s)
✓ Validate invalid when both token and secret are empty (security fix) (0.00s)
✓ Validate invalid when tokens do not match (0.00s)
✓ Validate invalid when webhook secret not configured (0.00s)
✓ Validate valid event with matching tokens (0.00s)

github.com/openshift-pipelines/pipelines-as-code/pkg/pipelineascode:
✓ Cancel all in progress belonging to closed pull request (0.02s)
✓ Cancel all in progress belonging to closed pull request cancel all in progress pipeline runs with annotation set to false (0.00s)
✓ Cancel all in progress belonging to closed pull request cancel all in progress pipeline runs with annotation set to true (0.00s)
✓ Cancel all in progress belonging to closed pull request cancel all in progress pipeline runs with no annotation (0.00s)
✓ Cancel all in progress belonging to closed pull request do not cancel push-triggered pipeline runs on PR close (0.00s)
✓ Cancel all in progress belonging to closed pull request exclude pipeline run having cancel-in-progress set to false when global setting is true (0.00s)
✓ Cancel all in progress belonging to closed pull request include only pipeline runs having cancel-in-progress set to true when global setting is false (0.00s)
✓ Cancel all in progress belonging to closed pull request no pipeline runs to cancel (0.00s)
✓ Cancel in progress matching pipeline run (0.03s)
✓ Cancel in progress matching pipeline run match cancel in progress (0.00s)
✓ Cancel in progress matching pipeline run match cancel in progress exclude not belonging to same pr (0.00s)
✓ Cancel in progress matching pipeline run match cancel in progress exclude not belonging to same push branch (0.00s)
✓ Cancel in progress matching pipeline run match cancel in progress from retest (0.01s)
✓ Cancel in progress matching pipeline run match cancel in progress on PR is enable via config map (0.00s)
✓ Cancel in progress matching pipeline run match cancel in progress on pipeline run generate name (0.00s)
✓ Cancel in progress matching pipeline run match cancel in progress on push is enable via config map (0.00s)
✓ Cancel in progress matching pipeline run match cancel in progress settings on PR is overridden by PR annotation (0.00s)
✓ Cancel in progress matching pipeline run match cancel in progress settings on push is overridden by PR annotation (0.00s)
✓ Cancel in progress matching pipeline run matching pipeline run when source branch annotation is having full path refs heads (0.00s)
✓ Cancel in progress matching pipeline run skip cancel in progress with concurrency limit (0.00s)
✓ Cancel in progress matching pipeline run skip cancelled pr (0.00s)
✓ Cancel in progress matching pipeline run skip finished pr (0.00s)
✓ Cancel in progress matching pipeline run skipped no cancel in progress annotations (0.00s)
✓ Cancel in progress matching pipeline run skipped no original pr name (0.00s)
✓ Cancel in progress matching pipeline run skipped no pr (0.00s)
✓ Cancel pipeline runs ops comment falls back when target namespace repo missing (0.00s)
✓ Cancel pipeline runs ops comment resolves target namespace from template (0.00s)
✓ Cancel pipelinerun ops comment (0.02s)
✓ Cancel pipelinerun ops comment cancel a specific run (0.00s)
✓ Cancel pipelinerun ops comment cancel a specific run for push event (0.00s)
✓ Cancel pipelinerun ops comment cancel running (0.02s)
✓ Cancel pipelinerun ops comment cancel running for push event (0.00s)
✓ Cancel pipelinerun ops comment cancel specific run does not affect other repository in shared namespace (0.00s)
✓ Cancel pipelinerun ops comment cancelling a done pipelinerun or already cancelled pipelinerun (0.00s)
✓ Cancel pipelinerun ops comment no pipelineruns found (0.00s)
✓ Change pipeline run (0.00s)
✓ Change pipeline run test with json error (0.00s)
✓ Change pipeline run test with params (0.00s)
✓ Check access or errror (0.00s)
✓ Check access or errror create status error (0.00s)
✓ Check access or errror user is allowed (0.00s)
✓ Check access or errror user is not allowed - no account ID (0.00s)
✓ Check access or errror user is not allowed - with account ID (0.00s)
✓ Execution order (0.00s)
✓ Execution order single p run (0.00s)
✓ Filter running pipeline run on target test (0.00s)
✓ Get execution order patch (0.00s)
✓ Get execution order patch empty (0.00s)
✓ Get execution order patch multiple prs (0.00s)
✓ Get execution order patch single pr (0.00s)
✓ Get label selector (0.00s)
✓ Get label selector empty labels (0.00s)
✓ Get label selector multiple labels (0.00s)
✓ Get label selector not in operator (0.00s)
✓ Get label selector single label (0.00s)
✓ Get log URL merge patch (0.00s)
✓ Get pipeline runs from repo (0.10s)
✓ Get pipeline runs from repo explicit test uses target namespace repo (0.01s)
✓ Get pipeline runs from repo explicit test uses target namespace repo falls back to matched repo when annotation is absent (0.00s)
✓ Get pipeline runs from repo explicit test uses target namespace repo skips pipelinerun when target namespace repo not found (0.00s)
✓ Get pipeline runs from repo explicit test uses target namespace repo uses target namespace repo from annotation (0.00s)
✓ Get pipeline runs from repo invalid tekton pipelineruns in directory (0.01s)
✓ Get pipeline runs from repo more than one pipelinerun in .tekton dir (0.01s)
✓ Get pipeline runs from repo no .tekton dir in repository (0.00s)
✓ Get pipeline runs from repo no-match pipelineruns in .tekton dir, on ok-to-test command for an external user (0.01s)
✓ Get pipeline runs from repo no-match pipelineruns in .tekton dir, only match the no-match (0.01s)
✓ Get pipeline runs from repo no-match pipelineruns in .tekton dir, only matched should be returned (0.01s)
✓ Get pipeline runs from repo repository revision (0.01s)
✓ Get pipeline runs from repo repository revision default branch provenance pins repository-local tasks to the default branch (0.00s)
✓ Get pipeline runs from repo repository revision ordinary event leaves the provider to pick its own revision (0.00s)
✓ Get pipeline runs from repo repository revision source provenance pins repository-local tasks to the event revision (0.00s)
✓ Get pipeline runs from repo retest when all pipelines already succeeded returns no runs and posts comment (0.01s)
✓ Get pipeline runs from repo same name pipelineruns error on regular event (0.01s)
✓ Get pipeline runs from repo same name pipelineruns skipped on no-ops comment event (0.01s)
✓ Get pipeline runs from repo single pipelinerun in .tekton dir (0.01s)
✓ Get repository revision for provenance (0.00s)
✓ Get repository revision for provenance default branch provenance uses default branch (0.00s)
✓ Get repository revision for provenance ordinary event leaves repository revision unset (0.00s)
✓ Get repository revision for provenance source provenance uses immutable event revision (0.00s)
✓ Pac run check need update (0.00s)
✓ Pac run check need update no need (0.00s)
✓ Process templates (0.01s)
✓ Process templates no pull request no nothing (0.00s)
✓ Process templates params bad filter skipped (0.00s)
✓ Process templates params bad payload skipped (0.00s)
✓ Process templates params basic (0.00s)
✓ Process templates params filter (0.00s)
✓ Process templates params filter on body (0.00s)
✓ Process templates params filter on body with bad filter (0.00s)
✓ Process templates params from secret (0.00s)
✓ Process templates params no filter match (0.00s)
✓ Process templates params pick value when value and secret set (0.00s)
✓ Process templates params skip with no name (0.00s)
✓ Process templates params two filters same name, match first (0.00s)
✓ Process templates params unknown secret skipped (0.00s)
✓ Process templates params use last params when two values of the same name (0.00s)
✓ Process templates params use last params when two values of the same name# 01 (0.00s)
✓ Process templates process pull request number (0.00s)
✓ Process templates replace target namespace (0.00s)
✓ Process templates strip refs head from branches (0.00s)
✓ Process templates test git tag variable (0.00s)
✓ Process templates test process templates (0.00s)
✓ Process templates test process templates lowering owner and repository (0.00s)
✓ Process templates test process use cloneurl (0.00s)
✓ Report validation errors (0.00s)
✓ Report validation errors create comment error (0.00s)
✓ Report validation errors ignored errors by regex (0.00s)
✓ Report validation errors no validation errors (0.00s)
✓ Report validation errors non-tekton schema errors (0.00s)
✓ Report validation errors tekton validation errors (0.00s)
✓ Run (10.48s)
✓ Run allowed push event even from non allowed user (0.62s)
✓ Run do not allow unauthorized user to run CI on pushed commit (0.61s)
✓ Run keep max number of pipelineruns (0.62s)
✓ Run pull request allowed (0.62s)
✓ Run pull request bad-yaml (0.00s)
✓ Run pull request fail-to-start-apps (0.62s)
✓ Run pull request match-but-fail-to-start-on-unknown-remotetask (4.29s)
✓ Run pull request pipelinerun created in pending state (state changed by other controller) (0.62s)
✓ Run pull request pipelinerun created in pending state without installation ID (state changed by other controller) (0.62s)
✓ Run pull request unknown-remotetask-but-fail-on-matching (0.01s)
✓ Run pull request webhook secret new line (0.00s)
✓ Run pull request webhook secret space at the end (0.00s)
✓ Run pull request with webhook (0.01s)
✓ Run push branch (0.62s)
✓ Run push tags (0.62s)
✓ Run skipped test no repositories match (0.00s)
✓ Run skipped test no tekton dir (0.00s)
✓ Run skipped test on check run (0.00s)
✓ Run skipped user is not allowed (0.61s)
✓ Start PR (0.00s)
✓ Start PR annotation and label propagation (0.01s)
✓ Start PR annotation and label propagation cancel in progress annotation propagated to label (0.00s)
✓ Start PR annotation and label propagation git lab project IDs set as annotations (0.00s)
✓ Start PR concurrency limit behavior (0.02s)
✓ Start PR concurrency limit behavior higher concurrency limit - still sets pending (0.00s)
✓ Start PR concurrency limit behavior negative concurrency limit - treated as having limit (queued) (0.00s)
✓ Start PR concurrency limit behavior nil concurrency limit - starts immediately (0.00s)
✓ Start PR concurrency limit behavior positive concurrency limit - sets pending (0.00s)
✓ Start PR concurrency limit behavior zero concurrency limit - treated as no limit (0.00s)
✓ Start PR concurrent creation (0.01s)
✓ Start PR git hub app log URL handling (0.00s)
✓ Start PR patch behavior (0.00s)
✓ Start PR patch behavior patch failure - PR still returned with error (0.00s)
✓ Start PR patch behavior successful patch - all annotations set (0.00s)
✓ Start PR status creation failure (0.00s)
✓ Verify repo and user (1.22s)
✓ Verify repo and user happy path (0.00s)
✓ Verify repo and user happy path with ok-to-test comment status reporting (0.00s)
✓ Verify repo and user missing git provider section (0.00s)
✓ Verify repo and user no repository match (0.00s)
✓ Verify repo and user permission denied pull request comment pending approval (0.61s)
✓ Verify repo and user permission denied push comment (0.61s)
✓ Verify repo and user webhook secret is not set (0.00s)
✓ Verify repo and user webhook validation failure (0.00s)

DONE 3649 tests in 27.455s

$ make lint
Linting go files...
0 issues.
Linting go files with nilaway...
Checking Go formatting with gofumpt...
Linting yaml files...
Linting markdown files...
Grammar check with vale of documentation...
CodeSpell on docs content
Linting python files...
All checks passed!
7 files already formatted
Linting shell script files...
Checking E2E test naming conventions...
All E2E tests follow the naming convention.

The controller listed all Repository CRs cluster-wide from the API
server on every incoming event, including events for repositories
that are not onboarded. On busy multi-tenant clusters this put
sustained load on the API server, scaling with both event rate and
the number of repositories.

Add an informer-backed RepositoryLister on params.Run with
GetRepository/ListRepositories accessors that serve lookups from an
in-memory cache and fall back to the API when no lister is set.
Results are deep-copied so callers cannot mutate the shared cache,
the cache is trimmed via RepositoryForCache, and the GitHub match
path is routed through the cache as well.

Secrets are intentionally not cached to avoid serving stale tokens
after rotation and to keep the controller memory footprint bounded.

Signed-off-by: Akshay Pant <akpant@redhat.com>
Co-authored-by: Zaki Shaikh <zashaikh@redhat.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
@theakshaypant

Copy link
Copy Markdown
Member Author

Added unit tests in c6e91ff and attached the local make test and make lint output in an earlier comment.

Comment on lines +43 to +50
pacInformerFactory := pacinformers.NewSharedInformerFactory(run.Clients.PipelineAsCode, 10*time.Minute)
repoInformer := pacInformerFactory.Pipelinesascode().V1alpha1().Repositories()
if err := repoInformer.Informer().SetTransform(transform.RepositoryForCache); err != nil {
log.Fatal("failed to set transform on repository informer: ", err)
}
run.RepositoryLister = repoInformer.Lister()
pacInformerFactory.Start(ctx.Done())

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we do the same way it's done for watcher?

repoInformer := repository.Get(ctx)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and also you need to setTransform for cache optimization as done in watcher already (see the code reference in above link)

},
)
// A namespace pins the lookup to a single repository we can fetch by name.
if ns != "" {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if ns != "" {
if ns != "" && cs.RepositoryLister != nil {

@@ -1091,14 +1091,14 @@ func (v *Provider) handleCommitCommentEvent(ctx context.Context, event *github.C
}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pkg/provider/gitlab/parse_payload.go also matches the repository

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

paco/review-hard Paco review difficulty security-review Flagged as security-sensitive by Paco

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants