Skip to content

Implement nondeterministic finite transducers (NFTs) #594

Implement nondeterministic finite transducers (NFTs)

Implement nondeterministic finite transducers (NFTs) #594

Workflow file for this run

name: Code Quality
on:
pull_request:
jobs:
warnings-base:
runs-on: ${{ matrix.os }}
strategy:
# Ensures that if the task on one system fails, other systems (the rest of the matrix) will be
# still executed.
fail-fast: false
matrix:
os: [ ubuntu-latest, macos-latest ]
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.base_ref }}
- uses: ./.github/workflows/actions/setup
with:
os: ${{ matrix.os }}
- uses: ./.github/workflows/actions/compile
with:
build-log-output-file: 'warnings-base'
warnings-new:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, macos-latest ]
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/setup
with:
os: ${{ matrix.os }}
- uses: ./.github/workflows/actions/compile
with:
build-log-output-file: 'warnings-new'
run-tests:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, macos-latest ]
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/setup
with:
os: ${{ matrix.os }}
- uses: ./.github/workflows/actions/compile
with:
build-log-output-file: 'warnings-new'
- name: Test the library
run: make test
run-test-performance-base:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [
#ubuntu-latest,
macos-latest
]
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.base_ref }}
- uses: ./.github/workflows/actions/setup
with:
os: ${{ matrix.os }}
- uses: ./.github/workflows/actions/compile
- name: Set up Python
uses: actions/setup-python@v3
with:
python-version: 3.9
cache: 'pip'
- name: Install Python Dependencies
shell: sh
run: |
python -m pip install --upgrade pip
pip install -r tests-integration/requirements.txt
- name: Test the library
run: make test-performance
- name: Cache performance results
uses: actions/cache@v3
with:
path: |
./tests-integration/results/corr-single-param-jobs.csv
./tests-integration/results/corr-double-param-jobs.csv
key: performance-tests-baseline-${{ runner.os }}-${{ github.sha }}
run-test-performance:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [
#ubuntu-latest,
macos-latest
]
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/setup
with:
os: ${{ matrix.os }}
- uses: ./.github/workflows/actions/compile
- name: Set up Python
uses: actions/setup-python@v3
with:
python-version: 3.9
cache: 'pip'
- name: Install Python Dependencies
shell: sh
run: |
python -m pip install --upgrade pip
pip install -r tests-integration/requirements.txt
- name: Test the library
run: make test-performance
- name: Cache performance results
uses: actions/cache@v3
with:
path: |
./tests-integration/results/corr-single-param-jobs.csv
./tests-integration/results/corr-double-param-jobs.csv
key: performance-tests-target-${{ runner.os }}-${{ github.sha }}
compare-performance:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [
#ubuntu-latest,
macos-latest
]
needs: [ run-test-performance, run-test-performance-base ]
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v3
with:
python-version: 3.9
cache: 'pip'
- name: Install Python Dependencies
shell: sh
run: |
python -m pip install --upgrade pip
pip install tabulate pandas
- name: Restore target profiles
uses: actions/cache/restore@v3
with:
path: |
./tests-integration/results/corr-single-param-jobs.csv
./tests-integration/results/corr-double-param-jobs.csv
key: performance-tests-target-${{ runner.os }}-${{ github.sha }}
- run: mv ./tests-integration/results/corr-single-param-jobs.csv single-param-target.csv
- run: mv ./tests-integration/results/corr-double-param-jobs.csv double-param-target.csv
- name: Restore baseline profiles
uses: actions/cache/restore@v3
with:
path: |
./tests-integration/results/corr-single-param-jobs.csv
./tests-integration/results/corr-double-param-jobs.csv
key: performance-tests-baseline-${{ runner.os }}-${{ github.sha }}
- run: mv ./tests-integration/results/corr-single-param-jobs.csv single-param-baseline.csv
- run: mv ./tests-integration/results/corr-double-param-jobs.csv double-param-baseline.csv
- name: LOOK HERE for Comparison of operations accepting single automaton as parameters
run: python3 tests-integration/scripts/compare_profiles.py single-param-target.csv single-param-baseline.csv
- name: LOOK HERE for Comparison of operations accepting two automata as parameters
run: python3 tests-integration/scripts/compare_profiles.py double-param-target.csv double-param-baseline.csv
compare-versions:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, macos-latest ]
needs: [ warnings-base, warnings-new ]
steps:
- name: Restore new cache
uses: actions/cache/restore@v3
with:
path: ./build_log
key: build-log-warnings-new-${{ runner.os }}-${{ github.sha }}
- run: mv build_log new_warnings
- name: Restore base cache
uses: actions/cache/restore@v3
with:
path: ./build_log
key: build-log-warnings-base-${{ runner.os }}-${{ github.sha }}
- run: mv build_log base_warnings
- name: Print base warnings
run: cat base_warnings
- name: Print new warnings
run: cat new_warnings
- name: Create comparison diff file
run: |
diff base_warnings new_warnings | grep "^> *" | sed "s/^> //g" > comparison
cat comparison
- name: Count number of warnings
run: |
number_of_warnings=`cat comparison | grep "warning:" | wc -l`
echo $number_of_warnings
if [ $number_of_warnings -gt 0 ]; then
exit 1
fi
code-coverage:
runs-on: ubuntu-latest
needs: run-tests
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/setup
- name: Build library for coverage
run: make coverage
- name: Test the library
run: make test
- name: Upload coverage to codecov
uses: codecov/codecov-action@v3
with:
gcov: true