From bb4fd104a3cc21ae93d67f1b64910c77bd79c664 Mon Sep 17 00:00:00 2001 From: zhangbailin Date: Fri, 18 Sep 2020 10:43:37 +0800 Subject: [PATCH] improve pep8 check logic Introduce the json file check, cherry-pick patches check, and use flake8 shell instead of flake8 command. Change-Id: I94e1554028535a361cb9f9e6e73c15702e459e4f --- api-ref/source/v2/arqs.inc | 4 +- ...celerator_requests-after-update-resp.json} | 27 ------------ ...celerator_requests-before-update-resp.json | 21 ++++++++++ tools/check-cherry-picks.sh | 42 +++++++++++++++++++ tox.ini | 14 ++++++- 5 files changed, 77 insertions(+), 31 deletions(-) rename doc/api_samples/accelerator_requests/{accelerator_requests-update-resp.json => accelerator_requests-after-update-resp.json} (56%) create mode 100644 doc/api_samples/accelerator_requests/accelerator_requests-before-update-resp.json create mode 100755 tools/check-cherry-picks.sh diff --git a/api-ref/source/v2/arqs.inc b/api-ref/source/v2/arqs.inc index 24cd8694..a3eb4039 100644 --- a/api-ref/source/v2/arqs.inc +++ b/api-ref/source/v2/arqs.inc @@ -84,7 +84,7 @@ Request - accelerator_request_uuid: accelerator_request_uuid - hostname: hostname_bind_unbind_req - - device_rp_uuid: device_rp_uuid_bind_unbind_req + - device_rp_uuid: device_rp_uuid_bind_unbind_req - instance_uuid: instance_uuid_bind_unbind_req **Example patch curl** @@ -93,7 +93,7 @@ Request **Example response: update an accelerator request** -.. literalinclude:: ../../../doc/api_samples/accelerator_requests/accelerator_requests-update-resp.json +.. literalinclude:: ../../../doc/api_samples/accelerator_requests/accelerator_requests-after-update-resp.json Delete Accelerator Requests by ARQ uuid --------------------------------------- diff --git a/doc/api_samples/accelerator_requests/accelerator_requests-update-resp.json b/doc/api_samples/accelerator_requests/accelerator_requests-after-update-resp.json similarity index 56% rename from doc/api_samples/accelerator_requests/accelerator_requests-update-resp.json rename to doc/api_samples/accelerator_requests/accelerator_requests-after-update-resp.json index fb8fec7f..fe041af4 100644 --- a/doc/api_samples/accelerator_requests/accelerator_requests-update-resp.json +++ b/doc/api_samples/accelerator_requests/accelerator_requests-after-update-resp.json @@ -1,29 +1,3 @@ -Before PATCH - -{ - "instance_uuid":null, - "hostname":null, - "uuid":"89ec9c4d-73b2-4aaf-9225-485945aa7162", - "links":[ - { - "href":"http://192.168.23.138/accelerator/v2/accelerator_requests/89ec9c4d-73b2-4aaf-9225-485945aa7162", - "rel":"self" - } - ], - "created_at":"2019-10-25T12:01:05+00:00", - "device_profile_group_id":0, - "attach_handle_type":"", - "updated_at":null, - "state":"Initial", - "device_rp_uuid":null, - "device_profile_name":"chenke-dp1", - "attach_handle_info":{ - - } -} - -After PATCH - { "instance_uuid":"506220bc-18f2-4294-9b29-80267a021dc0", "hostname":"centos-80", @@ -48,4 +22,3 @@ After PATCH "function":"0" } } - diff --git a/doc/api_samples/accelerator_requests/accelerator_requests-before-update-resp.json b/doc/api_samples/accelerator_requests/accelerator_requests-before-update-resp.json new file mode 100644 index 00000000..76967673 --- /dev/null +++ b/doc/api_samples/accelerator_requests/accelerator_requests-before-update-resp.json @@ -0,0 +1,21 @@ +{ + "instance_uuid":null, + "hostname":null, + "uuid":"89ec9c4d-73b2-4aaf-9225-485945aa7162", + "links":[ + { + "href":"http://192.168.23.138/accelerator/v2/accelerator_requests/89ec9c4d-73b2-4aaf-9225-485945aa7162", + "rel":"self" + } + ], + "created_at":"2019-10-25T12:01:05+00:00", + "device_profile_group_id":0, + "attach_handle_type":"", + "updated_at":null, + "state":"Initial", + "device_rp_uuid":null, + "device_profile_name":"chenke-dp1", + "attach_handle_info":{ + + } +} diff --git a/tools/check-cherry-picks.sh b/tools/check-cherry-picks.sh new file mode 100755 index 00000000..32627e59 --- /dev/null +++ b/tools/check-cherry-picks.sh @@ -0,0 +1,42 @@ +#!/bin/sh +# +# A tool to check the cherry-pick hashes from the current git commit message +# to verify that they're all on either master or stable/ branches +# + +commit_hash="" + +# Check if the patch is a merge patch by counting the number of parents. +# If the patch has 2 parents, then the 2nd parent is the patch we want +# to validate. +parent_number=$(git show --format='%P' --quiet | awk '{print NF}') +if [ $parent_number -eq 2 ]; then + commit_hash=$(git show --format='%P' --quiet | awk '{print $NF}') +fi + +hashes=$(git show --format='%b' --quiet $commit_hash | sed -nr 's/^.cherry picked from commit (.*).$/\1/p') +checked=0 +branches+="" +for hash in $hashes; do + branch=$(git branch -a --contains "$hash" 2>/dev/null| grep -oE '(master|stable/[a-z]+)') + if [ $? -ne 0 ]; then + echo "Cherry pick hash $hash not on any master or stable branches" + exit 1 + fi + branches+=" $branch" + checked=$(($checked + 1)) +done + +if [ $checked -eq 0 ]; then + if ! grep -q '^defaultbranch=stable/' .gitreview; then + echo "Checked $checked cherry-pick hashes: OK" + exit 0 + else + if ! git show --format='%B' --quiet | grep -qi 'stable.*only'; then + echo 'Stable branch requires either cherry-pick -x headers or [stable-only] tag!' + exit 1 + fi + fi +else + echo Checked $checked cherry-pick hashes on branches: $(echo $branches | tr ' ' '\n' | sort | uniq) +fi diff --git a/tox.ini b/tox.ini index ba4ee446..c27eb8ce 100644 --- a/tox.ini +++ b/tox.ini @@ -12,7 +12,9 @@ basepython = python3 usedevelop = True whitelist_externals = bash + find rm + env make install_command = {[testenv:common-constraints]install_command} setenv = @@ -52,9 +54,17 @@ commands = bindep test usedevelop = False [testenv:pep8] +description = + Run style checks. +envdir = {toxworkdir}/shared commands = - flake8 - doc8 doc/source/ CONTRIBUTING.rst HACKING.rst README.rst + bash tools/flake8wrap.sh {posargs} + # Check that all JSON files don't have \r\n in line. + bash -c "! find doc/ -type f -name *.json | xargs grep -U -n $'\r'" + # Check that all included JSON files are valid JSON + bash -c '! find doc/ -type f -name *.json | grep -v 'curl' | xargs -t -n1 python -m json.tool 2>&1 > /dev/null | grep -B1 -v ^python' + bash tools/check-cherry-picks.sh + doc8 doc/source/ CONTRIBUTING.rst HACKING.rst README.rst [testenv:pep8-constraints] install_command = {[testenv:common-constraints]install_command}