Explorar o código

Moved CI from Travis to GitHub Actions (fixes #1493)

Benoit Blanchon %!s(int64=5) %!d(string=hai) anos
pai
achega
3975b07371

+ 252 - 0
.github/workflows/ci.yml

@@ -0,0 +1,252 @@
+name: Continuous Integration
+
+on: [push, pull_request]
+
+jobs:
+  gcc:
+    name: GCC
+    runs-on: ubuntu-20.04
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - gcc: '4.4'
+          - gcc: '4.6'
+          - gcc: '4.7'
+          - gcc: '4.8'
+          - gcc: '4.9'
+          - gcc: '5'
+          - gcc: '6'
+          - gcc: '7'
+            cxxflags: -fsanitize=leak
+          - gcc: '8'
+            cxxflags: -fsanitize=undefined
+          - gcc: '9'
+            cxxflags: -fsanitize=address
+          - gcc: '10'
+    steps:
+      - name: Install
+        run: |
+          sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ trusty main'
+          sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ trusty universe'
+          sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ xenial main'
+          sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ xenial universe' 
+          sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ bionic main'
+          sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ bionic universe' 
+          sudo apt-get update
+          sudo apt-get install -y gcc-${{ matrix.gcc }} g++-${{ matrix.gcc }}
+        if: ${{ matrix.gcc < 7 }}
+      - name: Checkout
+        uses: actions/checkout@v2
+      - name: Configure
+        run: cmake -DCMAKE_BUILD_TYPE=Debug .
+        env:
+          CC: gcc-${{ matrix.gcc }}
+          CXX: g++-${{ matrix.gcc }}
+          CXXFLAGS: ${{ matrix.cxxflags }}
+      - name: Build
+        run: cmake --build .
+      - name: Test
+        run: ctest --output-on-failure -C Debug .
+
+  clang:
+    name: Clang
+    runs-on: ubuntu-20.04
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - clang: '3.5'
+          - clang: '3.6'
+          - clang: '3.7'
+          - clang: '3.8'
+          - clang: '3.9'
+          - clang: '4.0'
+          - clang: '5.0'
+          - clang: '6.0'
+          - clang: '7'
+          - clang: '8'
+            cxxflags: -fsanitize=leak
+          - clang: '9'
+            cxxflags: -fsanitize=undefined
+          - clang: '10'
+            cxxflags: -fsanitize=address
+    steps:
+      - name: Install
+        run: |
+          sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ trusty main'
+          sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ trusty universe'
+          sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ xenial main'
+          sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ xenial universe' 
+          sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ bionic main'
+          sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ bionic universe' 
+          sudo apt-get update
+          sudo apt-get install -y clang-${{ matrix.clang }}
+        if: ${{ matrix.clang < 8 }}
+      - name: Checkout
+        uses: actions/checkout@v2
+      - name: Configure
+        run: cmake -DCMAKE_BUILD_TYPE=Debug .
+        env:
+          CC: clang-${{ matrix.clang }}
+          CXX: clang++-${{ matrix.clang }}
+          CXXFLAGS: ${{ matrix.cxxflags }}          
+      - name: Build
+        run: cmake --build .
+      - name: Test
+        run: ctest --output-on-failure -C Debug .
+
+  xcode:
+    name: XCode
+    needs: clang
+    runs-on: macos-10.15
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - xcode: '10.3'          
+          - xcode: '11.7'
+          - xcode: '12.4'
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v2
+      - name: Select XCode version
+        run: sudo xcode-select --switch /Applications/Xcode_${{ matrix.xcode }}.app
+      - name: Configure
+        run: cmake -DCMAKE_BUILD_TYPE=Debug .
+      - name: Build
+        run: cmake --build .
+      - name: Test
+        run: ctest --output-on-failure -C Debug .
+
+  # DISABLED: Running on AppVeyor instead because it supports older versions of the compiler
+  # msvc:
+  #   name: Visual Studio
+  #   strategy:
+  #     fail-fast: false
+  #     matrix:
+  #       include:
+  #         - os: windows-2016
+  #         - os: windows-2019
+  #   runs-on: ${{ matrix.os }}
+  #   steps:
+  #     - name: Checkout
+  #       uses: actions/checkout@v2
+  #     - name: Configure
+  #       run: cmake -DCMAKE_BUILD_TYPE=Debug .
+  #     - name: Build
+  #       run: cmake --build .
+  #     - name: Test
+  #       run: ctest --output-on-failure -C Debug .
+
+  arduino:
+    name: Arduino
+    needs: gcc
+    runs-on: ubuntu-latest
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - arduino: '1.6.7'
+            board: arduino:avr:uno
+          - arduino: '1.8.2'
+            board: arduino:samd:mkr1000
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v2
+      - name: Build
+        run: extras/ci/arduino.sh ${{ matrix.board }}
+        env:
+           BOARD: ${{ matrix.board }}
+           VERSION: ${{ matrix.arduino }}
+
+  platformio:
+    name: PlatformIO
+    needs: gcc
+    runs-on: ubuntu-latest
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - board: uno
+          - board: esp01
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v2
+      - name: Set up Python 3.x
+        uses: actions/setup-python@v2
+        with:
+          python-version: '3.x' 
+      - name: Install PlatformIO
+        run: pip install platformio
+      - name: Build
+        run: extras/ci/platformio.sh ${{ matrix.board }}
+
+  particle:
+    name: Particle
+    needs: gcc
+    runs-on: ubuntu-latest
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - board: argon
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v2
+      - name: Install Particle CLI
+        run: sudo npm install -g particle-cli
+      - name: Login to Particle
+        run: particle login -t "${{ secrets.PARTICLE_TOKEN }}"
+      - name: Compile
+        run: extras/ci/particle.sh ${{ matrix.board }}
+
+
+  arm:
+    name: GCC for ARM processor
+    needs: gcc
+    runs-on: ubuntu-20.04
+    steps:
+      - name: Install
+        run: sudo apt-get install -y g++-arm-linux-gnueabihf
+      - name: Checkout
+        uses: actions/checkout@v2
+      - name: Configure
+        run: cmake .
+        env:
+          CC: arm-linux-gnueabihf-gcc
+          CXX: arm-linux-gnueabihf-g++
+      - name: Build
+        run: cmake --build .
+
+  coverage:
+    needs: gcc
+    name: Coverage
+    runs-on: ubuntu-20.04
+    steps:
+      - name: Install
+        run: sudo apt-get install -y lcov ninja-build
+      - name: Checkout
+        uses: actions/checkout@v2
+      - name: Configure
+        run: cmake -G Ninja -DCOVERAGE=true .
+      - name: Build
+        run: ninja
+      - name: Test
+        run: ninja test
+      - name: lcov --capture
+        run: lcov --capture --no-external --directory . --output-file coverage.info
+      - name: lcov --remove
+        run: lcov --remove coverage.info "$(pwd)/extras/*" --output-file coverage_filtered.info
+      - name: genhtml
+        run: mkdir coverage && genhtml coverage_filtered.info -o coverage -t ArduinoJson
+      - name: Upload HTML report
+        uses: actions/upload-artifact@v2
+        with:
+          name: coverage
+          path: coverage
+      - name: Upload to Coveralls
+        uses: coverallsapp/github-action@master
+        with:
+          github-token: ${{ secrets.GITHUB_TOKEN }}
+          path-to-lcov: coverage_filtered.info

+ 0 - 137
.travis.yml

@@ -1,137 +0,0 @@
-sudo: false
-language: cpp
-matrix:
-  include:
-    - addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-4.4']
-      env: SCRIPT=test _CC=gcc-4.4 _CXX=g++-4.4
-    - addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-4.6']
-      env: SCRIPT=test _CC=gcc-4.6 _CXX=g++-4.6
-    - addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-4.7']
-      env: SCRIPT=test _CC=gcc-4.7 _CXX=g++-4.7
-    - addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-4.8']
-      env: SCRIPT=test _CC=gcc-4.8 _CXX=g++-4.8 
-    - addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-4.9']
-      env: SCRIPT=test _CC=gcc-4.9 _CXX=g++-4.9
-    - addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-5']
-      env: SCRIPT=test _CC=gcc-5 _CXX=g++-5
-    - addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-6']
-      env: SCRIPT=test _CC=gcc-6 _CXX=g++-6
-    - addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-7']
-      env: SCRIPT=test _CC=gcc-7 _CXX=g++-7 CXXFLAGS="-fsanitize=leak"
-    - addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-8']
-      env: SCRIPT=test _CC=gcc-8 _CXX=g++-8 CXXFLAGS="-fsanitize=undefined" LDFLAGS="-fuse-ld=gold"
-    - addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-9']
-      env: SCRIPT=test _CC=gcc-9 _CXX=g++-9 CXXFLAGS="-fsanitize=address"
-    - addons:
-        apt:
-          packages: ['g++-arm-linux-gnueabihf']
-      env: SCRIPT=build _CC=arm-linux-gnueabihf-gcc _CXX=arm-linux-gnueabihf-g++
-    - env: SCRIPT=test _CC=clang _CXX=clang++
-    - addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test','llvm-toolchain-precise-3.5']
-          packages: ['clang-3.5']
-      env: SCRIPT=test _CC=clang-3.5 _CXX=clang++-3.5 CXXFLAGS="-fsanitize=address"
-    - addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test','llvm-toolchain-precise-3.6']
-          packages: ['clang-3.6']
-      env: SCRIPT=test _CC=clang-3.6 _CXX=clang++-3.6 CXXFLAGS="-fsanitize=leak"
-    - addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test','llvm-toolchain-precise-3.7']
-          packages: ['clang-3.7']
-      env: SCRIPT=test _CC=clang-3.7 _CXX=clang++-3.7
-    - addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test','llvm-toolchain-precise-3.8']
-          packages: ['clang-3.8']
-      env: SCRIPT=test _CC=clang-3.8 _CXX=clang++-3.8 CXXFLAGS="-fsanitize=undefined"
-    - addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test','llvm-toolchain-trusty-3.9']
-          packages: ['clang-3.9']
-      env: SCRIPT=test _CC=clang-3.9 _CXX=clang++-3.9
-    - addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test','llvm-toolchain-trusty-4.0']
-          packages: ['clang-4.0']
-      env: SCRIPT=test _CC=clang-4.0 _CXX=clang++-4.0
-    - addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['clang-5.0']
-      env: SCRIPT=test _CC=clang-5.0 _CXX=clang++-5.0
-    - addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['clang-6.0']
-      env: SCRIPT=test _CC=clang-6.0 _CXX=clang++-6.0
-    - addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test','llvm-toolchain-trusty-7']
-          packages: ['clang-7']
-      env: SCRIPT=test _CC=clang-7 _CXX=clang++-7
-    - addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test','llvm-toolchain-trusty-8']
-          packages: ['clang-8']
-      env: SCRIPT=test _CC=clang-8 _CXX=clang++-8
-    - addons:
-        apt:
-          sources:
-            - sourceline: 'deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main'
-              key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
-          packages: ['clang-9']
-      env: SCRIPT=test _CC=clang-9 _CXX=clang++-9
-    - env: SCRIPT=coverage
-    - os: osx
-      osx_image: xcode8.3
-      env: SCRIPT=test
-    - os: osx
-      osx_image: xcode9.4
-      env: SCRIPT=test
-    - os: osx
-      osx_image: xcode10
-      env: SCRIPT=test CXXFLAGS="-fsanitize=address"
-    - env: SCRIPT=arduino VERSION=1.6.7 BOARD=arduino:avr:uno
-    - env: SCRIPT=arduino VERSION=1.8.2 BOARD=arduino:samd:mkr1000
-    - env: SCRIPT=platformio BOARD=uno
-    - env: SCRIPT=platformio BOARD=esp01
-    - env: SCRIPT=particle BOARD=argon
-cache:
-  directories:
-    - "~/.platformio"
-    - "extras/fuzzing/json_corpus"
-    - "extras/fuzzing/msgpack_corpus"
-script: extras/ci/$SCRIPT.sh

+ 1 - 2
CONTRIBUTING.md

@@ -6,6 +6,5 @@ You can submit changes via GitHub Pull Requests.
 
 Please:
 
-1. Unit test every change in behavior
+1. Update the test suite for any change of behavior
 2. Use clang-format in "file" mode to format the code
-3. Consider using the Continuous Integration (Travis and AppVeyor)

+ 8 - 6
README.md

@@ -3,8 +3,8 @@
 ---
 
 [![arduino-library-badge](https://www.ardu-badge.com/badge/ArduinoJson.svg?version=6.17.2)](https://www.ardu-badge.com/ArduinoJson/6.17.2)
-[![Build Status](https://ci.appveyor.com/api/projects/status/m7s53wav1l0abssg/branch/6.x?svg=true)](https://ci.appveyor.com/project/bblanchon/arduinojson/branch/6.x)
-[![Build Status](https://travis-ci.org/bblanchon/ArduinoJson.svg?branch=6.x)](https://travis-ci.org/bblanchon/ArduinoJson)
+[![Continuous Integration](https://github.com/bblanchon/ArduinoJson/workflows/Continuous%20Integration/badge.svg?branch=6.x)](https://github.com/bblanchon/ArduinoJson/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A6.x)
+[![Continuous Integration](https://ci.appveyor.com/api/projects/status/m7s53wav1l0abssg/branch/6.x?svg=true)](https://ci.appveyor.com/project/bblanchon/arduinojson/branch/6.x)
 [![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/arduinojson.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:arduinojson)
 [![Coverage Status](https://coveralls.io/repos/github/bblanchon/ArduinoJson/badge.svg?branch=6.x)](https://coveralls.io/github/bblanchon/ArduinoJson?branch=6.x)
 [![GitHub stars](https://img.shields.io/github/stars/bblanchon/ArduinoJson?style=flat)](https://github.com/bblanchon/ArduinoJson/stargazers)
@@ -19,7 +19,7 @@ ArduinoJson is a C++ JSON library for Arduino and IoT (Internet Of Things).
     * [Optionally supports comments in the input](https://arduinojson.org/v6/api/config/enable_comments/?utm_source=github&utm_medium=readme)
     * [Optionally filters the input to keep only desired values](https://arduinojson.org/v6/api/json/deserializejson/?utm_source=github&utm_medium=readme#filtering)
     * Supports single quotes as a string delimiter
-    * Compatible with NDJSON and JSON Lines
+    * Compatible with [NDJSON](http://ndjson.org/) and [JSON Lines](https://jsonlines.org/)
 * [JSON serialization](https://arduinojson.org/v6/api/json/serializejson/?utm_source=github&utm_medium=readme)
     * [Can write to a buffer or a stream](https://arduinojson.org/v6/api/json/serializejson/?utm_source=github&utm_medium=readme)
     * [Optionally indents the document (prettified JSON)](https://arduinojson.org/v6/api/json/serializejsonpretty/?utm_source=github&utm_medium=readme)
@@ -58,11 +58,12 @@ ArduinoJson is a C++ JSON library for Arduino and IoT (Internet Of Things).
         * [IAR Embedded Workbench](https://www.iar.com/iar-embedded-workbench/)
         * [Keil uVision](http://www.keil.com/)
         * [MPLAB X IDE](http://www.microchip.com/mplab/mplab-x-ide)
+        * [Particle](https://www.particle.io/)
         * [PlatformIO](http://platformio.org/)
         * [Sloeber plugin for Eclipse](https://eclipse.baeyens.it/)
         * [Visual Micro](http://www.visualmicro.com/)
         * [Visual Studio](https://www.visualstudio.com/)
-    * [Even works with online compilers like wandbox.org](https://wandbox.org/permlink/t7KP7I6dVuLhqzDl)
+    * [Even works with online compilers like wandbox.org](https://wandbox.org/permlink/RlZSKy17DjJ6HcdN)
     * [CMake friendly](https://arduinojson.org/v6/how-to/use-arduinojson-with-cmake/?utm_source=github&utm_medium=readme)
 * Well designed
     * [Elegant API](http://arduinojson.org/v6/example/?utm_source=github&utm_medium=readme)
@@ -76,8 +77,8 @@ ArduinoJson is a C++ JSON library for Arduino and IoT (Internet Of Things).
     * [Unit test coverage close to 100%](https://coveralls.io/github/bblanchon/ArduinoJson?branch=6.x)
     * Continuously tested on
         * [Visual Studio 2010, 2012, 2013, 2015, 2017, 2019](https://ci.appveyor.com/project/bblanchon/arduinojson/branch/6.x)
-        * [GCC 4.4, 4.6, 4.7, 4.8, 4.9, 5, 6, 7, 8](https://travis-ci.org/bblanchon/ArduinoJson)
-        * [Clang 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 5.0, 6.0, 7, 8](https://travis-ci.org/bblanchon/ArduinoJson)
+        * [GCC 4.4, 4.6, 4.7, 4.8, 4.9, 5, 6, 7, 8, 9, 10](https://github.com/bblanchon/ArduinoJson/actions?query=workflow%3A%22Continuous+Integration%22)
+        * [Clang 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 5.0, 6.0, 7, 8, 9, 10](https://github.com/bblanchon/ArduinoJson/actions?query=workflow%3A%22Continuous+Integration%22)
     * [Continuously fuzzed with Google OSS Fuzz](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:arduinojson)
 * Well documented
     * [Tutorials](https://arduinojson.org/v6/doc/deserialization/?utm_source=github&utm_medium=readme)
@@ -85,6 +86,7 @@ ArduinoJson is a C++ JSON library for Arduino and IoT (Internet Of Things).
     * [How-tos](https://arduinojson.org/v6/example/?utm_source=github&utm_medium=readme)
     * [FAQ](https://arduinojson.org/v6/faq/?utm_source=github&utm_medium=readme)
     * [Book](https://arduinojson.org/book/?utm_source=github&utm_medium=readme)
+    * [Changelog](changelog.md)
 * Vibrant user community
     * Most popular of all Arduino libraries on [GitHub](https://github.com/search?o=desc&q=arduino+library&s=stars&type=Repositories) and [PlatformIO](https://platformio.org/lib/search)
     * [Used in hundreds of projects](https://www.hackster.io/search?i=projects&q=arduinojson)

+ 0 - 7
extras/ci/build.sh

@@ -1,7 +0,0 @@
-#!/bin/sh -ex
-
-export CC="$_CC"
-export CXX="$_CXX"
-
-cmake -DCMAKE_BUILD_TYPE=Release .
-cmake --build .

+ 0 - 9
extras/ci/coverage.sh

@@ -1,9 +0,0 @@
-#!/bin/sh -eux
-
-cmake -DCOVERAGE=true .
-make 
-make test
-
-pip install --user cpp-coveralls 'requests[security]'
-pwd
-coveralls --include 'src' --gcov-options '\-lp'

+ 0 - 22
extras/ci/fuzz.sh

@@ -1,22 +0,0 @@
-#!/bin/bash -eux
-
-ROOT_DIR=$(dirname $0)/../../
-FUZZING_DIR=${ROOT_DIR}/extras/fuzzing/
-
-export CC="clang-${CLANG}"
-export CXX="clang++-${CLANG}"
-cmake -DCMAKE_BUILD_TYPE=Debug .
-
-FUZZER_TARGET="${FUZZER}_fuzzer"
-FUZZER_PATH="extras/fuzzing/${FUZZER_TARGET}"
-CORPUS_DIR="${FUZZING_DIR}/${FUZZER}_corpus"
-SEED_CORPUS_DIR="${FUZZING_DIR}/${FUZZER}_seed_corpus"
-
-cmake --build . --target $FUZZER_TARGET
-
-export ASAN_OPTIONS="detect_leaks=0"
-export LLVM_PROFILE_FILE="${FUZZER_TARGET}.profraw"
-${FUZZER_PATH} "$CORPUS_DIR" "$SEED_CORPUS_DIR" -max_total_time=60 -timeout=1
-
-llvm-profdata-${CLANG} merge -sparse ${LLVM_PROFILE_FILE} -o ${FUZZER_TARGET}.profdata
-llvm-cov-${CLANG} report ./${FUZZER_PATH} -instr-profile=${FUZZER_TARGET}.profdata

+ 2 - 4
extras/ci/particle.sh

@@ -1,10 +1,8 @@
 #!/bin/sh -ex
 
-cd "$(dirname "$0")/../../"
-
-npm install -g particle-cli
+BOARD=$1
 
-particle login -t "${PARTICLE_TOKEN}"
+cd "$(dirname "$0")/../../"
 
 cp extras/particle/src/smocktest.ino src/
 cp extras/particle/project.properties ./

+ 1 - 1
extras/ci/platformio.sh

@@ -1,6 +1,6 @@
 #!/bin/sh -eux
 
-pip install --user platformio
+BOARD=$1
 
 case $BOARD in
 uno)

+ 0 - 8
extras/ci/test.sh

@@ -1,8 +0,0 @@
-#!/bin/sh -ex
-
-export CC="$_CC"
-export CXX="$_CXX"
-
-cmake -DCMAKE_BUILD_TYPE=Debug .
-cmake --build .
-ctest --output-on-failure .

+ 6 - 29
extras/fuzzing/CMakeLists.txt

@@ -22,11 +22,8 @@ target_link_libraries(json_reproducer
 	ArduinoJson
 )
 
-# Infer path of llvm-symbolizer from the path of clang
-string(REPLACE "clang++" "llvm-symbolizer" LLVM_SYMBOLIZER ${CMAKE_CXX_COMPILER})
-
-macro(add_fuzzer name mode)	
-	set(FUZZER "${name}_${mode}_fuzzer")
+macro(add_fuzzer name)	
+	set(FUZZER "${name}_fuzzer")
 	set(CORPUS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${name}_corpus")
 	set(SEED_CORPUS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${name}_seed_corpus")
 	add_executable("${FUZZER}"
@@ -38,9 +35,9 @@ macro(add_fuzzer name mode)
 	set_target_properties("${FUZZER}"
 		PROPERTIES 
 			COMPILE_FLAGS  
-				"-fprofile-instr-generate -fcoverage-mapping -fsanitize=${mode},fuzzer -fno-sanitize-recover=all"
+				"-fprofile-instr-generate -fcoverage-mapping -fsanitize=fuzzer -fno-sanitize-recover=all"
 			LINK_FLAGS
-				"-fprofile-instr-generate -fcoverage-mapping -fsanitize=${mode},fuzzer -fno-sanitize-recover=all"
+				"-fprofile-instr-generate -fcoverage-mapping -fsanitize=fuzzer -fno-sanitize-recover=all"
 	)
 
 	add_test(
@@ -49,29 +46,9 @@ macro(add_fuzzer name mode)
 		COMMAND
 			"${FUZZER}" "${CORPUS_DIR}" "${SEED_CORPUS_DIR}" -max_total_time=5 -timeout=1
 	)
-
-	set_tests_properties("${FUZZER}"
-		PROPERTIES
-			ENVIRONMENT
-				ASAN_SYMBOLIZER_PATH=${LLVM_SYMBOLIZER}
-			ENVIRONMENT
-				LLVM_SYMBOLIZER_PATH=${LLVM_SYMBOLIZER}
-			ENVIRONMENT
-				MSAN_SYMBOLIZER_PATH=${LLVM_SYMBOLIZER}
-			ENVIRONMENT
-				UBSAN_SYMBOLIZER_PATH=${LLVM_SYMBOLIZER}
-	)
 endmacro()
 
 if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6)
-	add_fuzzer(json address)
-	add_fuzzer(json undefined)
-	add_fuzzer(msgpack address)
-	add_fuzzer(msgpack undefined)
-endif()
-
-if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7)
-	# We're getting false positive with Clang 6
-	add_fuzzer(json memory)
-	add_fuzzer(msgpack memory)
+	add_fuzzer(json)
+	add_fuzzer(msgpack)
 endif()