version: 2.1
executors:
  docker-publisher:
    docker:
      - image: circleci/buildpack-deps:stretch
jobs:
  test_demo:
    working_directory: /test
    docker:
      - image: rust:1.45-stretch
    steps:
      - checkout
      - run:
          command: |
            cargo build
      - run:
          command: |
            ./target/debug/stacks-inspect local initialize db &&
            ./target/debug/stacks-inspect local check sample-contracts/tokens.clar db &&
            ./target/debug/stacks-inspect local launch S1G2081040G2081040G2081040G208105NK8PE5.tokens sample-contracts/tokens.clar db &&
            ./target/debug/stacks-inspect local check sample-contracts/names.clar db &&
            ./target/debug/stacks-inspect local launch S1G2081040G2081040G2081040G208105NK8PE5.names sample-contracts/names.clar db &&
            ./target/debug/stacks-inspect local execute db S1G2081040G2081040G2081040G208105NK8PE5.tokens mint! SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR u100000
      - run:
          command: |
            echo "(get-balance 'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR)" | ./target/debug/stacks-inspect local eval S1G2081040G2081040G2081040G208105NK8PE5.tokens db
  unit_tests_with_cov:
    machine: true
    working_directory: ~/blockstack
    steps:
      - checkout
      - run:
          name: Coverage via tarpaulin
          command: |
            docker run --security-opt seccomp=unconfined -v "${PWD}:/volume" xd009642/tarpaulin \
            bash -c "cargo tarpaulin -v --workspace -t 300 -o Xml"
          no_output_timeout: 200m
      - run:
          name: Upload to codecov.io
          command: |
            bash <(curl -s https://codecov.io/bash)
  unit_tests:
    docker:
      - image: rust:1.40-stretch
    working_directory: ~/blockstack
    steps:
      - checkout
      - run:
          no_output_timeout: 200m
          command: |
            cargo test -j 1 --workspace --exclude clarity
  all_tests:
    docker:
      - image: rust:1.40-stretch
    working_directory: ~/blockstack
    steps:
      - checkout
      - run:
          no_output_timeout: 200m
          command: |
            cargo test --workspace && cargo test -- --ignored --test-threads 1
workflows:
  version: 2
  test:
    jobs:
      - unit_tests
      - test_demo
# disable `all_tests` for now, because the circle builder
#   OOMs on compile...
#      - all_tests:
#          filters:
#            branches:
#              only:
#                - master
#                - /.*net.*/
#                - /.*marf.*/
