container:
  image: python

lint_task:
  setup_script:
    - pip install flake8
    - pip install codespell
  script:
    - flake8 --version
    - PYTHONWARNINGS="ignore" flake8 --ignore=E501,F841,W503 --exclude=basicswap/contrib,messages_pb2.py,.eggs,.tox,bin/install_certifi.py
    - codespell --check-filenames --disable-colors --quiet-level=7 --ignore-words=tests/lint/spelling.ignore-words.txt -S .git,.eggs,.tox,pgp,*.pyc,*basicswap/contrib,*mnemonics.py,bin/install_certifi.py

test_task:
  environment:
    - TEST_RELOAD_PATH: $HOME/test_basicswap1
    - TEST_DIR: $HOME/test_basicswap2
    - BIN_DIR: /tmp/cached_bin
    - PARTICL_BINDIR: ${BIN_DIR}/particl
    - BITCOIN_BINDIR: ${BIN_DIR}/bitcoin
    - LITECOIN_BINDIR: ${BIN_DIR}/litecoin
    - XMR_BINDIR: ${BIN_DIR}/monero
  setup_script:
    - apt-get update
    - apt-get install -y wget python3-pip gnupg unzip protobuf-compiler automake libtool pkg-config
    - pip install tox pytest
    - python3 setup.py install
    - wget -O coincurve-anonswap.zip https://github.com/tecnovert/coincurve/archive/refs/tags/anonswap_v0.1.zip
    - unzip -d coincurve-anonswap coincurve-anonswap.zip
    - mv ./coincurve-anonswap/*/{.,}* ./coincurve-anonswap || true
    - cd coincurve-anonswap
    - python3 setup.py install --force
  bins_cache:
    folder: /tmp/cached_bin
    reupload_on_changes: false
    fingerprint_script:
      - basicswap-prepare -v
    populate_script:
      - basicswap-prepare --bindir=/tmp/cached_bin --preparebinonly --withcoins=particl,bitcoin,litecoin,monero
  script:
    - cd "${CIRRUS_WORKING_DIR}"
    - export DATADIRS="${TEST_DIR}"
    - mkdir -p "${DATADIRS}/bin"
    - cp -r ${BIN_DIR} "${DATADIRS}/bin"
    - mkdir -p "${TEST_RELOAD_PATH}/bin"
    - cp -r ${BIN_DIR} "${TEST_RELOAD_PATH}/bin"
    - # tox
    - pytest tests/basicswap/test_other.py
    - pytest tests/basicswap/test_run.py
    - pytest tests/basicswap/test_reload.py