mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #8548 from mijovic/testDocsPragma
Enabling pragma with > in minimum version check
This commit is contained in:
commit
3f26f7fb7e
@ -651,6 +651,19 @@ jobs:
|
|||||||
SOLTEST_FLAGS: --no-smt
|
SOLTEST_FLAGS: --no-smt
|
||||||
ASAN_OPTIONS: check_initialization_order=true:detect_stack_use_after_return=true:strict_init_order=true:strict_string_checks=true:detect_invalid_pointer_pairs=2
|
ASAN_OPTIONS: check_initialization_order=true:detect_stack_use_after_return=true:strict_init_order=true:strict_string_checks=true:detect_invalid_pointer_pairs=2
|
||||||
|
|
||||||
|
t_ubu_pragma_docs_test: &t_ubu_pragma_docs_test
|
||||||
|
docker:
|
||||||
|
- image: ethereum/solidity-buildpack-deps:ubuntu1904-<< pipeline.parameters.ubuntu-1904-docker-image-rev >>
|
||||||
|
environment:
|
||||||
|
TERM: xterm
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- attach_workspace:
|
||||||
|
at: build
|
||||||
|
- run: *run_docs_version_pragma_check
|
||||||
|
- store_test_results: *store_test_results
|
||||||
|
- store_artifacts: *artifacts_test_results
|
||||||
|
|
||||||
t_ems_solcjs:
|
t_ems_solcjs:
|
||||||
docker:
|
docker:
|
||||||
- image: ethereum/solidity-buildpack-deps:ubuntu1904
|
- image: ethereum/solidity-buildpack-deps:ubuntu1904
|
||||||
@ -802,6 +815,7 @@ workflows:
|
|||||||
- b_ubu: *workflow_trigger_on_tags
|
- b_ubu: *workflow_trigger_on_tags
|
||||||
- b_ubu18: *workflow_trigger_on_tags
|
- b_ubu18: *workflow_trigger_on_tags
|
||||||
- t_ubu_cli: *workflow_ubuntu1904
|
- t_ubu_cli: *workflow_ubuntu1904
|
||||||
|
- t_ubu_pragma_docs_test: *workflow_ubuntu1904
|
||||||
- t_ubu_soltest: *workflow_ubuntu1904
|
- t_ubu_soltest: *workflow_ubuntu1904
|
||||||
- b_ubu_clang: *workflow_trigger_on_tags
|
- b_ubu_clang: *workflow_trigger_on_tags
|
||||||
- t_ubu_clang_soltest: *workflow_ubuntu1904_clang
|
- t_ubu_clang_soltest: *workflow_ubuntu1904_clang
|
||||||
|
@ -184,7 +184,7 @@ invalid bids.
|
|||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
pragma solidity >0.4.23 <0.7.0;
|
pragma solidity >=0.5.0 <0.7.0;
|
||||||
|
|
||||||
contract BlindAuction {
|
contract BlindAuction {
|
||||||
struct Bid {
|
struct Bid {
|
||||||
|
@ -605,8 +605,8 @@ Assume you have the following contracts you want to update declared in ``Source.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
// This will not compile
|
// This will not compile after 0.5.0
|
||||||
pragma solidity >0.4.23;
|
pragma solidity >0.4.23 <0.5.0;
|
||||||
|
|
||||||
contract Updateable {
|
contract Updateable {
|
||||||
function run() public view returns (bool);
|
function run() public view returns (bool);
|
||||||
|
@ -32,6 +32,97 @@ SOLIDITY_BUILD_DIR=${SOLIDITY_BUILD_DIR:-build}
|
|||||||
source "${REPO_ROOT}/scripts/common.sh"
|
source "${REPO_ROOT}/scripts/common.sh"
|
||||||
source "${REPO_ROOT}/scripts/common_cmdline.sh"
|
source "${REPO_ROOT}/scripts/common_cmdline.sh"
|
||||||
|
|
||||||
|
function versionGreater()
|
||||||
|
{
|
||||||
|
v1=$1
|
||||||
|
v2=$2
|
||||||
|
ver1=( ${v1//./ } )
|
||||||
|
ver2=( ${v2//./ } )
|
||||||
|
|
||||||
|
if (( ${ver1[0]} > ${ver2[0]} ))
|
||||||
|
then
|
||||||
|
return 0
|
||||||
|
elif (( ${ver1[0]} == ${ver2[0]} )) && (( ${ver1[1]} > ${ver2[1]} ))
|
||||||
|
then
|
||||||
|
return 0
|
||||||
|
elif (( ${ver1[0]} == ${ver2[0]} )) && (( ${ver1[1]} == ${ver2[1]} )) && (( ${ver1[2]} > ${ver2[2]} ))
|
||||||
|
then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function versionEqual()
|
||||||
|
{
|
||||||
|
if [ "$1" == "$2" ]
|
||||||
|
then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function getAllAvailableVersions()
|
||||||
|
{
|
||||||
|
allVersions=()
|
||||||
|
local allListedVersions=( $(
|
||||||
|
wget -q -O- https://ethereum.github.io/solc-bin/bin/list.txt |
|
||||||
|
grep -Po '(?<=soljson-v)\d+.\d+.\d+(?=\+commit)' |
|
||||||
|
sort -V
|
||||||
|
) )
|
||||||
|
for listed in "${allListedVersions[@]}"
|
||||||
|
do
|
||||||
|
if versionGreater "$listed" "0.4.10"
|
||||||
|
then
|
||||||
|
allVersions+=( $listed )
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function findMinimalVersion()
|
||||||
|
{
|
||||||
|
local f=$1
|
||||||
|
local greater=false
|
||||||
|
local pragmaVersion
|
||||||
|
|
||||||
|
# Get minimum compiler version defined by pragma
|
||||||
|
if (grep -Po '(?<=pragma solidity >=)\d+.\d+.\d+' "$f" >/dev/null)
|
||||||
|
then
|
||||||
|
pragmaVersion="$(grep -Po '(?<=pragma solidity >=)\d+.\d+.\d+' "$f")"
|
||||||
|
sign=">="
|
||||||
|
elif (grep -Po '(?<=pragma solidity \^)\d+.\d+.\d+' "$f" >/dev/null)
|
||||||
|
then
|
||||||
|
pragmaVersion="$(grep -Po '(?<=pragma solidity \^)\d+.\d+.\d+' "$f")"
|
||||||
|
sign="^"
|
||||||
|
elif (grep -Po '(?<=pragma solidity >)\d+.\d+.\d+' "$f" >/dev/null)
|
||||||
|
then
|
||||||
|
pragmaVersion="$(grep -Po '(?<=pragma solidity >)\d+.\d+.\d+' "$f")"
|
||||||
|
sign=">"
|
||||||
|
greater=true;
|
||||||
|
else
|
||||||
|
printError "No valid pragma statement in file. Skipping..."
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
version=""
|
||||||
|
for ver in "${allVersions[@]}"
|
||||||
|
do
|
||||||
|
if versionGreater "$ver" "$pragmaVersion"
|
||||||
|
then
|
||||||
|
minVersion="$ver"
|
||||||
|
break
|
||||||
|
elif ([ $greater == false ]) && versionEqual "$ver" "$pragmaVersion"
|
||||||
|
then
|
||||||
|
version="$ver"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z version ]
|
||||||
|
then
|
||||||
|
printError "No release $sign$pragmaVersion was listed in available releases!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
printTask "Verifying that all examples from the documentation have the correct version range..."
|
printTask "Verifying that all examples from the documentation have the correct version range..."
|
||||||
SOLTMPDIR=$(mktemp -d)
|
SOLTMPDIR=$(mktemp -d)
|
||||||
(
|
(
|
||||||
@ -39,6 +130,8 @@ SOLTMPDIR=$(mktemp -d)
|
|||||||
cd "$SOLTMPDIR"
|
cd "$SOLTMPDIR"
|
||||||
"$REPO_ROOT"/scripts/isolate_tests.py "$REPO_ROOT"/docs/ docs
|
"$REPO_ROOT"/scripts/isolate_tests.py "$REPO_ROOT"/docs/ docs
|
||||||
|
|
||||||
|
getAllAvailableVersions
|
||||||
|
|
||||||
for f in *.sol
|
for f in *.sol
|
||||||
do
|
do
|
||||||
# The contributors guide uses syntax tests, but we cannot
|
# The contributors guide uses syntax tests, but we cannot
|
||||||
@ -61,27 +154,26 @@ SOLTMPDIR=$(mktemp -d)
|
|||||||
# ignore warnings in this case
|
# ignore warnings in this case
|
||||||
opts="$opts -o"
|
opts="$opts -o"
|
||||||
|
|
||||||
# Get minimum compiler version defined by pragma
|
findMinimalVersion $f
|
||||||
if (grep -Po '(?<=pragma solidity >=)\d+.\d+.\d+' "$f" >/dev/null); then
|
if [ -z "$version" ]
|
||||||
version="$(grep -Po '(?<=pragma solidity >=)\d+.\d+.\d+' "$f")"
|
then
|
||||||
if (echo $version | grep -Po '(?<=0.4.)\d+' >/dev/null); then
|
continue
|
||||||
patch=$(echo $version | grep -Po '(?<=0.4.)\d+')
|
|
||||||
if (( patch < 11 )); then
|
|
||||||
version="0.4.11" # first available release on github
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
elif (grep -Po '(?<=pragma solidity \^)\d+.\d+.\d+' "$f" >/dev/null); then
|
|
||||||
version="$(grep -Po '(?<=pragma solidity \^)\d+.\d+.\d+' "$f")"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
opts="$opts -v $version"
|
opts="$opts -v $version"
|
||||||
|
|
||||||
solc_bin="solc-$version"
|
solc_bin="solc-$version"
|
||||||
echo "$solc_bin"
|
echo "$solc_bin"
|
||||||
if [[ ! -f "$solc_bin" ]]; then
|
if [[ ! -f "$solc_bin" ]]
|
||||||
|
then
|
||||||
echo "Downloading release from github..."
|
echo "Downloading release from github..."
|
||||||
wget https://github.com/ethereum/solidity/releases/download/v$version/solc-static-linux
|
if wget -q https://github.com/ethereum/solidity/releases/download/v$version/solc-static-linux >/dev/null
|
||||||
mv solc-static-linux $solc_bin
|
then
|
||||||
|
mv solc-static-linux $solc_bin
|
||||||
|
else
|
||||||
|
printError "No release $version was found on github!"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ln -sf "$solc_bin" "solc"
|
ln -sf "$solc_bin" "solc"
|
||||||
|
Loading…
Reference in New Issue
Block a user