diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4c92657c..1dfaf212 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,7 +18,8 @@ jobs: fail-fast: false matrix: os: ["ubuntu-latest", "windows-2022"] - type: ["brownie", "buidler", "dapp", "embark", "etherlime", "hardhat", "solc", "truffle", "waffle", "foundry", "standard"] + type: ["brownie"] + # "buidler", "dapp", "embark", "etherlime", "hardhat", "solc", "truffle", "waffle", "foundry", "standard"] exclude: # Currently broken, tries to pull git:// which is blocked by GH - type: embark @@ -73,3 +74,4 @@ jobs: shell: bash run: | bash "scripts/ci_test_${TEST_TYPE}.sh" + pytest -k $TEST_TYPE diff --git a/scripts/ci_test_brownie.sh b/scripts/ci_test_brownie.sh index ebfd9413..0410f5a4 100755 --- a/scripts/ci_test_brownie.sh +++ b/scripts/ci_test_brownie.sh @@ -1,13 +1,13 @@ #!/usr/bin/env bash pip install eth-brownie -brownie bake token -cd token || exit 255 +# brownie bake token +# cd token || exit 255 -crytic-compile . --compile-force-framework Brownie +# crytic-compile . --compile-force-framework Brownie -if [ $? -ne 0 ] -then - echo "Brownie test failed" - exit 255 -fi +# if [ $? -ne 0 ] +# then +# echo "Brownie test failed" +# exit 255 +# fi diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 00000000..985268d5 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,32 @@ +import shutil +import tempfile +import subprocess +import pytest +from typing import List + +@pytest.fixture +def make_tmpdir(): + with tempfile.TemporaryDirectory() as tmpdirname: + yield tmpdirname + + +import logging +LOGGER = logging.getLogger(__name__) + +@pytest.fixture +def run_command(): + def _run(command: List[str], cwd: str) -> int: + executable = shutil.which(command[0]) + assert executable + process = subprocess.run( + command, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + executable=executable, + cwd=cwd, + check=True + ) + LOGGER.info(process.stdout.decode("utf-8")) + LOGGER.error(process.stderr.decode("utf-8")) + return process.returncode + return _run \ No newline at end of file diff --git a/tests/test_brownie.py b/tests/test_brownie.py new file mode 100644 index 00000000..2dbae47e --- /dev/null +++ b/tests/test_brownie.py @@ -0,0 +1,19 @@ +import os +import shutil +import pytest + +brownie_available = shutil.which("brownie") is not None +@pytest.mark.skip_if(not brownie_available) +def test_brownie(make_tmpdir, run_command): + tmpdirname = make_tmpdir + + initialize = ["brownie", "bake", "token"] + test = ["crytic-compile", ".", "--compile-force-framework", "brownie"] + + run_command(initialize, tmpdirname) + project_dir = os.path.join(tmpdirname,"token") + assert os.path.isdir(project_dir) + assert run_command(test, project_dir) == 0 + + +