Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
wip
Yoann Chaudet committed Jul 27, 2022

Unverified

No user is associated with the committer email.
1 parent 4b66138 commit d9d2532
Showing 2 changed files with 111 additions and 8 deletions.
16 changes: 8 additions & 8 deletions bin/record_expected_output
@@ -1,14 +1,14 @@
#! /usr/bin/env sh

if [ "local" = "$1" ]; then
export JEKYLL_ENV=production
export PAGES_REPO_NWO=actions/jekyll-build-pages
export JEKYLL_BUILD_REVISION=JEKYLL_BUILD_REVISION
export JEKYLL_ENV=production
export PAGES_REPO_NWO=actions/jekyll-build-pages
export JEKYLL_BUILD_REVISION=JEKYLL_BUILD_REVISION

for dir in $(ls test_projects)
do
bundle exec github-pages build --verbose -s test_projects/$dir -d test_projects/$dir/_expected
done
for dir in $(ls test_projects)
do
bundle exec github-pages build --verbose -s test_projects/$dir -d test_projects/$dir/_expected
done
else
act -b -s GITHUB_TOKEN -j record-expected-output
act -b -s GITHUB_TOKEN -j record-expected-output
fi
103 changes: 103 additions & 0 deletions bin/sync_expected_output.ps1
@@ -0,0 +1,103 @@
#!/usr/bin/env pwsh
#Requires -Version 7.2

<#
.SYNOPSIS
Trigger the workflow that records the tests expected outputs, wait for its execution to finish,
then bring back those results locally.
.DESCRIPTION
This script is meant to run locally outside of Actions. It relies on `gh` and `git`.
#>

# Get the repository's path (ps1 extension on the script is required for PSScriptRoot to be available 🤦)
$repositoryPath = Resolve-Path (Join-Path $PSScriptRoot '..')

# Get the test_project's path
$testProjectsPath = Resolve-Path (Join-Path $PSScriptRoot '../test_projects')

#
# Utilities
#

# Run a command and validate it returned a 0 exit code
function Invoke-Command {
param (
[ScriptBlock] $Command
)

& $Command
if ($LASTEXITCODE -ne 0) {
Write-Error "Command failed: $Command"
throw
}
}

# Get the current git ref name
function Get-GitRef {
$commitId = Invoke-Command { & git -C $repositoryPath rev-parse --abbrev-ref HEAD }
$commitId.Trim()
}

# Create a temp folder and return its path
function New-TemporaryFolder {
$path = Join-Path ([System.IO.Path]::GetTempPath()) ([System.Guid]::NewGuid())
New-Item -ItemType 'Directory' -Path $path | Out-Null
$path
}

#
# Main
#

# Init
Set-StrictMode -version 'Latest'
$ErrorActionPreference = 'Stop'

# Get git ref name
$ref = Get-GitRef

# # Run the workflow
# Write-Host 'Queue workflow'
# $workflow = 'record.yml'
# Invoke-Command { & gh workflow run $workflow --ref $ref | Out-Null }

# # Wait for a few seconds for the workflow to get created
# Write-Host 'Wait a few seconds...'
# Start-Sleep -Seconds 5

# # Lookup the run id (it is not perfect because of the APIs...)
# Write-Host 'Lookup run id'
# $runId = Invoke-Command { & gh run list --workflow $workflow --branch $ref --limit 100 --json databaseId --jq '.[].databaseId' }

# # Wait for the workflow to finish
# Write-Host "Wait for workflow $runId to complete"
# Invoke-Command { & gh run watch $runId --exit-status }

# # Download the artifacts in a temp folder
# Write-Host 'Download artifacts'
# $tempFolder = New-TemporaryFolder
# Invoke-Command { & gh run download $runId --dir $tempFolder }


# TEMP
$tempFolder = '/var/folders/0p/xh302z2x64b64_4l9xc5n7bm0000gn/T/959ec25f-986e-48b1-b6a8-155cd7ba62fe'

Write-Host $tempFolder
$runId = 2748946582

# Iterate over the test projects
Get-ChildItem -Path $testProjectsPath -Directory | ForEach-Object {
# Construct the artifact path and make sure a matching artifact is found
$artifactPath = Join-Path $tempFolder $_.BaseName
if (Test-Path $artifactPath -PathType 'Container') {
# Copy artifact to the expected output folder
$destinationPath = Join-Path $testProjectsPath $_.BaseName '_expected'
Copy-Item -Path $artifactPath -Destination $destinationPath -Recurse | Out-Null
}

# Ignore test project
else {
Write-Warning "Unable to find artifact for test project $($_.BaseName)"
}
}

0 comments on commit d9d2532

Please sign in to comment.