diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ad86dddb..3fb08f17 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,6 +28,27 @@ jobs: username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} + logout: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + logout: + - false + - true + steps: + - + name: Checkout + uses: actions/checkout@v2 + - + name: Login to GitHub Container Registry + uses: ./ + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + logout: ${{ matrix.logout }} + dind: runs-on: ubuntu-latest env: diff --git a/__tests__/context.test.ts b/__tests__/context.test.ts index bd6abe69..d9d5f161 100644 --- a/__tests__/context.test.ts +++ b/__tests__/context.test.ts @@ -5,6 +5,7 @@ import {getInputs} from '../src/context'; test('with password and username getInputs does not throw error', async () => { process.env['INPUT_USERNAME'] = 'dbowie'; process.env['INPUT_PASSWORD'] = 'groundcontrol'; + process.env['INPUT_LOGOUT'] = 'true'; expect(() => { getInputs(); }).not.toThrowError(); diff --git a/__tests__/main.test.ts b/__tests__/main.test.ts index 7700ae7c..89e9151a 100644 --- a/__tests__/main.test.ts +++ b/__tests__/main.test.ts @@ -10,6 +10,8 @@ test('errors without username and password', async () => { const platSpy = jest.spyOn(osm, 'platform'); platSpy.mockImplementation(() => 'linux'); + process.env['INPUT_LOGOUT'] = 'true'; // default value + const coreSpy: jest.SpyInstance = jest.spyOn(core, 'setFailed'); await run(); @@ -32,10 +34,13 @@ test('successful with username and password', async () => { const password: string = 'groundcontrol'; process.env[`INPUT_PASSWORD`] = password; + const logout: boolean = false; + process.env['INPUT_LOGOUT'] = String(logout); + await run(); expect(setRegistrySpy).toHaveBeenCalledWith(''); - expect(setLogoutSpy).toHaveBeenCalledWith(''); + expect(setLogoutSpy).toHaveBeenCalledWith(logout); expect(dockerSpy).toHaveBeenCalledWith('', username, password); }); @@ -57,8 +62,8 @@ test('calls docker login', async () => { const registry: string = 'ghcr.io'; process.env[`INPUT_REGISTRY`] = registry; - const logout: string = 'true'; - process.env['INPUT_LOGOUT'] = logout; + const logout: boolean = true; + process.env['INPUT_LOGOUT'] = String(logout); await run(); diff --git a/dist/index.js b/dist/index.js index 8bada4f4..adfc9db1 100644 --- a/dist/index.js +++ b/dist/index.js @@ -4737,7 +4737,7 @@ function getInputs() { registry: core.getInput('registry'), username: core.getInput('username'), password: core.getInput('password'), - logout: core.getInput('logout') + logout: core.getBooleanInput('logout') }; } exports.getInputs = getInputs; diff --git a/src/context.ts b/src/context.ts index 9074f5c1..f5bdaa27 100644 --- a/src/context.ts +++ b/src/context.ts @@ -4,7 +4,7 @@ export interface Inputs { registry: string; username: string; password: string; - logout: string; + logout: boolean; } export function getInputs(): Inputs { @@ -12,6 +12,6 @@ export function getInputs(): Inputs { registry: core.getInput('registry'), username: core.getInput('username'), password: core.getInput('password'), - logout: core.getInput('logout') + logout: core.getBooleanInput('logout') }; } diff --git a/src/state-helper.ts b/src/state-helper.ts index 063e2915..dd22bc1e 100644 --- a/src/state-helper.ts +++ b/src/state-helper.ts @@ -8,7 +8,7 @@ export function setRegistry(registry: string) { core.saveState('registry', registry); } -export function setLogout(logout: string) { +export function setLogout(logout: boolean) { core.saveState('logout', logout); }