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

feat: continue with checking output even if mutants command fails #3

feat: continue with checking output even if mutants command fails

feat: continue with checking output even if mutants command fails #3

Workflow file for this run

name: Logging Mutants
# only run on push in order to update the cache output
# flow:
# restore cache
# install cargo-mutants crate in order to run the 'cargo mutants' command
# create a file with the current commit hash if a previous one doesn't exist, then print it
# run the script that handles the 'cargo mutants' command on the differences between the latest updates and the last commit where it was ran
# overwrite the previous commit hash with the current one for the following run
# delete the old cache
# save the new cache with the updated mutants
on:
push:
branches:
- master
- develop
- next
- deployer/testing-shell-script
jobs:
save_cache:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Restore mutants-output cached folder
id: cache-restore
uses: actions/cache/restore@v3
with:
path: ./mutation-testing/packages-output
key: mutants-stable-develop
- name: Install cargo-mutants crate
run: cargo install cargo-mutants
- name: Create file with current commit hash if it doesn't exist
run: |
if [ ! -f last_commit_hash.txt ]; then
echo "${{ github.sha }}" > last_commit_hash.txt
fi
working-directory: ./mutation-testing/packages-output
- name: Print old commit hash
run: cat ./mutation-testing/packages-output/last_commit_hash.txt
- name: Create git.diff file
run: |
last_commit_hash=$(<../packages-output/last_commit_hash.txt)
git diff $last_commit_hash > git.diff
working-directory: ./mutation-testing/scripts
- name: Remove deleted functions from output files
run: ./remove-deleted-functions-from-output.sh
working-directory: ./mutation-testing/scripts
- name: Remove deleted file lines from git.diff file
run: ./remove-deleted-file-lines.sh
working-directory: ./mutation-testing/scripts
- name: Run the mutation testing on the differences
run: |
if [ -f ./packages-output/last_commit_hash.txt ]; then
cargo mutants --no-shuffle -j 2 -vV --in-diff ./scripts/git.diff --output temp/
fi
working-directory: ./mutation-testing
- name: Update the content from the stable output
run: bash append-match-package.sh
working-directory: ./mutation-testing/scripts
- name: Re-write the old commit hash with the current one
run: |
echo "${{ github.sha }}" > last_commit_hash.txt
working-directory: ./mutation-testing/packages-output
- name: Print new commit hash
run: cat ./mutation-testing/packages-output/last_commit_hash.txt
- name: Delete Previous Cache
if: ${{ steps.cache-restore.outputs.cache-hit }}
continue-on-error: true
run: |
gh extension install actions/gh-actions-cache
gh actions-cache delete "mutants-stable-develop" --confirm
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# TODO: feature for retrying the save in case it fails for any reason (in order not to lose the cache)
- name: Save Cache
uses: actions/cache/save@v3
with:
path: ./mutation-testing/packages-output
key: mutants-stable-develop
# cache_mutants:
# runs-on: ubuntu-latest
# steps:
# - name: Checkout the latest code
# id: git_checkout
# uses: actions/checkout@v3
# - name: Cache mutants-initial folder
# uses: actions/cache@v3
# with:
# path: mutants-initial
# key: mutants-initial
# - name: Print caught mutants
# run: cat mutants-initial/caught.txt
# - name: Print missed mutants
# run: cat mutants-initial/missed.txt
# - name: Print unviable mutants
# run: cat mutants-initial/unviable.txt
# - name: Print timeout mutants
# run: cat mutants-initial/timeout.txt
# Upload cache stable output version
# cache_mutants_output:
# runs-on: ubuntu-latest
# steps:
# - name: Checkout the latest code
# id: git_checkout
# uses: actions/checkout@v3
# - name: Cache mutants-initial folder
# uses: actions/cache@v3
# with:
# path: mutation-testing/packages-output
# key: mutants-stable-develop
# # - name: Print caught mutants
# # run: cat mutants-initial/caught.txt
# ## Mutants testing: Execute on push on packages that have tested functions modified
# cache_update_output:
# runs-on: ubuntu-latest
# steps:
# - name: Checkout the latest code
# id: git_checkout
# uses: actions/checkout@v3
# - name: Restore mutants-output cached folder
# uses: actions/cache/restore@v3
# with:
# path: mutation-testing/packages-output
# key: mutants-stable-develop
# - name: Print caught mutants
# run: cat mutation-testing/packages-output/pox-locking/missed.txt
# - run: cargo install cargo-mutants
# # - name: Update stable mutants with modified functions
# # run: ./git-diff.sh
# # working-directory: mutation-testing/scripts
# # - name: Print updated missed mutants
# # run: cat mutation-testing/packages-output/pox-locking/missed.txt
# - name: Append 2 line to one file
# run: |
# echo "text 1" >> missed.txt
# echo "text 2" >> missed.txt
# working-directory: mutation-testing/packages-output/pox-locking
# - name: outshow new cached file
# run: cat missed.txt
# working-directory: mutation-testing/packages-output/pox-locking
# # - name: Cache mutants-initial folder
# # uses: actions/cache/save@v3
# # with:
# # path: mutation-testing/packages-output
# # key: mutants-stable-develop
# - name: Save Cache
# uses: Wandalen/wretry.action@a163f62ae554a8f3cbe27b23db15b60c0ae2e93c # v1.3.0
# with:
# action: actions/cache/save@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2
# with: |
# path: mutation-testing/packages-output
# key: mutants-stable-develop
# attempt_limit: 5
# attempt_delay: 3000
# # Upload stable output version
# stable-mutants:
# name: Upload Stable Mutants Testing
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# with:
# fetch-depth: 0 # do we want to fetch all?
# - name: Archive mutants output
# uses: actions/upload-artifact@v3
# if: always()
# with:
# name: mutants-stable-develop
# path: mutation-testing/packages-output
# ## Mutants testing: Execute on PR on packages that have tested functions modified
# ### download it && see how it is
# incremental-mutants:
# name: Incremental Mutants Testing
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# - name: Download stable output artifact
# uses: actions/download-artifact@v3
# with:
# name: mutants-stable-develop
# path: mutation-testing/packages-output
# - name: Display structure of downloaded files
# run: ls -R
# working-directory: mutation-testing/packages-output
# - run: cargo install cargo-mutants
# - name: Update stable mutants with modified functions
# run: ./git-diff.sh
# working-directory: mutation-testing/scripts
# - name: Archive mutants output
# uses: actions/upload-artifact@v3
# if: always()
# with:
# name: mutants-stable-develop
# path: mutation-testing/packages-output
# incremental-mutants-2:
# name: Incremental Mutants Testing
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# - name: Check for the existence of the stable output artifact
# id: check-artifact
# uses: actions/github-script@v5
# with:
# script: |
# const artifacts = await github.rest.actions.listWorkflowRunArtifacts({
# owner: context.repo.owner,
# repo: context.repo.repo,
# run_id: context.runId,
# });
# const artifactExists = artifacts.data.artifacts.some(artifact => artifact.name === 'mutants-stable-develop');
# core.setOutput('exists', artifactExists);
# - name: Download stable output artifact
# if: steps.check-artifact.outputs.exists == 'true'
# uses: actions/download-artifact@v3
# with:
# name: mutants-stable-develop
# path: mutation-testing/packages-output
# - name: Display structure of downloaded files
# if: steps.check-artifact.outputs.exists == 'true'
# run: ls -R
# working-directory: mutation-testing/packages-output
# - run: cargo install cargo-mutants
# - name: Update stable mutants with modified functions
# if: steps.check-artifact.outputs.exists == 'true'
# run: ./git-diff.sh
# working-directory: mutation-testing/scripts
# - name: Archive mutants output
# uses: actions/upload-artifact@v3
# if: always()
# with:
# name: mutants-stable-develop
# path: mutation-testing/packages-output