import { Action } from "../src/Action" import * as github from "@actions/github" import { Inputs } from "../src/Inputs" import { GithubReleases, ReleaseData } from "../src/Releases" import { GithubArtifactUploader } from "../src/ArtifactUploader" import * as path from "path" import { FileArtifactGlobber } from "../src/ArtifactGlobber" import { Outputs } from "../src/Outputs" import { GithubArtifactDestroyer } from "../src/ArtifactDestroyer" import { ReleaseActionSkipper } from "../src/ActionSkipper" // This test is currently intended to be manually run during development. To run: // - Make sure you have an environment variable named GITHUB_TOKEN assigned to your token // - Remove skip from the test below describe.skip("Integration Test", () => { let action: Action beforeEach(() => { const token = getToken() const git = github.getOctokit(token) const inputs = getInputs() const outputs = getOutputs() const releases = new GithubReleases(inputs, git) const uploader = new GithubArtifactUploader(releases, inputs.replacesArtifacts, inputs.artifactErrorsFailBuild) const artifactDestroyer = new GithubArtifactDestroyer(releases) const actionSkipper = new ReleaseActionSkipper(inputs.skipIfReleaseExists, releases, inputs.tag) action = new Action(inputs, outputs, releases, uploader, artifactDestroyer, actionSkipper) }) it("Performs action", async () => { await action.perform() }) function getInputs(): Inputs { const MockInputs = jest.fn(() => { return { allowUpdates: true, artifactErrorsFailBuild: false, artifacts: artifacts(), createdDraft: false, createdReleaseBody: "This release was generated by release-action's integration test", createdReleaseName: "Releases Action Integration Test", commit: undefined, discussionCategory: "Release", generateReleaseNotes: true, owner: "ncipollo", createdPrerelease: false, replacesArtifacts: true, removeArtifacts: false, repo: "actions-playground", skipIfReleaseExists: false, tag: "release-action-test", token: getToken(), updatedDraft: false, updatedReleaseBody: "This release was updated by release-action's integration test", updatedReleaseName: "Releases Action Integration Test", updatedPrerelease: false, updateOnlyUnreleased: false, } }) return new MockInputs() } function getOutputs(): Outputs { const MockOutputs = jest.fn(() => { return { applyReleaseData(releaseData: ReleaseData) { console.log(`Release Data: ${releaseData}`) }, } }) return new MockOutputs() } function artifacts() { const globber = new FileArtifactGlobber() const artifactPath = path.join(__dirname, "Integration.test.ts") const artifactString = `~/Desktop,~/Desktop/test.txt,blarg.tx, ${artifactPath}` return globber.globArtifactString(artifactString, "raw", false) } function getToken(): string { return process.env.GITHUB_TOKEN ?? "" } })