mirror of
				https://github.com/XRPLF/clio.git
				synced 2025-11-04 03:45:50 +00:00 
			
		
		
		
	There are 2 things to know about prettier: - it's quite pretty most of the time - it's not configurable
		
			
				
	
	
		
			107 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: Run tests with sanitizers
 | 
						|
on:
 | 
						|
  schedule:
 | 
						|
    - cron: "0 4 * * 1-5"
 | 
						|
  workflow_dispatch:
 | 
						|
  pull_request:
 | 
						|
    paths:
 | 
						|
      - ".github/workflows/sanitizers.yml"
 | 
						|
 | 
						|
jobs:
 | 
						|
  build:
 | 
						|
    name: Build clio tests
 | 
						|
    strategy:
 | 
						|
      fail-fast: false
 | 
						|
      matrix:
 | 
						|
        include:
 | 
						|
          - sanitizer: tsan
 | 
						|
            compiler: gcc
 | 
						|
          - sanitizer: asan
 | 
						|
            compiler: gcc
 | 
						|
          # - sanitizer: ubsan # todo: enable when heavy runners are available
 | 
						|
          #   compiler: gcc
 | 
						|
    uses: ./.github/workflows/build_impl.yml
 | 
						|
    with:
 | 
						|
      runs_on: ubuntu-latest # todo: change to heavy
 | 
						|
      container: '{ "image": "rippleci/clio_ci:latest" }'
 | 
						|
      disable_cache: true
 | 
						|
      conan_profile: ${{ matrix.compiler }}.${{ matrix.sanitizer }}
 | 
						|
      build_type: Release
 | 
						|
      code_coverage: false
 | 
						|
      static: false
 | 
						|
      unit_tests: true
 | 
						|
      integration_tests: false
 | 
						|
      clio_server: false
 | 
						|
      target: clio_tests
 | 
						|
      sanitizer: ${{ matrix.sanitizer }}
 | 
						|
 | 
						|
  # consider combining this with the previous matrix instead
 | 
						|
  run_tests:
 | 
						|
    needs: build
 | 
						|
    strategy:
 | 
						|
      fail-fast: false
 | 
						|
      matrix:
 | 
						|
        include:
 | 
						|
          - sanitizer: tsan
 | 
						|
            compiler: gcc
 | 
						|
          - sanitizer: asan
 | 
						|
            compiler: gcc
 | 
						|
          # - sanitizer: ubsan # todo: enable when heavy runners are available
 | 
						|
          #   compiler: gcc
 | 
						|
    runs-on: ubuntu-latest # todo: change to heavy
 | 
						|
    container:
 | 
						|
      image: rippleci/clio_ci:latest
 | 
						|
    permissions:
 | 
						|
      contents: write
 | 
						|
      issues: write
 | 
						|
 | 
						|
    steps:
 | 
						|
      - uses: actions/checkout@v4
 | 
						|
        with:
 | 
						|
          fetch-depth: 0
 | 
						|
 | 
						|
      - uses: actions/download-artifact@v4
 | 
						|
        with:
 | 
						|
          name: clio_tests_${{ runner.os }}_Release_${{ matrix.compiler }}.${{ matrix.sanitizer }}
 | 
						|
 | 
						|
      - name: Run clio_tests [${{ matrix.compiler }} / ${{ matrix.sanitizer }}]
 | 
						|
        shell: bash
 | 
						|
        run: |
 | 
						|
          chmod +x ./clio_tests
 | 
						|
          ./.github/scripts/execute-tests-under-sanitizer ./clio_tests
 | 
						|
 | 
						|
      - name: Check for sanitizer report
 | 
						|
        shell: bash
 | 
						|
        id: check_report
 | 
						|
        run: |
 | 
						|
          if ls .sanitizer-report/* 1> /dev/null 2>&1; then
 | 
						|
            echo "found_report=true" >> $GITHUB_OUTPUT
 | 
						|
          else
 | 
						|
            echo "found_report=false" >> $GITHUB_OUTPUT
 | 
						|
          fi
 | 
						|
 | 
						|
      - name: Upload report
 | 
						|
        if: ${{ steps.check_report.outputs.found_report == 'true' }}
 | 
						|
        uses: actions/upload-artifact@v4
 | 
						|
        with:
 | 
						|
          name: ${{ matrix.compiler }}_${{ matrix.sanitizer }}_report
 | 
						|
          path: .sanitizer-report/*
 | 
						|
          include-hidden-files: true
 | 
						|
 | 
						|
      #
 | 
						|
      # todo: enable when we have fixed all currently existing issues from sanitizers
 | 
						|
      #
 | 
						|
      # - name: Create an issue
 | 
						|
      #   if: ${{ steps.check_report.outputs.found_report == 'true' }}
 | 
						|
      #   uses: ./.github/actions/create_issue
 | 
						|
      #   env:
 | 
						|
      #     GH_TOKEN: ${{ github.token }}
 | 
						|
      #   with:
 | 
						|
      #     labels: 'bug'
 | 
						|
      #     title: '[${{ matrix.sanitizer }}/${{ matrix.compiler }}] reported issues'
 | 
						|
      #     body: >
 | 
						|
      #       Clio tests failed one or more sanitizer checks when built with ${{ matrix.compiler }}`.
 | 
						|
 | 
						|
      #       Workflow: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}/
 | 
						|
      #       Reports are available as artifacts.
 |