Skip to content
This repository has been archived by the owner on Feb 6, 2024. It is now read-only.

PLPT-580 - Correct Zip Path #121

PLPT-580 - Correct Zip Path

PLPT-580 - Correct Zip Path #121

name: Test Zip Upload Artifact
on:
pull_request:
types: [opened, synchronize, reopened]
workflow_dispatch:
jobs:
test-zip-upload-artifact:
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v3
- name: Setup Test Files for Zip
shell: bash
run: |
echo "################################"
echo "Setup Test files for Zip"
echo "################################"
echo ""
echo "Create subfolder"
mkdir "subfolder"
echo "Create test-root.txt"
echo "################ Test Root ################" > test-root.txt
echo ""
echo "Create subfolder/test-sub1.txt"
echo "################ Test Sub1 ################" > subfolder/test-sub1.txt
echo ""
echo "Create subfolder/test-sub2.txt"
echo "################ Test Sub2 ################" > subfolder/test-sub2.txt
echo ""
echo "Create subfolder/sub-subfolder/test-sub-sub1.txt"
mkdir "subfolder/sub-subfolder"
echo "################ Test Sub Sub1 ################" > subfolder/sub-subfolder/test-sub-sub1.txt
echo ""
echo "Create subfolder/sub-subfolder/test-sub-sub2.txt"
echo "################ Test Sub Sub2 ################" > subfolder/sub-subfolder/test-sub-sub2.txt
echo ""
echo "DONE!"
- name: 1. Artifact with Sub1 and Sub2
if: always()
uses: ./
with:
name: with-sub1-and-sub2
path: subfolder
retention-days: 1
- name: 2. Artifact with Root
if: always()
uses: ./
with:
name: with-root
path: test-root.txt
retention-days: 1
- name: 3. Artifact with Root and Sub1 no Sub2
if: always()
uses: ./
with:
name: with-root-sub2-no-sub1
path: |
test-root.txt
subfolder/
!subfolder/test-sub2.txt
retention-days: 1
- name: 4. Artifact with Sub Sub files
if: always()
uses: ./
with:
name: with-sub-sub-files
path: |
subfolder/sub-subfolder
retention-days: 1
- name: Test for Existence of zip files
if: always()
shell: python
run: |
import os
import sys
import zipfile
def unzip_file(name: str, out_path: str):
print("")
print(f"Unzipping {name}")
os.makedirs(out_path, exist_ok=True)
with zipfile.ZipFile(name, 'r') as zip_ref:
zip_ref.extractall(out_path)
def check_file_exists(name: str, out_path: str) -> bool:
has_file = os.path.exists(os.path.join(out_path, name))
return has_file
def fail_workflow(out_dir: str, name_expected: dict) -> bool:
print("-----------------------------------------------------------------------")
should_fail = False
for name, expected in name_expected.items():
file_exists = check_file_exists(name, out_dir)
outcome = "PASS" if expected == file_exists else "FAIL"
print(f"{outcome} - Expected to find {name}? {expected}")
if file_exists != expected:
should_fail = True
print("-----------------------------------------------------------------------")
return should_fail
file_root = "test-root.txt"
file_sub1 = "subfolder/test-sub1.txt"
file_sub2 = "subfolder/test-sub2.txt"
dir_sub = "subfolder"
dir_sub_sub = "subfolder/sub-subfolder"
file_sub_sub2 = "test-sub-sub2.txt"
test_1 = "with-sub1-and-sub2.zip"
out_1 = "test1"
unzip_file(test_1, out_1)
fail_1 = fail_workflow(
out_1,
{
file_root: False,
file_sub1: True,
file_sub2: True
}
)
test_2 = "with-root.zip"
out_2 = "test2"
unzip_file(test_2, out_2)
fail_2 = fail_workflow(
out_2,
{
file_root: True,
file_sub1: False,
file_sub2: False
}
)
test_3 = "with-root-sub2-no-sub1.zip"
out_3 = "test3"
unzip_file(test_3, out_3)
fail_3 = fail_workflow(
out_3,
{
file_root: True,
file_sub1: True,
file_sub2: False
}
)
test_4 = "with-sub-sub-files.zip"
out_4 = "test4"
unzip_file(test_4, out_4)
fail_4 = fail_workflow(
out_4,
{
file_root: False,
file_sub1: False,
file_sub2: False,
file_sub_sub2: True,
dir_sub: False,
dir_sub_sub: False,
}
)
if fail_1 or fail_2 or fail_3 or fail_4:
print("ERROR: One or more zip file checks failed")
sys.exit(1)