Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[build] Fix for #3365--Add grammar coverage tool. #3511

Merged
merged 14 commits into from
Jun 22, 2023
111 changes: 111 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -309,3 +309,114 @@ jobs:
After="${{github.event.after}}"
fi
bash _scripts/test-static-checks.sh -t ${{matrix.language}} -f diff $Before $After

coverage:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest]
language: [ CSharp ]
steps:
- name: Info
shell: bash
run: |
arch
uname -a
if [ -f /proc/cpuinfo ]; then cat /proc/cpuinfo; fi
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install Dotnet
uses: actions/setup-dotnet@v3.2.0
with:
dotnet-version: '7.0.x'
- name: Test Dotnet
run: |
dotnet --version
dotnet --info
dotnet --list-runtimes
dotnet --list-sdks
- name: Install Java
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'zulu'
- name: Test Java
run: |
dotnet --version
java --version
javac --version
- name: Install Dart
if: ${{ matrix.language == 'Dart' }}
uses: dart-lang/setup-dart@v1
- name: Test Dart
if: ${{ matrix.language == 'Dart' }}
run: |
dart --version
- name: Install Go
if: ${{ matrix.language == 'Go' }}
uses: actions/setup-go@v4
with:
go-version: '^1.18.0'
- name: Test Go
if: ${{ matrix.language == 'Go' }}
run: |
go version
- name: Install Python
uses: actions/setup-python@v4.6.1
with:
python-version: '3.10'
- name: Test Python
run: |
python --version
- name: Upgrade Pip.
run: |
python -m ensurepip --upgrade
- name: Test Pip.
run: |
pip --version
- name: Install Antlr tool
run: |
pip install antlr4-tools
- name: Install JavaScript
if: ${{ matrix.language == 'JavaScript' }}
uses: actions/setup-node@v3.6.0
with:
node-version: '16.13.0'
- name: Test JavaScript
if: ${{ matrix.language == 'JavaScript' }}
run: |
node --version
- name: Install Trash
shell: bash
run: |
dotnet tool restore
- name: Test Trash install
shell: bash
run: |
dotnet trgen -- --help
- name: Test
shell: bash
run: |
if [ "${{github.event_name}}" == "pull_request" ]; then
Before="${{github.event.pull_request.base.sha}}"
After="${{github.event.pull_request.head.sha}}"
else
Before="${{github.event.before}}"
After="${{github.event.after}}"
fi
bash _scripts/test-cover.sh -f diff $Before $After
- name: Archive
shell: bash
run: |
mkdir downloads
find . -type f -name cover.html | xargs tar -uf archive.tar
cd downloads
tar -xvf ../archive.tar
- name: Upload Archive
uses: actions/upload-artifact@v2
with:
name: coverage
path: downloads
53 changes: 53 additions & 0 deletions _scripts/templates/CSharp/st.test-cover.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Generated from trgen <version>

# People often specify a test file directory, but sometimes no
# tests are provided. Git won't check in an empty directory.
# Test if the test file directory does not exist, or it is just
# an empty directory.
if [ ! -d ../<example_files_unix> ]
then
echo "No test cases provided."
exit 0
elif [ ! "$(ls -A ../<example_files_unix>)" ]
then
echo "No test cases provided."
exit 0
fi

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")

# Get a list of test files from the test directory. Do not include any
# .errors or .tree files. Pay close attention to remove only file names
# that end with the suffix .errors or .tree.
files2=`find ../<example_files_unix> -type f | grep -v '.errors$' | grep -v '.tree$'`
files=()
for f in $files2
do
dotnet triconv -- -f utf-8 $f > /dev/null 2>&1
if [ "$?" = "0" ]
then
files+=( $f )
fi
done

# Parse all input files.
<if(individual_parsing)>
# Individual parsing: NOT SUPPORTED!
<else>
# Group parsing.
echo "${files[*]}" | dotnet trwdog -- dotnet trcover -- -x
status=$?
<endif>

# trwdog returns 255 if it cannot spawn the process. This could happen
# if the environment for running the program does not exist, or the
# program did not build.
if [ "$status" = "255" ]
then
echo "Test failed."
exit 1
fi

rm -f $old/updated.txt $old/new_errors2.txt $old/new_errors.txt
exit 0
Loading