Skip to content

Fix parse error in Windows PowerShell #115

Fix parse error in Windows PowerShell

Fix parse error in Windows PowerShell #115

Workflow file for this run

name: CI
on:
push: {}
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
env:
FORCE_COLOR: 1
steps:
- uses: earthly/actions-setup@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- name: earthly +test
if: github.ref != 'refs/heads/main'
run: earthly --strict +test
- name: earthly +push
if: github.ref == 'refs/heads/main'
run: earthly --push --secret NUGET_API_KEY --secret PSGALLERY_API_KEY --strict +all
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
PSGALLERY_API_KEY: ${{ secrets.PSGALLERY_API_KEY }}
- name: Upload Built Modules
uses: actions/upload-artifact@v4
with:
name: Modules
path: |
Modules/*
!Modules/*-TestResults
- uses: actions/upload-artifact@v4
with:
name: TestResults
path: Modules/ModuleBuilder-TestResults
# These ones are just for the test matrix
- name: Upload Tests
uses: actions/upload-artifact@v4
with:
name: PesterTests
path: ${{github.workspace}}/Tests
- name: Upload build.requires.psd1
uses: actions/upload-artifact@v4
with:
name: build.requires.psd1
path: ${{github.workspace}}/build.requires.psd1
test:
needs: build
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
steps:
- name: Download build.requires.psd1
uses: actions/download-artifact@v4
with:
name: build.requires.psd1
- name: Download Pester Tests
uses: actions/download-artifact@v4
with:
name: PesterTests
path: PesterTests
- name: Download Build Output
uses: actions/download-artifact@v4
with:
name: Modules
path: Modules # /home/runner/work/ModuleBuilder/ModuleBuilder/Modules
- name: Install Output Modules
shell: pwsh
run: | # PowerShell
# https://docs.github.com/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-powershell#powershell-module-locations
$ModuleDestination = if ($IsWindows) {
Join-Path ([Environment]::GetFolderPath('MyDocuments')) 'PowerShell/Modules'
} else {
Join-Path $HOME '.local/share/powershell/Modules'
}
Get-ChildItem -Directory Modules -OutVariable Modules
| Move-Item -Destination { Join-Path $ModuleDestination $_.Name } -Force
Write-Host "Installing $($Modules -join ', ') to $ModuleDestination"
Get-ChildItem -Directory $ModuleDestination
Write-Host "PSModulePath:"
$Env:PSModulePath -split ([IO.Path]::PathSeparator) | Out-Host
@(Get-Content build.requires.psd1)
| Where { $_ -notmatch "ModuleBuilder"}
| Set-Content build.requires.psd1
- name: ⚡ Install Required Modules
uses: JustinGrote/[email protected]
- name: Invoke Pester Tests
id: pester
uses: zyborg/pester-tests-report@v1
with:
# include_paths: tests
# exclude_paths: tests/powershell1,tests/powershell2
# exclude_tags: skip_ci
report_name: ${{ matrix.os }}_validation
report_title: My Module Tests
github_token: ${{ secrets.GITHUB_TOKEN }}
tests_fail_step: true
skip_check_run: true # Our test results are too large
- name: Summarize test results
shell: pwsh
run: | # PowerShell
Write-ActionInfo 'Total Tests Executed...: ${{ steps.pester.outputs.total_count }}'
Write-ActionInfo 'Total Tests Passed.....: ${{ steps.pester.outputs.passed_count }}'
if (${{ steps.pester.outputs.failed_count }} -gt 0) {
Set-ActionFailed 'Total Tests Failed.....: ${{ steps.pester.outputs.failed_count }}'
} else {
Write-ActionInfo 'Total Tests Failed.....: ${{ steps.pester.outputs.failed_count }}'
}