Skip to content

code quality section #35

code quality section

code quality section #35

Workflow file for this run

name: CI
on:
push:
branches: [ main, dev, ci_testing, experiments ]
pull_request:
branches: [ main, dev ]
env:
llvm_version: 18
jobs:
build-linux:
runs-on: ubuntu-22.04
strategy:
# Don't abort runners if a single one fails
fail-fast: false
matrix:
line_width: [80, 100]
indent: ["4", "t"]
steps:
- name: Checkout c3tools
uses: actions/checkout@v4
- name: Checkout c3c compiler source
uses: actions/checkout@v4
with:
repository: c3lang/c3c
path: c3c
- name: Setup environment
run: |
echo "$PWD/c3c/build" >> "$GITHUB_PATH"
echo "PATH: $PATH"
git config --global user.email "ci@c3tools.com"
git config --global user.name "c3tools CI"
- name: Install common deps
run: |
sudo apt-get install zlib1g zlib1g-dev python3 ninja-build curl
- name: Install Clang ${{env.llvm_version}}
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-${{env.llvm_version}} main"
sudo apt-get update
sudo apt-get install -y -t llvm-toolchain-focal-${{env.llvm_version}} libpolly-${{env.llvm_version}}-dev \
clang-${{env.llvm_version}} llvm-${{env.llvm_version}} llvm-${{env.llvm_version}}-dev \
lld-${{env.llvm_version}} liblld-${{env.llvm_version}}-dev
- name: CMake18
if: env.llvm_version >= 18 && env.llvm_version != env.LLVM_DEV_VERSION
run: |
cd c3c
cmake -B build \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=clang-${{env.llvm_version}} \
-DCMAKE_CXX_COMPILER=clang++-${{env.llvm_version}} \
-DCMAKE_LINKER=lld-link-${{env.llvm_version}} \
-DCMAKE_OBJCOPY=llvm-objcopy-${{env.llvm_version}} \
-DCMAKE_STRIP=llvm-strip-${{env.llvm_version}} \
-DCMAKE_DLLTOOL=llvm-dlltool-${{env.llvm_version}} \
-DC3_LLVM_VERSION=${{env.llvm_version}}.1
cmake --build build
- name: c3c compile and run
run: |
cd c3c/resources
../build/c3c compile examples/base64.c3
../build/c3c compile-run examples/args.c3 -- foo -bar "baz baz"
- name: c3c stdlib unit tests
run: |
cd c3c/test
../build/c3c compile-test unit
#
# c3tools self formatting block
#
- name: c3tools unit tests
run: |
c3c --trust=full build c3fmt
c3c --trust=full test
- name: c3fmt c3tools
run: |
find lib/ | grep ".c3$" | xargs -I{} ./build/c3fmt -w ${{ matrix.line_width }} -i ${{ matrix.indent }} {}
- name: c3tools unit tests after formatting
run: |
c3c --trust=full test
- name: c3fmt c3tools (double)
run: |
find lib/ | grep ".c3$" | xargs -I{} ./build/c3fmt -w ${{ matrix.line_width }} -i ${{ matrix.indent }} {}
- name: c3tools unit tests after (double) formatting
run: |
c3c --trust=full test
#
# c3c formatting block
#
- name: c3c compiler tests (original)
run: |
cd c3c/test
python3 src/tester.py ../build/c3c test_suite/
- name: c3fmt stdlib
run: |
find c3c/lib/ | grep ".c3$" | xargs -I{} ./build/c3fmt -w ${{ matrix.line_width }} -i ${{ matrix.indent }} {}
cd c3c/
echo "Checking if any changes in files"
git add . && git diff --quiet && git diff --cached | head
git commit -m "CI commit after formatting"
- name: c3c stdlib unit tests formatted
run: |
cd c3c/test
../build/c3c compile-test unit
- name: c3fmt stdlib (double)
run: |
find c3c/lib/ | grep ".c3$" | xargs -I{} ./build/c3fmt -w ${{ matrix.line_width }} -i ${{ matrix.indent }} {}
cd c3c/
echo "Checking if any changes after formatting (must be the same!)"
git diff | head
git diff --quiet
- name: c3c stdlib unit tests formatted (double)
run: |
cd c3c/test
../build/c3c compile-test unit
- name: c3fmt c3c/test/unit
run: |
find c3c/test/unit | grep ".c3$" | xargs -I{} ./build/c3fmt -w ${{ matrix.line_width }} -i ${{ matrix.indent }} {}
- name: c3c unit tests on formatted c3c/test/unit
run: |
cd c3c/test
../build/c3c compile-test unit
- name: c3fmt of all *.c3t files in test_suite
run: |
./scripts/c3fmt_c3c_test_suite.sh c3c/test/test_suite/