mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Add style checker
Rename files Changes from review Update test/docsCodeStyle.sh Co-Authored-By: chriseth <chris@ethereum.org> Update test/docsCodeStyle.sh Co-Authored-By: chriseth <chris@ethereum.org> Remove extraneous brackets
This commit is contained in:
parent
967ee944a5
commit
85ec44826a
@ -183,6 +183,22 @@ jobs:
|
||||
name: Check spelling
|
||||
command: ~/.local/bin/codespell -S "*.enc,.git" -I ./scripts/codespell_whitelist.txt
|
||||
|
||||
chk_docs_examples:
|
||||
docker:
|
||||
- image: circleci/node
|
||||
environment:
|
||||
TERM: xterm
|
||||
steps:
|
||||
- checkout
|
||||
- attach_workspace:
|
||||
at: build
|
||||
- run:
|
||||
name: JS deps
|
||||
command: sudo npm install -g solhint
|
||||
- run:
|
||||
name: Test Docs examples
|
||||
command: ./test/docsCodeStyle.sh
|
||||
|
||||
chk_coding_style:
|
||||
docker:
|
||||
- image: buildpack-deps:disco
|
||||
@ -586,6 +602,7 @@ workflows:
|
||||
# basic checks
|
||||
- chk_spelling: *workflow_trigger_on_tags
|
||||
- chk_coding_style: *workflow_trigger_on_tags
|
||||
- chk_docs_examples: *workflow_trigger_on_tags
|
||||
- chk_buglist: *workflow_trigger_on_tags
|
||||
- chk_proofs: *workflow_trigger_on_tags
|
||||
|
||||
@ -646,4 +663,3 @@ workflows:
|
||||
# Code Coverage enabled build and tests
|
||||
- b_ubu_codecov: *workflow_trigger_on_tags
|
||||
- t_ubu_codecov: *workflow_ubuntu1904_codecov
|
||||
|
||||
|
@ -59,8 +59,10 @@ def extract_docs_cases(path):
|
||||
def write_cases(f, tests):
|
||||
cleaned_filename = f.replace(".","_").replace("-","_").replace(" ","_").lower()
|
||||
for test in tests:
|
||||
open('test_%s_%s.sol' % (hashlib.sha256(test).hexdigest(), cleaned_filename), 'wb').write(test)
|
||||
|
||||
# When code examples are extracted they indented by 8 spaces, which violates the style guide,
|
||||
# so before checking remove 4 spaces from each line.
|
||||
remainder = re.sub(r'^ {4}', '', test, 0, re.MULTILINE)
|
||||
open('test_%s_%s.sol' % (hashlib.sha256(test).hexdigest(), cleaned_filename), 'wb').write(remainder)
|
||||
|
||||
def extract_and_write(f, path):
|
||||
if docs:
|
||||
|
8
test/.solhint.json
Normal file
8
test/.solhint.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"extends": "solhint:default",
|
||||
"plugins": [],
|
||||
"rules": {
|
||||
"compiler-fixed": false,
|
||||
"no-inline-assembly": false
|
||||
}
|
||||
}
|
1
test/.solhintignore
Normal file
1
test/.solhintignore
Normal file
@ -0,0 +1 @@
|
||||
*contributing_rst*
|
@ -308,6 +308,7 @@ SOLTMPDIR=$(mktemp -d)
|
||||
set -e
|
||||
cd "$SOLTMPDIR"
|
||||
"$REPO_ROOT"/scripts/isolate_tests.py "$REPO_ROOT"/docs/ docs
|
||||
|
||||
for f in *.sol
|
||||
do
|
||||
# The contributors guide uses syntax tests, but we cannot
|
||||
@ -317,6 +318,7 @@ SOLTMPDIR=$(mktemp -d)
|
||||
continue
|
||||
fi
|
||||
echo "$f"
|
||||
|
||||
opts=''
|
||||
# We expect errors if explicitly stated, or if imports
|
||||
# are used (in the style guide)
|
||||
|
49
test/docsCodeStyle.sh
Executable file
49
test/docsCodeStyle.sh
Executable file
@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
## GLOBAL VARIABLES
|
||||
|
||||
REPO_ROOT=$(cd $(dirname "$0")/.. && pwd)
|
||||
|
||||
## FUNCTIONS
|
||||
|
||||
if [ "$CIRCLECI" ]
|
||||
then
|
||||
function printTask() { echo "$(tput bold)$(tput setaf 2)$1$(tput setaf 7)"; }
|
||||
function printError() { echo "$(tput setaf 1)$1$(tput setaf 7)"; }
|
||||
else
|
||||
function printTask() { echo "$(tput bold)$(tput setaf 2)$1$(tput sgr0)"; }
|
||||
function printError() { echo "$(tput setaf 1)$1$(tput sgr0)"; }
|
||||
fi
|
||||
|
||||
printTask "Checking docs examples style"
|
||||
SOLTMPDIR=$(mktemp -d)
|
||||
(
|
||||
set -e
|
||||
cd "$SOLTMPDIR"
|
||||
"$REPO_ROOT"/scripts/isolate_tests.py "$REPO_ROOT"/docs/ docs
|
||||
|
||||
if npm -v >/dev/null 2>&1; then
|
||||
if npm list -g | grep solhint >/dev/null 2>&1; then
|
||||
echo "node is installed, setting up solhint"
|
||||
cp "$REPO_ROOT"/test/.solhint.json "$SOLTMPDIR"/.solhint.json
|
||||
cp "$REPO_ROOT"/test/.solhintignore "$SOLTMPDIR"/.solhintignore
|
||||
|
||||
for f in *.sol
|
||||
do
|
||||
echo "$f"
|
||||
# Only report errors
|
||||
solhint -f unix "$SOLTMPDIR/$f"
|
||||
done
|
||||
else
|
||||
echo "node is installed, but not solhint"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "node not installed, skipping docs style checker"
|
||||
exit 1
|
||||
fi
|
||||
)
|
||||
rm -rf "$SOLTMPDIR"
|
||||
echo "Done."
|
Loading…
Reference in New Issue
Block a user