Skip to content

feat: adding latch-command #60

feat: adding latch-command

feat: adding latch-command #60

Workflow file for this run

name: "Test: latch register"
on:
pull_request:
branches:
- "*"
push:
branches:
- "develop"
- "main"
workflow_call:
concurrency:
group: latch-register-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
register:
runs-on: ubuntu-24.04
name: "Test: latch register"
environment: github-actions-register
steps:
- run: echo "::group::Setting up..."
shell: bash
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- id: install
name: Install Latch
uses: ./
- name: update wf version
run: echo "$(git rev-parse HEAD)-1" > ./tests/test-setup-latch-register/version
- run: echo "::endgroup::"
shell: bash
# Tests vanilla register
- run: echo "::group::Test remote registration succeeds..."
shell: bash
- id: latch
name: test remote registration succeeds
uses: ./
with:
register: true
latch-workspace: ${{ secrets.LATCH_WORKSPACE }}
latch-token: ${{ secrets.LATCH_TOKEN }}
register-pkg-root: ./tests/test-setup-latch-register
- name: Print outputs
shell: bash
run: |
echo latch-version: ${{ steps.latch.outputs.latch-version }}
echo register-version: ${{ steps.latch.outputs.register-version }}
echo already-registered: ${{ steps.latch.outputs.already-registered }}
- name: check already registered
shell: bash
run: |
if [[ "${{ steps.latch.outputs.already-registered }}" == "true" ]]; then
echo "Error: workflow was already registered";
echo -e "❌\n::endgroup::"
exit 1;
fi
rm -v tests/test-setup-latch-register/.latch/Dockerfile
- run: echo -e "✅\n::endgroup::"
shell: bash
# FIXME: update this test when https://github.com/latchbio/latch/issues/534 is fixed
# Tests using register-remote false
# FIXME: uncomment me when local registration works
- run: echo "::group::Test local registration fails..."
shell: bash
- id: register-remote
name: test local registration fails
# FIXME: remove me when local registration works
continue-on-error: true
uses: ./
with:
register: true
latch-workspace: ${{ secrets.LATCH_WORKSPACE }}
latch-token: ${{ secrets.LATCH_TOKEN }}
register-pkg-root: ./tests/test-setup-latch-register
register-remote: false
- name: check failure
shell: bash
run: |
# FIXME: remove me when local registration works
if [[ "${{ steps.register-remote.outcome }}" != "failure" ]]; then
echo "Error: local registration did not fail'";
echo "Is https://github.com/latchbio/latch/issues/534 fixed?";
echo -e "❌\n::endgroup::"
exit 1;
fi
# FIXME: uncomment me when local registration works
#if [[ "${{ steps.register-remote.outputs.already-registered }}" == "true" ]]; then
# echo "Error: workflow was not already registered with 'already-registered-do-not-fail: false'";
# echo -e "❌\n::endgroup::"
# exit 1;
#fi
- run: echo -e "✅\n::endgroup::"
shell: bash
# Tests already-registered-do-not-fail=true succeeds
- run: echo "::group::Test already-registered-do-not-fail=true should succeed..."
shell: bash
- id: already-registered-do-not-fail-true
name: test already-registered-do-not-fail=true should succeed
uses: ./
with:
register: true
latch-workspace: ${{ secrets.LATCH_WORKSPACE }}
latch-token: ${{ secrets.LATCH_TOKEN }}
register-pkg-root: ./tests/test-setup-latch-register
already-registered-do-not-fail: true
- name: check already registered
shell: bash
run: |
if [[ "${{ steps.already-registered-do-not-fail-true.outputs.already-registered }}" == "false" ]]; then
echo "Error: workflow was not already registered with 'already-registered-do-not-fail: true'";
echo -e "❌\n::endgroup::"
exit 1;
fi
- run: echo -e "✅\n::endgroup::"
shell: bash
# Tests already-registered-do-not-fail=false fails
- run: echo "::group::Test already-registered-do-not-fail=false should fail.."
shell: bash
- id: already-registered-do-not-fail-false
name: test already-registered-do-not-fail=false should fail
continue-on-error: true
uses: ./
with:
register: true
latch-workspace: ${{ secrets.LATCH_WORKSPACE }}
latch-token: ${{ secrets.LATCH_TOKEN }}
register-pkg-root: ./tests/test-setup-latch-register
already-registered-do-not-fail: false
- name: check already registered failure
run: |
if [[ "${{ steps.already-registered-do-not-fail-false.outputs.already-registered }}" == "false" ]]; then
echo "Error: workflow was not already registered with 'already-registered-do-not-fail: false'";
echo -e "❌\n::endgroup::"
exit 1;
fi
if [[ "${{ steps.already-registered-do-not-fail-false.outcome }}" != "failure" ]]; then
echo "Error: registration existing workflow did not fail with 'already-registered-do-not-fail: false'";
echo -e "❌\n::endgroup::"
exit 1;
fi
- run: echo -e "✅\n::endgroup::"
shell: bash
# Tests register with mark-as-release
- run: echo "::group::Test register with mark-as-release..."
shell: bash
- id: register-with-mark-as-release
name: test register with mark-as-release
uses: ./
with:
register: true
latch-workspace: ${{ secrets.LATCH_WORKSPACE }}
latch-token: ${{ secrets.LATCH_TOKEN }}
register-pkg-root: ./tests/test-setup-latch-register
already-registered-do-not-fail: true
mark-as-release: true
- name: Print outputs
shell: bash
run: |
echo latch-version: ${{ steps.register-with-mark-as-release.outputs.latch-version }}
echo register-version: ${{ steps.register-with-mark-as-release.outputs.register-version }}
echo already-registered: ${{ steps.register-with-mark-as-release.outputs.already-registered }}
- name: check success
shell: bash
run: |
if [[ "${{ steps.register-with-mark-as-release.outcome }}" != "success" ]]; then
echo "Error: workflow failed";
echo -e "❌\n::endgroup::"
exit 1;
fi
- run: echo -e "✅\n::endgroup::"
shell: bash
# Tests mark-as-release without register should fail
- run: echo "::group::Test mark-as-release without register should fail..."
shell: bash
- id: mark-as-release-without-register
name: test mark-as-release without register should fail
continue-on-error: true
uses: ./
with:
latch-workspace: ${{ secrets.LATCH_WORKSPACE }}
latch-token: ${{ secrets.LATCH_TOKEN }}
register-pkg-root: ./tests/test-setup-latch-register
already-registered-do-not-fail: true
mark-as-release: true
- name: check mark-as-release without register failure
run: |
if [[ "${{ steps.mark-as-release-without-register.outcome }}" != "failure" ]]; then
echo "Error: mark-as-release without register did not fail";
exit 1;
fi
- run: echo -e "✅\n::endgroup::"
shell: bash
# Tests skipping the latch install succeeds when latch is available on the PATH
- run: echo "::group::Test skipping latch install..."
shell: bash
- id: skip-install-success
name: test skipping latch install
uses: ./
with:
latch-workspace: ${{ secrets.LATCH_WORKSPACE }}
latch-token: ${{ secrets.LATCH_TOKEN }}
register-pkg-root: ./tests/test-setup-latch-register
skip-install: true
- name: Print outputs
shell: bash
run: |
echo latch-version: ${{ steps.skip-install-success.outputs.latch-version }}
echo register-version: ${{ steps.skip-install-success.outputs.register-version }}
echo already-registered: ${{ steps.skip-install-success.outputs.already-registered }}
- name: check success
shell: bash
run: |
if [[ "${{ steps.skip-install-success.outcome }}" != "success" ]]; then
echo "Error: workflow failed";
exit 1;
fi
- run: echo -e "✅\n::endgroup::"
shell: bash
# Tests skipping the latch install fails when latch is not available on the PATH
- run: echo "::group::Test skipping latch install fails when latch is not available on the PATH..."
shell: bash
- name: uninstall latch
shell: bash
run: |
python3 -m pip uninstall --yes latch
- id: skip-install-failure
name: test skipping latch install fails when latch is not available on the PATH
continue-on-error: true
uses: ./
with:
latch-workspace: ${{ secrets.LATCH_WORKSPACE }}
latch-token: ${{ secrets.LATCH_TOKEN }}
register-pkg-root: ./tests/test-setup-latch-register
skip-install: true
- name: check failure
shell: bash
run: |
if [[ "${{ steps.skip-install-failure.outcome }}" != "failure" ]]; then
echo "Error: workflow succeeded";
echo -e "❌\n::endgroup::"
exit 1;
fi
- name: reinstall latch
shell: bash
run: |
python3 -m pip install latch
- run: echo -e "✅\n::endgroup::"
shell: bash
# Tests specifying a different latch command
- run: echo "::group::Test different latch command..."
shell: bash
- name: move the latch executable
id: latch-command-move
shell: bash
run: |
latch_src=$(which latch)
latch_dst=$(which latch).moved
mv -v "${latch_src}" "${latch_dst}"
echo "latch-src=${latch_src}" >> $GITHUB_OUTPUT;
echo "latch-dst=${latch_dst}" >> $GITHUB_OUTPUT;
- id: latch

Check failure on line 275 in .github/workflows/test-register.yml

View workflow run for this annotation

GitHub Actions / Test: latch register

Invalid workflow file

The workflow is not valid. .github/workflows/test-register.yml (Line: 275, Col: 13): The identifier 'latch' may not be used more than once within the same scope.
name: test different latch command
uses: ./
with:
register: true
latch-workspace: ${{ secrets.LATCH_WORKSPACE }}
latch-token: ${{ secrets.LATCH_TOKEN }}
register-pkg-root: ./tests/test-setup-latch-register
skip-install: true
latch-command: ${{ steps.latch-command-move.outputs.latch-src }}
- name: Print outputs
shell: bash
run: |
echo latch-version: ${{ steps.latch.outputs.latch-version }}
echo register-version: ${{ steps.latch.outputs.register-version }}
echo already-registered: ${{ steps.latch.outputs.already-registered }}
- name: check success
shell: bash
run: |
if [[ "${{ steps.skip-install-success.outcome }}" != "success" ]]; then
echo "Error: workflow failed";
echo -e "❌\n::endgroup::"
exit 1;
fi
- name: move the latch executable back
shell: bash
run: |
latch_src="${{ steps.latch-command-move.outputs.latch-src }}";
latch_dst="${{ steps.latch-command-move.outputs.latch-dst }}";
mv -v "${latch_dst}" "${latch_src}";
- run: echo -e "✅\n::endgroup::"
shell: bash