diff --git a/.github/workflows/build-linux-installer-deb.yml b/.github/workflows/build-linux-installer-deb.yml index de813fac016c..dfeb1d722121 100644 --- a/.github/workflows/build-linux-installer-deb.yml +++ b/.github/workflows/build-linux-installer-deb.yml @@ -382,9 +382,11 @@ jobs: url: "docker://ubuntu:noble" mode: - name: GUI + matrix: gui file: chia-blockchain_*.deb package: chia-blockchain - name: CLI + matrix: cli file: chia-blockchain-cli_*.deb package: chia-blockchain-cli arch: @@ -423,7 +425,7 @@ jobs: - name: Run chia dev installers test run: | - chia dev installers test --expected-chia-version "${{ needs.build.outputs.chia-installer-version }}" + chia dev installers test --expected-chia-version "${{ needs.build.outputs.chia-installer-version }}" ${{ matrix.mode.matrix == 'gui' && '--gui-command chia-blockchain' || '' }} - name: Verify /opt/chia present run: | @@ -435,7 +437,7 @@ jobs: - name: Check permissions of /opt/chia/chrome-sandbox shell: bash - if: matrix.mode.name == 'GUI' + if: matrix.mode.matrix == 'gui' run: | [ $(stat -c %a:%G:%U /opt/chia/chrome-sandbox) == "4755:root:root" ] diff --git a/.github/workflows/build-linux-installer-rpm.yml b/.github/workflows/build-linux-installer-rpm.yml index c8ed3c75b5fc..5e0a8d6e500e 100644 --- a/.github/workflows/build-linux-installer-rpm.yml +++ b/.github/workflows/build-linux-installer-rpm.yml @@ -420,7 +420,7 @@ jobs: - name: Run chia dev installers test run: | - chia dev installers test --require-no-madmax --expected-chia-version "${{ needs.build.outputs.chia-installer-version }}" + chia dev installers test --require-no-madmax --expected-chia-version "${{ needs.build.outputs.chia-installer-version }}" ${{ matrix.mode.matrix == 'gui' && '--gui-command chia-blockchain' || '' }} - name: Verify /opt/chia present run: | diff --git a/.github/workflows/build-macos-installers.yml b/.github/workflows/build-macos-installers.yml index b5f4bc8d2e42..f8eee2a10e06 100644 --- a/.github/workflows/build-macos-installers.yml +++ b/.github/workflows/build-macos-installers.yml @@ -457,7 +457,7 @@ jobs: - name: Run chia dev installers test run: | - "/Volumes/Chia "*"/Chia.app/Contents/Resources/app.asar.unpacked/daemon/chia" dev installers test --expected-chia-version "${{ needs.build.outputs.chia-installer-version }}" + "/Volumes/Chia "*"/Chia.app/Contents/Resources/app.asar.unpacked/daemon/chia" dev installers test --expected-chia-version "${{ needs.build.outputs.chia-installer-version }}" --gui-command "/Volumes/Chia "*/Chia.app/Contents/MacOS/Chia - name: Detach .dmg if: always() diff --git a/.github/workflows/build-windows-installer.yml b/.github/workflows/build-windows-installer.yml index c63e0b0b1c42..58352cd44c17 100644 --- a/.github/workflows/build-windows-installer.yml +++ b/.github/workflows/build-windows-installer.yml @@ -434,4 +434,4 @@ jobs: env: INSTALL_PATH: ${{ github.workspace }}\installed run: | - & ($env:INSTALL_PATH + "\resources\app.asar.unpacked\daemon\chia.exe") dev installers test --expected-chia-version "${{ needs.build.outputs.chia-installer-version }}" + & ($env:INSTALL_PATH + "\resources\app.asar.unpacked\daemon\chia.exe") dev installers test --expected-chia-version "${{ needs.build.outputs.chia-installer-version }}" --gui-command ($env:INSTALL_PATH + "\Chia.exe") diff --git a/chia/cmds/installers.py b/chia/cmds/installers.py index 8ffed570146c..35071cb1aa1d 100644 --- a/chia/cmds/installers.py +++ b/chia/cmds/installers.py @@ -2,8 +2,9 @@ import json import subprocess +import sys import tempfile -from typing import Dict, List, Optional +from typing import Dict, List, Optional, Sequence import click import packaging.version @@ -50,7 +51,8 @@ def installers_group() -> None: @installers_group.command(name="test") @click.option("--expected-chia-version", "expected_chia_version_str", required=True) @click.option("--require-madmax/--require-no-madmax", "require_madmax", default=True) -def test_command(expected_chia_version_str: str, require_madmax: bool) -> None: +@click.option("--gui-command", multiple=True) +def test_command(expected_chia_version_str: str, require_madmax: bool, gui_command: Sequence[str]) -> None: print("testing installed executables") expected_chia_version = packaging.version.Version(expected_chia_version_str) @@ -127,3 +129,19 @@ def test_command(expected_chia_version_str: str, require_madmax: bool) -> None: check=True, timeout=adjusted_timeout(30), ) + + if len(gui_command) == 0: + print("skipping gui launch test") + else: + print(f"launching: {gui_command}") + sys.stdout.flush() + try: + subprocess.run( + args=gui_command, + check=True, + timeout=adjusted_timeout(30), + ) + except subprocess.TimeoutExpired: + pass + else: + raise Exception("process terminated prior to timeout")