CI: Fix pre-commit tox 21/68421/2
authorAndrew Grimberg <agrimberg@linuxfoundation.org>
Wed, 4 Aug 2021 13:56:17 +0000 (06:56 -0700)
committerAndrew Grimberg <agrimberg@linuxfoundation.org>
Wed, 4 Aug 2021 17:30:05 +0000 (10:30 -0700)
The gitlint check is not working properly in CI. This change to tox will
make it so that tox works correctly both locally as well as in CI for
running the gitlint check

Signed-off-by: Andrew Grimberg <agrimberg@linuxfoundation.org>
Change-Id: Ib2bd5b3b0159a5aee27a157b7e16269474681cd8

tox.ini

diff --git a/tox.ini b/tox.ini
index 9664f40..c41e267 100644 (file)
--- a/tox.ini
+++ b/tox.ini
@@ -40,11 +40,30 @@ commands =
 
 [testenv:pre-commit]
 basepython = python3
-deps = pre-commit
+allowlist_externals =
+    /bin/sh
+deps =
+    pre-commit
 passenv = HOME
 commands =
     pre-commit run --all-files --show-diff-on-failure
-    pre-commit run gitlint --hook-stage commit-msg --commit-msg-filename .git/COMMIT_EDITMSG
+    /bin/sh -c 'if ! git config --get user.name > /dev/null; then \
+        git config --global --add user.name "CI"; \
+        touch .git/REMOVE_USERNAME; fi'
+    /bin/sh -c 'if ! git config --get user.email > /dev/null; then \
+        git config --global --add user.email "ci@example.org"; \
+        touch .git/REMOVE_USEREMAIL; fi'
+    /bin/sh -c "if [ -f .git/COMMIT_EDITMSG ]; then \
+        cp .git/COMMIT_EDITMSG .git/COMMIT_MSGTOX; else \
+        git log HEAD -n1 | tail -n +5 | cut -c 5- > .git/COMMIT_MSGTOX; fi"
+    pre-commit run gitlint --hook-stage commit-msg --commit-msg-filename .git/COMMIT_MSGTOX
+    /bin/sh -c "rm -f .git/COMMIT_MSGTOX"
+    /bin/sh -c "if [ -f .git/REMOVE_USERNAME ]; then \
+        git config --global --unset user.name; \
+        rm -f .git/REMOVE_USERNAME; fi"
+    /bin/sh -c "if [ -f .git/REMOVE_USEREMAIL ]; then \
+        git config --global --unset user.email; \
+        rm -f .git/REMOVE_USEREMAIL; fi"
 
 [testenv:reno]
 basepython = python3