From 55b79b47211e99705c999bae1c65128c41ae3e87 Mon Sep 17 00:00:00 2001 From: Adeeb <8762862+adeebshihadeh@users.noreply.github.com> Date: Sun, 17 May 2020 19:53:23 -0700 Subject: [PATCH] GitHub Actions (#535) --- .circleci/config.yml | 118 ----- .github/workflows/test.yaml | 155 ++++++ Dockerfile.panda | 68 +++ README.md | 4 +- .../{Dockerfile => Dockerfile.panda_esp} | 12 +- tests/language/Dockerfile | 17 - tests/language/LICENSE | 201 -------- tests/language/list.txt | 451 ------------------ tests/language/test_language.py | 28 -- tests/linter_python/Dockerfile | 19 - tests/misra/Dockerfile | 19 - tests/safety/Dockerfile | 50 -- tests/safety_replay/Dockerfile | 46 -- 13 files changed, 227 insertions(+), 961 deletions(-) delete mode 100644 .circleci/config.yml create mode 100644 .github/workflows/test.yaml create mode 100644 Dockerfile.panda rename tests/build/{Dockerfile => Dockerfile.panda_esp} (73%) delete mode 100644 tests/language/Dockerfile delete mode 100644 tests/language/LICENSE delete mode 100644 tests/language/list.txt delete mode 100755 tests/language/test_language.py delete mode 100644 tests/linter_python/Dockerfile delete mode 100644 tests/misra/Dockerfile delete mode 100644 tests/safety/Dockerfile delete mode 100644 tests/safety_replay/Dockerfile diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 4229d45..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,118 +0,0 @@ -version: 2 -jobs: - safety: - machine: - image: ubuntu-1604:202004-01 - steps: - - checkout - - run: - name: Build image - command: "docker build -t panda_safety -f tests/safety/Dockerfile ." - - run: - name: Run safety test - command: | - docker run panda_safety /bin/bash -c "cd /openpilot/panda/tests/safety; PYTHONPATH=/openpilot ./test.sh" - - misra-c2012: - machine: - image: ubuntu-1604:202004-01 - steps: - - checkout - - run: - name: Build image - command: "docker build -t panda_misra -f tests/misra/Dockerfile ." - - run: - name: Run Misra C 2012 test - command: | - mkdir /tmp/misra - docker run -v /tmp/misra:/tmp/misra panda_misra /bin/bash -c "cd /panda/tests/misra; ./test_misra.sh" - - store_artifacts: - name: Store cppcheck test output - path: /tmp/misra/cppcheck_output.txt - - store_artifacts: - name: Store misra test output - path: /tmp/misra/misra_output.txt - - build: - machine: - image: ubuntu-1604:202004-01 - steps: - - checkout - - run: - name: Build image - command: "docker build -t panda_build -f tests/build/Dockerfile ." - - run: - name: Test python package installer - command: | - docker run panda_build /bin/bash -c "cd /panda; python setup.py install" - - run: - name: Build Panda STM image - command: | - docker run panda_build /bin/bash -c "cd /panda/board; make bin" - - run: - name: Build Panda STM bootstub image - command: | - docker run panda_build /bin/bash -c "cd /panda/board; make obj/bootstub.panda.bin" - - run: - name: Build Pedal STM image - command: | - docker run panda_build /bin/bash -c "cd /panda/board/pedal; make obj/comma.bin" - - run: - name: Build Pedal STM bootstub image - command: | - docker run panda_build /bin/bash -c "cd /panda/board/pedal; make obj/bootstub.bin" - - run: - name: Build ESP image - command: | - docker run panda_build /bin/bash -c "cd /panda/boardesp; ./get_sdk.sh; make user1.bin" - - safety_replay: - machine: - image: ubuntu-1604:202004-01 - steps: - - checkout - - run: - name: Build image - command: "docker build -t panda_safety_replay -f tests/safety_replay/Dockerfile ." - - run: - name: Replay drives - command: | - docker run panda_safety_replay /bin/bash -c "cd /openpilot/panda/tests/safety_replay; PYTHONPATH=/openpilot ./test_safety_replay.py" - - language_check: - machine: - image: ubuntu-1604:202004-01 - steps: - - checkout - - run: - name: Build image - command: "docker build -t language_check -f tests/language/Dockerfile ." - - run: - name: Check code for bad language - command: | - docker run language_check /bin/bash -c "cd /panda/tests/language; ./test_language.py" - - linter_python: - machine: - image: ubuntu-1604:202004-01 - steps: - - checkout - - run: - name: Build image - command: "docker build -t linter_python -f tests/linter_python/Dockerfile ." - - run: - name: Run linter python test - command: | - docker run linter_python /bin/bash -c "cd /panda/tests/linter_python; PYTHONPATH=/ ./flake8_panda.sh" - docker run linter_python /bin/bash -c "cd /panda/tests/linter_python; PYTHONPATH=/ ./pylint_panda.sh" - -workflows: - version: 2 - main: - jobs: - - safety - - misra-c2012 - - build - - safety_replay - - language_check - - linter_python diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 0000000..4734643 --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,155 @@ +name: panda tests +on: [push, pull_request] + +env: + RUN: docker run --rm panda /bin/sh -c + PERSIST: docker run --name panda panda /bin/sh -c + LOAD: docker load -i panda.tar.gz/panda.tar.gz + +jobs: + docker_build: + name: docker build + runs-on: ubuntu-16.04 + timeout-minutes: 30 + steps: + - uses: actions/checkout@v2 + - name: Build docker image + run: | + docker pull $(grep -ioP '(?<=^from)\s+\S+' Dockerfile.panda) || true + docker pull docker.io/commaai/panda:latest || true + docker build --cache-from docker.io/commaai/panda:latest -t panda -f Dockerfile.panda . + docker save panda:latest | gzip > panda.tar.gz + - uses: actions/upload-artifact@v2 + with: + name: panda.tar.gz + path: panda.tar.gz + + docker_push: + name: docker push + runs-on: ubuntu-16.04 + timeout-minutes: 10 + needs: docker_build + #if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && github.repository == 'commaai/panda' + steps: + - uses: actions/download-artifact@v1 + with: + name: panda.tar.gz + - name: Load image + run: $LOAD + - name: Login to dockerhub + run: docker login -u wmelching -p ${{ secrets.DOCKERHUB_TOKEN }} + - name: Tag image + run: docker tag panda docker.io/commaai/panda:latest + - name: Push image + run: docker push docker.io/commaai/panda:latest + + build: + name: build + runs-on: ubuntu-16.04 + timeout-minutes: 30 + needs: docker_build + steps: + - uses: actions/download-artifact@v1 + with: + name: panda.tar.gz + - name: Load image + run: $LOAD + - name: Test python package installer + run: $RUN "cd /tmp/openpilot/panda && python setup.py install" + - name: Build panda STM image + run: $RUN "cd /tmp/openpilot/panda/board && make bin" + - name: Build panda STM bootstub image + run: $RUN "cd /tmp/openpilot/panda/board && make obj/bootstub.panda.bin" + - name: Build pedal STM image + run: $RUN "cd /tmp/openpilot/panda/board/pedal && make obj/comma.bin" + - name: Build pedal STM bootstub image + run: $RUN "cd /tmp/openpilot/panda/board/pedal && make obj/bootstub.bin" + + build_esp: + name: build esp + runs-on: ubuntu-16.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v2 + - name: Build docker image + run: | + docker pull docker.io/commaai/panda_esp:latest || true + docker build --cache-from docker.io/commaai/panda_esp:latest -t panda_esp -f tests/build/Dockerfile.panda_esp . + - name: Build ESP image + run: docker run --rm panda_esp /bin/sh -c "cd /panda/boardesp && make user1.bin" + - name: Push image + if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && github.repository == 'commaai/panda' + run: | + docker login -u wmelching -p ${{ secrets.DOCKERHUB_TOKEN }} + docker tag panda_esp docker.io/commaai/panda_esp:latest + docker push docker.io/commaai/panda_esp:latest + + safety: + name: safety + runs-on: ubuntu-16.04 + timeout-minutes: 10 + needs: docker_build + steps: + - uses: actions/download-artifact@v1 + with: + name: panda.tar.gz + - name: Load image + run: $LOAD + - name: Run safety tests + run: $RUN "cd /tmp/openpilot/panda/tests/safety && ./test.sh" + + safety_replay: + name: safety replay + runs-on: ubuntu-16.04 + timeout-minutes: 10 + needs: docker_build + steps: + - uses: actions/download-artifact@v1 + with: + name: panda.tar.gz + - name: Load image + run: $LOAD + - name: Run safety replay + run: $RUN "cd /tmp/openpilot/panda/tests/safety_replay && ./test_safety_replay.py" + + misra: + name: misra c2012 + runs-on: ubuntu-16.04 + timeout-minutes: 10 + needs: docker_build + steps: + - uses: actions/download-artifact@v1 + with: + name: panda.tar.gz + - name: Load image + run: $LOAD + - name: Run Misra C 2012 analysis + run: $PERSIST "cd /tmp/openpilot/panda/tests/misra && ./test_misra.sh" + - name: Copy analysis outputs + run: docker cp panda:/tmp/misra /tmp + - uses: actions/upload-artifact@v2 + if: always() + with: + name: cppcheck.txt + path: /tmp/misra/cppcheck_output.txt + - uses: actions/upload-artifact@v2 + if: always() + with: + name: misra.txt + path: /tmp/misra/misra_output.txt + + python_linter: + name: python linter + runs-on: ubuntu-16.04 + timeout-minutes: 10 + needs: docker_build + steps: + - uses: actions/download-artifact@v1 + with: + name: panda.tar.gz + - name: Load image + run: $LOAD + - name: Run linters + run: | + $RUN "cd /tmp/openpilot/panda/tests/linter_python/ && ./flake8_panda.sh" + $RUN "cd /tmp/openpilot/panda/tests/linter_python/ && ./pylint_panda.sh" diff --git a/Dockerfile.panda b/Dockerfile.panda new file mode 100644 index 0000000..3920d9e --- /dev/null +++ b/Dockerfile.panda @@ -0,0 +1,68 @@ +FROM ubuntu:16.04 +ENV PYTHONUNBUFFERED 1 + +RUN apt-get update && apt-get install -y --no-install-recommends \ + autoconf \ + automake \ + bzip2 \ + capnproto \ + clang \ + curl \ + g++ \ + gcc-arm-none-eabi libnewlib-arm-none-eabi \ + git \ + libarchive-dev \ + libavformat-dev libavcodec-dev libavdevice-dev libavutil-dev libswscale-dev libavresample-dev libavfilter-dev \ + libbz2-dev \ + libcapnp-dev \ + libcurl4-openssl-dev \ + libffi-dev \ + libtool \ + libssl-dev \ + libusb-1.0-0 \ + libzmq3-dev \ + locales \ + make \ + ncurses-dev \ + pkg-config \ + python \ + python-dev \ + python-pip \ + unzip \ + wget \ + zlib1g-dev \ + && rm -rf /var/lib/apt/lists/* + +RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen +ENV LANG en_US.UTF-8 +ENV LANGUAGE en_US:en +ENV LC_ALL en_US.UTF-8 + +RUN curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash + +ENV PATH="/root/.pyenv/bin:/root/.pyenv/shims:${PATH}" +RUN pyenv install 3.7.3 && pyenv global 3.7.3 +RUN pyenv rehash + +RUN pip install --no-cache-dir --upgrade pip==18.0 + +COPY requirements.txt /tmp/ +RUN pip install --no-cache-dir -r /tmp/requirements.txt + +ENV PYTHONPATH /tmp/openpilot:$PYTHONPATH + +WORKDIR /tmp +RUN git clone https://github.com/commaai/openpilot.git || true && \ + cd /tmp/openpilot && \ + git pull && git checkout 44560b5bb74e451767725144c3fa5f1564481a20 && \ + git submodule update --init cereal opendbc && \ + rm -rf $(ls --hide="common" --hide="selfdrive" --hide="cereal" --hide="opendbc" --hide="tools" --hide="SConstruct") + +RUN cd /tmp/openpilot && \ + pip install --no-cache-dir -r opendbc/requirements.txt && \ + pip install --no-cache-dir -r tools/requirements.txt + +WORKDIR /tmp/openpilot +RUN scons -c && scons -j$(nproc) opendbc/ cereal/ + +COPY . /tmp/openpilot/panda diff --git a/README.md b/README.md index 9979295..55b30f5 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ It uses an [STM32F413](http://www.st.com/en/microcontrollers/stm32f413-423.html? It is 2nd gen hardware, reusing code and parts from the [NEO](https://github.com/commaai/neo) interface board. -[![CircleCI](https://circleci.com/gh/commaai/panda.svg?style=svg)](https://circleci.com/gh/commaai/panda) +![panda tests](https://github.com/commaai/panda/workflows/panda%20tests/badge.svg) Usage (Python) ------ @@ -99,7 +99,7 @@ When compiled from an [EON Dev Kit](https://comma.ai/shop/products/eon-gold-dash conjuction with [openpilot](https://github.com/commaai/openpilot). The panda FW, through its safety model, provides and enforces the [openpilot Safety](https://github.com/commaai/openpilot/blob/devel/SAFETY.md). Due to its critical function, it's important that the application code rigor within the `board` folder is held to high standards. -These are the [CI regression tests](https://circleci.com/gh/commaai/panda) we have in place: +These are the [CI regression tests](https://github.com/commaai/panda/actions) we have in place: * A generic static code analysis is performed by [Cppcheck](https://github.com/danmar/cppcheck/). * In addition, [Cppcheck](https://github.com/danmar/cppcheck/) has a specific addon to check for [MISRA C:2012](https://www.misra.org.uk/MISRAHome/MISRAC2012/tabid/196/Default.aspx) violations. See [current coverage](https://github.com/commaai/panda/blob/master/tests/misra/coverage_table). * Compiler options are relatively strict: the flags `-Wall -Wextra -Wstrict-prototypes -Werror` are enforced on board and pedal makefiles. diff --git a/tests/build/Dockerfile b/tests/build/Dockerfile.panda_esp similarity index 73% rename from tests/build/Dockerfile rename to tests/build/Dockerfile.panda_esp index 0f98216..63c2cae 100644 --- a/tests/build/Dockerfile +++ b/tests/build/Dockerfile.panda_esp @@ -1,21 +1,13 @@ FROM ubuntu:16.04 -RUN apt-get update && apt-get install -y gcc-arm-none-eabi libnewlib-arm-none-eabi python python-pip gcc g++ git autoconf gperf bison flex automake texinfo wget help2man gawk libtool libtool-bin ncurses-dev unzip unrar-free libexpat-dev sed bzip2 locales curl zlib1g-dev libffi-dev libssl-dev +RUN apt-get update && apt-get install -y gcc-arm-none-eabi libnewlib-arm-none-eabi python python-pip gcc g++ git autoconf gperf bison flex automake texinfo wget help2man gawk libtool libtool-bin ncurses-dev unzip unrar-free libexpat-dev sed bzip2 locales curl zlib1g-dev libffi-dev libssl-dev python3 python3-pip RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 -RUN curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash - -ENV PATH="/root/.pyenv/bin:/root/.pyenv/shims:${PATH}" -RUN pyenv install 2.7.12 -RUN pyenv install 3.7.3 -RUN pyenv global 3.7.3 -RUN pyenv rehash - -RUN pip install pycrypto==2.6.1 +RUN pip3 install pycrypto==2.6.1 # Build esp toolchain RUN mkdir -p /panda/boardesp diff --git a/tests/language/Dockerfile b/tests/language/Dockerfile deleted file mode 100644 index 6a1d8bb..0000000 --- a/tests/language/Dockerfile +++ /dev/null @@ -1,17 +0,0 @@ -FROM ubuntu:16.04 - -RUN apt-get update && apt-get install -y make python python-pip locales curl git zlib1g-dev libffi-dev bzip2 libssl-dev - -RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen -ENV LANG en_US.UTF-8 -ENV LANGUAGE en_US:en -ENV LC_ALL en_US.UTF-8 - -RUN curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash - -ENV PATH="/root/.pyenv/bin:/root/.pyenv/shims:${PATH}" -RUN pyenv install 3.7.3 -RUN pyenv global 3.7.3 -RUN pyenv rehash - -COPY . /panda diff --git a/tests/language/LICENSE b/tests/language/LICENSE deleted file mode 100644 index 8dada3e..0000000 --- a/tests/language/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/tests/language/list.txt b/tests/language/list.txt deleted file mode 100644 index cfd2589..0000000 --- a/tests/language/list.txt +++ /dev/null @@ -1,451 +0,0 @@ -4r5e -5h1t -5hit -a55 -anal -anus -ar5e -arrse -arse -ass -ass-fucker -asses -assfucker -assfukka -asshole -assholes -asswhole -a_s_s -b!tch -b00bs -b17ch -b1tch -ballbag -balls -ballsack -bastard -beastial -beastiality -bellend -bestial -bestiality -bi+ch -biatch -bitch -bitcher -bitchers -bitches -bitchin -bitching -bloody -blow job -blowjob -blowjobs -boiolas -bollock -bollok -boner -boob -boobs -booobs -boooobs -booooobs -booooooobs -breasts -buceta -bugger -bum -bunny fucker -bullshit -butt -butthole -buttmuch -buttplug -c0ck -c0cksucker -carpet muncher -cawk -chink -cipa -cl1t -clit -clitoris -clits -cnut -cock -cock-sucker -cockface -cockhead -cockmunch -cockmuncher -cocks -cocksuck -cocksucked -cocksucker -cocksucking -cocksucks -cocksuka -cocksukka -cok -cokmuncher -coksucka -coon -cox -crap -cum -cummer -cumming -cums -cumshot -cunilingus -cunillingus -cunnilingus -cunt -cuntlick -cuntlicker -cuntlicking -cunts -cyalis -cyberfuc -cyberfuck -cyberfucked -cyberfucker -cyberfuckers -cyberfucking -d1ck -damn -dick -dickhead -dildo -dildos -dink -dinks -dirsa -dlck -dog-fucker -doggin -dogging -donkeyribber -doosh -duche -dyke -ejaculate -ejaculated -ejaculates -ejaculating -ejaculatings -ejaculation -ejakulate -f u c k -f u c k e r -f4nny -fag -fagging -faggitt -faggot -faggs -fagot -fagots -fags -fanny -fannyflaps -fannyfucker -fanyy -fatass -fcuk -fcuker -fcuking -feck -fecker -felching -fellate -fellatio -fingerfuck -fingerfucked -fingerfucker -fingerfuckers -fingerfucking -fingerfucks -fistfuck -fistfucked -fistfucker -fistfuckers -fistfucking -fistfuckings -fistfucks -flange -fook -fooker -fuck -fucka -fucked -fucker -fuckers -fuckhead -fuckheads -fuckin -fucking -fuckings -fuckingshitmotherfucker -fuckme -fucks -fuckwhit -fuckwit -fudge packer -fudgepacker -fuk -fuker -fukker -fukkin -fuks -fukwhit -fukwit -fux -fux0r -f_u_c_k -gangbang -gangbanged -gangbangs -gaylord -gaysex -goatse -God -god-dam -god-damned -goddamn -goddamned -hardcoresex -hell -heshe -hoar -hoare -hoer -homo -hore -horniest -horny -hotsex -jack-off -jackoff -jap -jerk-off -jism -jiz -jizm -jizz -kawk -knob -knobead -knobed -knobend -knobhead -knobjocky -knobjokey -kock -kondum -kondums -kum -kummer -kumming -kums -kunilingus -l3i+ch -l3itch -labia -lmfao -lust -lusting -m0f0 -m0fo -m45terbate -ma5terb8 -ma5terbate -masochist -master-bate -masterb8 -masterbat* -masterbat3 -masterbate -masterbation -masterbations -masturbate -mo-fo -mof0 -mofo -mothafuck -mothafucka -mothafuckas -mothafuckaz -mothafucked -mothafucker -mothafuckers -mothafuckin -mothafucking -mothafuckings -mothafucks -mother fucker -motherfuck -motherfucked -motherfucker -motherfuckers -motherfuckin -motherfucking -motherfuckings -motherfuckka -motherfucks -muff -mutha -muthafecker -muthafuckker -muther -mutherfucker -n1gga -n1gger -nazi -nigg3r -nigg4h -nigga -niggah -niggas -niggaz -nigger -niggers -nob -nob jokey -nobhead -nobjocky -nobjokey -numbnuts -nutsack -orgasim -orgasims -orgasm -orgasms -p0rn -pawn -pecker -penis -penisfucker -phonesex -phuck -phuk -phuked -phuking -phukked -phukking -phuks -phuq -pigfucker -pimpis -piss -pissed -pisser -pissers -pisses -pissflaps -pissin -pissing -pissoff -poop -porn -porno -pornography -pornos -prick -pricks -pron -pube -pusse -pussi -pussies -pussy -pussys -rectum -retard -rimjaw -rimming -s hit -s.o.b. -sadist -schlong -screwing -scroat -scrote -scrotum -semen -sex -sh!+ -sh!t -sh1t -shag -shagger -shaggin -shagging -shemale -shi+ -shit -shitdick -shite -shited -shitey -shitfuck -shitfull -shithead -shiting -shitings -shits -shitted -shitter -shitters -shitting -shittings -shitty -skank -slut -sluts -smegma -smut -snatch -son-of-a-bitch -spac -spunk -s_h_i_t -t1tt1e5 -t1tties -teets -teez -testical -testicle -tit -titfuck -tits -titt -tittie5 -tittiefucker -titties -tittyfuck -tittywank -titwank -tosser -turd -tw4t -twat -twathead -twatty -twunt -twunter -v14gra -v1gra -vagina -viagra -vulva -w00se -wang -wank -wanker -wanky -whoar -whore -willies -willy -xrated diff --git a/tests/language/test_language.py b/tests/language/test_language.py deleted file mode 100755 index 98b0290..0000000 --- a/tests/language/test_language.py +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env python3 - -import subprocess -import sys - -checked_ext = ["h", "c", "py", "pyx", "cpp", "hpp", "md", "mk"] - -if __name__ == "__main__": - with open("list.txt", 'r') as handle: - - suffix_cmd = " " - for i in checked_ext: - suffix_cmd += "--include \*." + i + " " - - found_bad_language = False - for line in handle: - line = line.rstrip('\n').rstrip(" ") - try: - cmd = "cd ../../; grep -R -i -w " + suffix_cmd + " '" + line + "'" - res = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT) - print(res) - found_bad_language = True - except subprocess.CalledProcessError: - pass - if found_bad_language: - sys.exit("Failed: found bad language") - else: - print("Success") diff --git a/tests/linter_python/Dockerfile b/tests/linter_python/Dockerfile deleted file mode 100644 index 819d692..0000000 --- a/tests/linter_python/Dockerfile +++ /dev/null @@ -1,19 +0,0 @@ -FROM ubuntu:16.04 - -RUN apt-get update && apt-get install -y make python python-pip locales curl git zlib1g-dev libffi-dev bzip2 libssl-dev - -RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen -ENV LANG en_US.UTF-8 -ENV LANGUAGE en_US:en -ENV LC_ALL en_US.UTF-8 - -RUN curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash - -ENV PATH="/root/.pyenv/bin:/root/.pyenv/shims:${PATH}" -RUN pyenv install 3.7.3 -RUN pyenv global 3.7.3 -RUN pyenv rehash - -COPY requirements.txt /tmp/ -RUN pip install -r /tmp/requirements.txt -COPY . /panda diff --git a/tests/misra/Dockerfile b/tests/misra/Dockerfile deleted file mode 100644 index 0688283..0000000 --- a/tests/misra/Dockerfile +++ /dev/null @@ -1,19 +0,0 @@ -FROM ubuntu:16.04 - -RUN apt-get update && apt-get install -y clang make python python-pip git curl locales zlib1g-dev libffi-dev bzip2 libssl-dev libbz2-dev libusb-1.0-0 - -RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen -ENV LANG en_US.UTF-8 -ENV LANGUAGE en_US:en -ENV LC_ALL en_US.UTF-8 - -RUN curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash - -ENV PATH="/root/.pyenv/bin:/root/.pyenv/shims:${PATH}" -RUN pyenv install 3.7.3 -RUN pyenv global 3.7.3 -RUN pyenv rehash - -COPY requirements.txt /tmp/ -RUN pip install -r /tmp/requirements.txt -COPY . /panda diff --git a/tests/safety/Dockerfile b/tests/safety/Dockerfile deleted file mode 100644 index 0bad054..0000000 --- a/tests/safety/Dockerfile +++ /dev/null @@ -1,50 +0,0 @@ -FROM ubuntu:16.04 - -RUN apt-get update && apt-get install -y \ - autoconf \ - clang \ - curl \ - git \ - libtool \ - libssl-dev \ - libusb-1.0-0 \ - libzmq3-dev \ - locales \ - make \ - python \ - python-pip \ - wget \ - zlib1g-dev - -RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen -ENV LANG en_US.UTF-8 -ENV LANGUAGE en_US:en -ENV LC_ALL en_US.UTF-8 - -RUN curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash - -ENV PATH="/root/.pyenv/bin:/root/.pyenv/shims:${PATH}" -RUN pyenv install 3.7.3 -RUN pyenv global 3.7.3 -RUN pyenv rehash - -COPY requirements.txt /tmp/ -RUN pip install -r /tmp/requirements.txt - -WORKDIR /openpilot -RUN git clone https://github.com/commaai/opendbc.git || true -WORKDIR /openpilot/opendbc -RUN git pull && git checkout f1e69a6cf91cdaf1b8008d73f6fbb6634fbbeb42 -WORKDIR /openpilot -RUN git clone https://github.com/commaai/cereal.git -WORKDIR /openpilot/cereal -RUN git pull && git checkout e370f79522ff7fc0b16f33f4fef420be48061206 -RUN /openpilot/cereal/install_capnp.sh - -RUN pip install -r /openpilot/opendbc/requirements.txt - -WORKDIR /openpilot -RUN cp /openpilot/opendbc/SConstruct /openpilot -COPY . /openpilot/panda - -RUN scons -c && scons -j$(nproc) diff --git a/tests/safety_replay/Dockerfile b/tests/safety_replay/Dockerfile deleted file mode 100644 index 09236e6..0000000 --- a/tests/safety_replay/Dockerfile +++ /dev/null @@ -1,46 +0,0 @@ -FROM ubuntu:16.04 - -RUN apt-get update && apt-get install -y \ - bzip2 \ - clang \ - curl \ - git \ - libarchive-dev \ - libbz2-dev \ - libcurl4-openssl-dev \ - libffi-dev \ - libssl-dev \ - libusb-1.0-0 \ - locales \ - make \ - python \ - python-pip \ - zlib1g-dev - -RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen -ENV LANG en_US.UTF-8 -ENV LANGUAGE en_US:en -ENV LC_ALL en_US.UTF-8 - -RUN curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash - -ENV PATH="/root/.pyenv/bin:/root/.pyenv/shims:${PATH}" -RUN pyenv install 3.7.3 -RUN pyenv global 3.7.3 -RUN pyenv rehash - -COPY requirements.txt /tmp/ -RUN pip install -r /tmp/requirements.txt -COPY tests/safety_replay/requirements_extra.txt requirements_extra.txt -RUN pip install -r requirements_extra.txt -COPY tests/safety_replay/install_capnp.sh install_capnp.sh -RUN ./install_capnp.sh - -RUN git clone https://github.com/commaai/openpilot.git || true -WORKDIR /openpilot -RUN git pull && git checkout f9257fc75f68c673f9e433985fbe739f23310bb4 -RUN git submodule update --init cereal - -COPY . /openpilot/panda - -WORKDIR /openpilot/panda/tests/safety_replay