69 lines · 2.1 KB · TypeScript
RawDownload
import { assert, it } from "@effect/vitest"; import * as AzureDevOpsCli from "../sourceControl/AzureDevOpsCli.ts";import * as BitbucketApi from "../sourceControl/BitbucketApi.ts";import * as GitHubCli from "../sourceControl/GitHubCli.ts";import * as SourceControlRateLimit from "../sourceControl/SourceControlRateLimit.ts";import * as GitLabCli from "../sourceControl/GitLabCli.ts";import { azureDevOpsProviderFailure } from "./AzureDevOpsPullRequestProvider.ts";import { bitbucketProviderFailure } from "./BitbucketPullRequestProvider.ts";import { gitHubProviderFailure } from "./GitHubPullRequestProvider.ts";import { gitLabProviderFailure } from "./GitLabPullRequestProvider.ts"; const cause = new Error("redacted provider failure"); it("classifies rate limits from every pull-request provider", () => {  assert.deepStrictEqual(    gitHubProviderFailure(      new GitHubCli.GitHubCliRateLimitError({ command: "gh", cwd: "/repo", cause }),    ),    { reason: "rate-limited" },  );  assert.deepStrictEqual(    gitLabProviderFailure(      new GitLabCli.GitLabCliRateLimitError({        operation: "execute",        command: "glab",        cwd: "/repo",        cause,      }),    ),    { reason: "rate-limited" },  );  assert.deepStrictEqual(    azureDevOpsProviderFailure(      new AzureDevOpsCli.AzureDevOpsCliRateLimitError({        operation: "execute",        command: "az",        cwd: "/repo",        argumentCount: 1,        cause,      }),    ),    { reason: "rate-limited" },  );  assert.deepStrictEqual(    bitbucketProviderFailure(      new BitbucketApi.BitbucketResponseError({        operation: "request",        status: 429,        responseBodyLength: 0,        retryAt: 120_000,      }),    ),    { reason: "rate-limited", retryAt: 120_000 },  );}); it("keeps GitHub's exact retry time", () => {  assert.deepStrictEqual(    gitHubProviderFailure(      new SourceControlRateLimit.SourceControlRateLimitPausedError({        provider: "github",        host: "github.com",        retryAt: 1_786_802_400_000,      }),    ),    { reason: "rate-limited", retryAt: 1_786_802_400_000 },  );});