From 36f6120aa11af56611496393fba1cb1b25ca2b2e Mon Sep 17 00:00:00 2001 From: Michael Pollmeier Date: Tue, 25 Jul 2023 15:41:01 +0200 Subject: [PATCH] WIP do not merge - various things for debugging CI * minimise test * use ubuntu 20 * use oracle jdk17 * run in a loop, don't stop on error * log exit code * upload artifacts if smoketest failed --- .github/workflows/pr.yml | 63 +++++----------------------------------- testDistro.sh | 29 ++++++++++++++---- tests/frontends-tests.sh | 2 +- 3 files changed, 32 insertions(+), 62 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 43c980d54cda..3c01b8058d50 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -1,52 +1,8 @@ name: pr on: pull_request jobs: - test: - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-22.04, windows-2022, macos-12] - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 1 - - uses: coursier/cache-action@v6 - - name: Set up JDK - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: '19' - - name: Set up Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: 2.7 - - name: Install Bundler - run: gem install bundler - - name: Delete `.rustup` directory - run: rm -rf /home/runner/.rustup # to save disk space - if: runner.os == 'Linux' - - name: Delete `.cargo` directory # to save disk space - run: rm -rf /home/runner/.cargo - if: runner.os == 'Linux' - - name: Compile and run tests - run: sbt clean +test - formatting: - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 1 - - name: Set up JDK - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: '19' - - name: Check formatting - run: sbt scalafmtCheck Test/scalafmtCheck - - run: echo "Previous step failed because code is not formatted. Run 'sbt scalafmt Test/scalafmt'" - if: ${{ failure() }} test-scripts: - runs-on: ubuntu-22.04 + runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 with: @@ -54,15 +10,10 @@ jobs: - name: Set up JDK uses: actions/setup-java@v3 with: - distribution: 'temurin' - java-version: '19' + distribution: 'oracle' + java-version: '17' - run: ./testDistro.sh - - run: | - mkdir /tmp/foo - echo "int foo(int a, int b, int c, int d, int e, int f) {}" > /tmp/foo/foo.c - ./joern --src /tmp/foo --run scan - ./joern-scan /tmp/foo - ./joern-scan --dump - - run: | - cd joern-cli/target/universal/stage - ./schema-extender/test.sh + - uses: actions/upload-artifact@v3 + with: + name: debug-artifacts + path: target/debug-artifacts diff --git a/testDistro.sh b/testDistro.sh index c46079dbab10..0257c5d8c00a 100755 --- a/testDistro.sh +++ b/testDistro.sh @@ -1,5 +1,5 @@ #!/bin/bash -set -e #stop on error +# set -e #stop on error # set -x #verbose on readonly SCRIPT_ABS_PATH=$(readlink -f "$0") @@ -7,11 +7,30 @@ readonly SCRIPT_ABS_DIR=$(dirname "$SCRIPT_ABS_PATH") readonly REPO_ROOT=$SCRIPT_ABS_DIR echo "staging joern" + pushd $REPO_ROOT - sbt -Dsbt.log.noformat=true clean joerncli/stage querydb/createDistribution - tests/frontends-tests.sh - tests/scripts-test.sh - tests/querydb-test.sh + sbt -Dsbt.log.noformat=true clean joerncli/stage + + # when only running frontends-test 10 times the result is either consistently green or consistently red... + # for i in {0..9}; do + # echo "XX0 run $i start" + # tests/frontends-tests.sh + # exit_code=$? + # echo "XX0 run $i end; exit_code=$exit_code" + # done + + tests/frontends-tests.sh + exit_code=$? + mkdir target/debug-artifacts + + if [ $exit_code -ne 0 ] + then + echo "XX1 error" + cp -rp joern-cli/target/universal/stage/lib/* target/debug-artifacts + else + echo "XX1 success" + echo success > target/debug-artifacts/success.txt + fi popd echo "success. go analyse some code" diff --git a/tests/frontends-tests.sh b/tests/frontends-tests.sh index 7fe012d131f8..060ff03c3215 100755 --- a/tests/frontends-tests.sh +++ b/tests/frontends-tests.sh @@ -8,7 +8,7 @@ SCRIPT_ABS_DIR=$(dirname "$SCRIPT_ABS_PATH") JOERN="$SCRIPT_ABS_DIR"/../joern # first, run a simplistic smoke test -$JOERN --script tests/frontends-smoketest.sc +$JOERN --script tests/frontends-smoketest.sc --verbose # now test all frontends with proper input code frontends=(c jssrc javasrc java ghidra pythonsrc php)