diff --git a/.gitignore b/.gitignore index 02be46b..65f31d6 100644 --- a/.gitignore +++ b/.gitignore @@ -160,4 +160,4 @@ package-lock.json # Jest coverage/ -junit.xml +junit*.xml diff --git a/README.md b/README.md index 3830b14..558e339 100644 --- a/README.md +++ b/README.md @@ -9,23 +9,23 @@ This is a monorepo containing a collection of GitHub Actions maintained by Lizar ## actions -| Action | Description | Type | Language | -|---------------------------------------------------------------|---------------------------------------------------------------------------------|-----------|------------------| -| [audit_repos](actions/audit_repos#readme) | Audit repositories in an organization | composite | javascript | -| [check_trailing_spaces](actions/check_trailing_spaces#readme) | Check files for trailing spaces, empty lines at EOF, and missing newline at EOF | composite | javascript | -| [facebook_post](actions/facebook_post#readme) | Post to Facebook page/group using Graph API | docker | python | -| [get_changed_files](actions/get_changed_files#readme) | Get the list of changed files in a pull request | composite | javascript | -| [monitor_space](actions/monitor_space#readme) | Monitor and track minimum free disk space | composite | bash | -| [pinact](actions/pinact#readme) | Run pinact against repositories in an organization and create PRs for updates | composite | javascript | -| [more_space](actions/more_space#readme) | Free up disk space in GitHub Actions runners | composite | bash | -| [release_changelog](actions/release_changelog#readme) | Generate a changelog for the latest release | composite | javascript | -| [release_create](actions/release_create#readme) | Create a new release | composite | bash, javascript | -| [release_homebrew](actions/release_homebrew#readme) | Validate and update Homebrew formula | composite | bash, python | -| [release_setup](actions/release_setup#readme) | Prepare a release | docker | python | -| [screenshot](actions/screenshot#readme) | Setup cross-platform screenshot CLI tool | composite | bash | -| [setup_cuda](actions/setup_cuda#readme) | Set up NVIDIA CUDA Toolkit on Linux runners | composite | bash | -| [setup_python](actions/setup_python#readme) | Set up Python environment | composite | bash | -| [setup_virtual_desktop](actions/setup_virtual_desktop#readme) | Setup virtual desktop for GUI apps on Linux | composite | bash | +| Action | Description | Type | Language | +|-------------------------------------------------------|---------------------------------------------------------------------------------|-----------|------------------| +| [audit_repos](actions/audit_repos#readme) | Audit repositories in an organization | composite | javascript | +| [facebook_post](actions/facebook_post#readme) | Post to Facebook page/group using Graph API | docker | python | +| [get_changed_files](actions/get_changed_files#readme) | Get the list of changed files in a pull request | composite | javascript | +| [monitor_space](actions/monitor_space#readme) | Monitor and track minimum free disk space | composite | bash | +| [pinact](actions/pinact#readme) | Run pinact against repositories in an organization and create PRs for updates | composite | javascript | +| [more_space](actions/more_space#readme) | Free up disk space in GitHub Actions runners | composite | bash | +| [release_changelog](actions/release_changelog#readme) | Generate a changelog for the latest release | composite | javascript | +| [release_create](actions/release_create#readme) | Create a new release | composite | bash, javascript | +| [release_homebrew](actions/release_homebrew#readme) | Validate and update Homebrew formula | composite | bash, python | +| [release_setup](actions/release_setup#readme) | Prepare a release | docker | python | +| [screenshot](actions/screenshot#readme) | Setup cross-platform screenshot CLI tool | composite | bash | +| [setup_cuda](actions/setup_cuda#readme) | Set up NVIDIA CUDA Toolkit on Linux runners | composite | bash | +| [setup_python](actions/setup_python#readme) | Set up Python environment | composite | bash | +| [trailing_spaces](actions/trailing_spaces#readme) | Check files for trailing spaces, empty lines at EOF, and missing newline at EOF | composite | javascript | +| [virtual_desktop](actions/virtual_desktop#readme) | Setup virtual desktop for GUI apps on Linux | composite | bash | ## Contributions diff --git a/actions/screenshot/README.md b/actions/screenshot/README.md index ca5fef3..0ef892c 100644 --- a/actions/screenshot/README.md +++ b/actions/screenshot/README.md @@ -16,7 +16,7 @@ Linux requires a display server (X11 or Wayland) to be running. Use the virtual ```yaml - name: Setup virtual display - uses: LizardByte/actions/actions/setup_virtual_desktop@master + uses: LizardByte/actions/actions/virtual_desktop@master with: environment: xfce ``` @@ -192,7 +192,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Setup virtual desktop - uses: LizardByte/actions/actions/setup_virtual_desktop@master + uses: LizardByte/actions/actions/virtual_desktop@master with: environment: xfce diff --git a/actions/screenshot/pre-ci.sh b/actions/screenshot/pre-ci.sh index f521481..fb7b00d 100644 --- a/actions/screenshot/pre-ci.sh +++ b/actions/screenshot/pre-ci.sh @@ -8,9 +8,9 @@ echo "Pre-CI: Setting up display for screenshot tests..." if [[ "$OSTYPE" == "linux-gnu"* ]]; then echo "Detected Linux - setting up virtual desktop..." - # Call the setup_virtual_desktop action's setup script - chmod +x ./actions/setup_virtual_desktop/setup_desktop.sh - ./actions/setup_virtual_desktop/setup_desktop.sh \ + # Call the virtual_desktop action's setup script + chmod +x ./actions/virtual_desktop/setup_desktop.sh + ./actions/virtual_desktop/setup_desktop.sh \ --environment=xfce \ --display-size=1280x720 diff --git a/actions/check_trailing_spaces/README.md b/actions/trailing_spaces/README.md similarity index 92% rename from actions/check_trailing_spaces/README.md rename to actions/trailing_spaces/README.md index e773309..3b404f6 100644 --- a/actions/check_trailing_spaces/README.md +++ b/actions/trailing_spaces/README.md @@ -1,4 +1,4 @@ -# check_trailing_spaces +# trailing_spaces Check files for trailing spaces, empty lines at EOF, and missing newline at EOF. @@ -17,7 +17,7 @@ steps: uses: actions/checkout@v4 - name: Check trailing spaces - uses: LizardByte/actions/actions/check_trailing_spaces@master + uses: LizardByte/actions/actions/trailing_spaces@master ``` ## 📥 Inputs @@ -73,7 +73,7 @@ jobs: uses: actions/checkout@v4 - name: Check trailing spaces - uses: LizardByte/actions/actions/check_trailing_spaces@master + uses: LizardByte/actions/actions/trailing_spaces@master ``` ### Check all files in the repository @@ -84,7 +84,7 @@ steps: uses: actions/checkout@v4 - name: Check all files for trailing spaces - uses: LizardByte/actions/actions/check_trailing_spaces@master + uses: LizardByte/actions/actions/trailing_spaces@master with: check_all_files: 'true' source_directory: '.' @@ -98,7 +98,7 @@ steps: uses: actions/checkout@v4 - name: Check trailing spaces (skip binary/generated files) - uses: LizardByte/actions/actions/check_trailing_spaces@master + uses: LizardByte/actions/actions/trailing_spaces@master with: check_all_files: 'true' ignore_patterns: | @@ -120,7 +120,7 @@ steps: uses: LizardByte/actions/actions/get_changed_files@master - name: Check trailing spaces - uses: LizardByte/actions/actions/check_trailing_spaces@master + uses: LizardByte/actions/actions/trailing_spaces@master with: changed_files: ${{ steps.changed_files.outputs.changed_files }} ``` @@ -133,7 +133,7 @@ steps: uses: actions/checkout@v4 - name: Check only trailing spaces (skip EOF checks) - uses: LizardByte/actions/actions/check_trailing_spaces@master + uses: LizardByte/actions/actions/trailing_spaces@master with: check_empty_line_at_eof: 'false' check_missing_newline_at_eof: 'false' diff --git a/actions/check_trailing_spaces/action.yml b/actions/trailing_spaces/action.yml similarity index 96% rename from actions/check_trailing_spaces/action.yml rename to actions/trailing_spaces/action.yml index 5dc4186..5fbbcc4 100644 --- a/actions/check_trailing_spaces/action.yml +++ b/actions/trailing_spaces/action.yml @@ -62,5 +62,5 @@ runs: with: github-token: ${{ inputs.token }} script: | - const script = require('${{ github.action_path }}/check_trailing_spaces.js'); + const script = require('${{ github.action_path }}/trailing_spaces.js'); await script({ github, context, core }); diff --git a/actions/check_trailing_spaces/ci-matrix.json b/actions/trailing_spaces/ci-matrix.json similarity index 100% rename from actions/check_trailing_spaces/ci-matrix.json rename to actions/trailing_spaces/ci-matrix.json diff --git a/actions/check_trailing_spaces/check_trailing_spaces.js b/actions/trailing_spaces/trailing_spaces.js similarity index 100% rename from actions/check_trailing_spaces/check_trailing_spaces.js rename to actions/trailing_spaces/trailing_spaces.js diff --git a/actions/setup_virtual_desktop/README.md b/actions/virtual_desktop/README.md similarity index 94% rename from actions/setup_virtual_desktop/README.md rename to actions/virtual_desktop/README.md index a64bd02..7126596 100644 --- a/actions/setup_virtual_desktop/README.md +++ b/actions/virtual_desktop/README.md @@ -1,4 +1,4 @@ -# setup_virtual_desktop +# virtual_desktop A reusable action to set up a virtual desktop environment on Linux GitHub Actions runners for GUI applications, system tray icons, and notifications. @@ -17,7 +17,7 @@ See [action.yml](action.yml) ```yaml steps: - name: Setup virtual desktop - uses: LizardByte/actions/actions/setup_virtual_desktop@master + uses: LizardByte/actions/actions/virtual_desktop@master with: appindicator-version: ayatana display-size: 1280x720 @@ -141,7 +141,7 @@ jobs: uses: actions/checkout@v4 - name: Setup virtual desktop - uses: LizardByte/actions/actions/setup_virtual_desktop@master + uses: LizardByte/actions/actions/virtual_desktop@master with: environment: xfce @@ -167,7 +167,7 @@ jobs: - name: Setup virtual desktop id: desktop - uses: LizardByte/actions/actions/setup_virtual_desktop@master + uses: LizardByte/actions/actions/virtual_desktop@master with: appindicator-version: ayatana display-size: 1920x1080 @@ -202,7 +202,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Setup virtual desktop - uses: LizardByte/actions/actions/setup_virtual_desktop@master + uses: LizardByte/actions/actions/virtual_desktop@master with: environment: xfce @@ -233,7 +233,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Setup virtual desktop - uses: LizardByte/actions/actions/setup_virtual_desktop@master + uses: LizardByte/actions/actions/virtual_desktop@master with: environment: openbox display-size: 1024x768 @@ -266,7 +266,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Setup 4K virtual desktop - uses: LizardByte/actions/actions/setup_virtual_desktop@master + uses: LizardByte/actions/actions/virtual_desktop@master with: environment: lxde display-size: 3840x2160 @@ -289,7 +289,7 @@ jobs: desktop: [xfce, lxde, openbox, fluxbox] steps: - name: Setup ${{ matrix.desktop }} - uses: LizardByte/actions/actions/setup_virtual_desktop@master + uses: LizardByte/actions/actions/virtual_desktop@master with: environment: ${{ matrix.desktop }} diff --git a/actions/setup_virtual_desktop/action.yml b/actions/virtual_desktop/action.yml similarity index 100% rename from actions/setup_virtual_desktop/action.yml rename to actions/virtual_desktop/action.yml diff --git a/actions/setup_virtual_desktop/ci-matrix.json b/actions/virtual_desktop/ci-matrix.json similarity index 100% rename from actions/setup_virtual_desktop/ci-matrix.json rename to actions/virtual_desktop/ci-matrix.json diff --git a/actions/setup_virtual_desktop/debug_indicators.sh b/actions/virtual_desktop/debug_indicators.sh similarity index 100% rename from actions/setup_virtual_desktop/debug_indicators.sh rename to actions/virtual_desktop/debug_indicators.sh diff --git a/actions/setup_virtual_desktop/docs/images/screenshot-fluxbox.png b/actions/virtual_desktop/docs/images/screenshot-fluxbox.png similarity index 100% rename from actions/setup_virtual_desktop/docs/images/screenshot-fluxbox.png rename to actions/virtual_desktop/docs/images/screenshot-fluxbox.png diff --git a/actions/setup_virtual_desktop/docs/images/screenshot-lxde.png b/actions/virtual_desktop/docs/images/screenshot-lxde.png similarity index 100% rename from actions/setup_virtual_desktop/docs/images/screenshot-lxde.png rename to actions/virtual_desktop/docs/images/screenshot-lxde.png diff --git a/actions/setup_virtual_desktop/docs/images/screenshot-mate.png b/actions/virtual_desktop/docs/images/screenshot-mate.png similarity index 100% rename from actions/setup_virtual_desktop/docs/images/screenshot-mate.png rename to actions/virtual_desktop/docs/images/screenshot-mate.png diff --git a/actions/setup_virtual_desktop/docs/images/screenshot-openbox.png b/actions/virtual_desktop/docs/images/screenshot-openbox.png similarity index 100% rename from actions/setup_virtual_desktop/docs/images/screenshot-openbox.png rename to actions/virtual_desktop/docs/images/screenshot-openbox.png diff --git a/actions/setup_virtual_desktop/docs/images/screenshot-xfce.png b/actions/virtual_desktop/docs/images/screenshot-xfce.png similarity index 100% rename from actions/setup_virtual_desktop/docs/images/screenshot-xfce.png rename to actions/virtual_desktop/docs/images/screenshot-xfce.png diff --git a/actions/setup_virtual_desktop/post-ci.sh b/actions/virtual_desktop/post-ci.sh similarity index 100% rename from actions/setup_virtual_desktop/post-ci.sh rename to actions/virtual_desktop/post-ci.sh diff --git a/actions/setup_virtual_desktop/pyproject.toml b/actions/virtual_desktop/pyproject.toml similarity index 90% rename from actions/setup_virtual_desktop/pyproject.toml rename to actions/virtual_desktop/pyproject.toml index ff35aeb..9574568 100644 --- a/actions/setup_virtual_desktop/pyproject.toml +++ b/actions/virtual_desktop/pyproject.toml @@ -3,7 +3,7 @@ requires = ["setuptools", "wheel"] build-backend = "setuptools.build_meta" [project] -name = "lizardbyte-actions-setup-virtual-desktop" +name = "lizardbyte-actions-virtual-desktop" version = "0.0.0" description = "Setup virtual desktop action for GitHub workflows." requires-python = ">=3.12" diff --git a/actions/setup_virtual_desktop/setup_desktop.sh b/actions/virtual_desktop/setup_desktop.sh similarity index 100% rename from actions/setup_virtual_desktop/setup_desktop.sh rename to actions/virtual_desktop/setup_desktop.sh diff --git a/actions/setup_virtual_desktop/test_appindicator.py b/actions/virtual_desktop/test_appindicator.py similarity index 100% rename from actions/setup_virtual_desktop/test_appindicator.py rename to actions/virtual_desktop/test_appindicator.py diff --git a/tests/test_actions.py b/tests/test_actions.py new file mode 100644 index 0000000..a38d0a7 --- /dev/null +++ b/tests/test_actions.py @@ -0,0 +1,25 @@ +# standard imports +import os + +# lib imports +import pytest + +ACTIONS_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'actions') +MAX_ACTION_NAME_LENGTH = 17 + + +def get_action_names(): + """Return a list of directory names inside the actions directory.""" + return [ + name for name in os.listdir(ACTIONS_DIR) + if os.path.isdir(os.path.join(ACTIONS_DIR, name)) and not name.startswith('_') and not name.startswith('.') + ] + + +@pytest.mark.parametrize('action_name', get_action_names()) +def test_action_name_length(action_name): + """Action directory names must not exceed 17 characters.""" + assert len(action_name) <= MAX_ACTION_NAME_LENGTH, ( + f"Action name '{action_name}' is {len(action_name)} characters long, " + f"but must be no more than {MAX_ACTION_NAME_LENGTH} characters." + ) diff --git a/tests/check_trailing_spaces/check_trailing_spaces.test.js b/tests/trailing_spaces/trailing_spaces.test.js similarity index 99% rename from tests/check_trailing_spaces/check_trailing_spaces.test.js rename to tests/trailing_spaces/trailing_spaces.test.js index edac1d7..a939e65 100644 --- a/tests/check_trailing_spaces/check_trailing_spaces.test.js +++ b/tests/trailing_spaces/trailing_spaces.test.js @@ -13,7 +13,7 @@ const fs = require('node:fs'); const { createMockContext, createMockGithub, createMockCore, setupConsoleMocks } = require('../testUtils.js'); -const checkTrailingSpacesAction = require('../../actions/check_trailing_spaces/check_trailing_spaces.js'); +const checkTrailingSpacesAction = require('../../actions/trailing_spaces/trailing_spaces.js'); const { isTextFile, shouldIgnoreFile,