Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
133 changes: 132 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Test this action by running it from the same repo (uses: ./.)
# Covers variations from .local/todo.md
name: CI

on:
Expand All @@ -8,7 +9,8 @@ on:
branches: [main]

jobs:
test:
test-default:
name: default install
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand All @@ -20,3 +22,132 @@ jobs:
run: |
curl --version
jq --version

test-check:
name: install then check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: ./
id: install

- uses: ./
id: check
with:
mode: 'check'

test-validation-fail:
name: missing Aptfile (expect fail)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Run action with nonexistent Aptfile
id: run
uses: ./
with:
file: 'nonexistent/Aptfile'
continue-on-error: true

- name: Assert validation failed
if: steps.run.outcome == 'failure'
run: echo "Validation correctly failed for missing Aptfile"

- name: Fail if action unexpectedly succeeded
if: steps.run.outcome == 'success'
run: |
echo "::error::Expected action to fail when Aptfile is missing"
exit 1

test-invalid-mode:
name: invalid mode (expect fail)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Run action with invalid mode
id: run
uses: ./
with:
mode: 'invalid'
continue-on-error: true

- name: Assert mode validation failed
if: steps.run.outcome == 'failure'
run: echo "Validation correctly failed for invalid mode"

- name: Fail if action unexpectedly succeeded
if: steps.run.outcome == 'success'
run: |
echo "::error::Expected action to fail for invalid mode"
exit 1

test-install-no-update:
name: install-no-update
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: ./
with:
mode: 'install-no-update'

- name: Verify install
run: |
curl --version
jq --version

test-cache-off:
name: cache disabled
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: ./
with:
cache: 'false'

- name: Verify install
run: |
curl --version
jq --version

test-custom-file:
name: custom Aptfile path
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: ./
with:
file: './config/Aptfile'

- name: Verify install
run: |
curl --version
jq --version

test-lock:
name: Aptfile.lock (install then --locked)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: ./
id: first
name: Install from Aptfile (no lock yet)

- name: Generate Aptfile.lock
run: apt-bundle lock --file Aptfile

- uses: ./
id: second
name: Install from Aptfile.lock (--locked)
with:
mode: 'install-no-update'

- name: Verify install
run: |
curl --version
jq --version
2 changes: 1 addition & 1 deletion action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -146,4 +146,4 @@ runs:
fi

echo "Installing packages from ${{ inputs.file }}..."
sudo apt-bundle $ARGS
sudo apt-bundle install $ARGS
3 changes: 3 additions & 0 deletions config/Aptfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Used by CI job "test-custom-file" (file: ./config/Aptfile)
apt curl
apt jq
Loading