contrib/heptapod-ci.yml
author Matt Harbison <matt_harbison@yahoo.com>
Wed, 05 May 2021 17:47:30 -0400
branchstable
changeset 47182 dff19fe2973c
parent 47081 e917fa36fb58
child 47570 bc01b8ad6134
permissions -rw-r--r--
run-tests: fix whitelist/blacklist with directories on Windows The file name is resolved with `os.path.relpath()` in the `Test` constructor, which yields `\` on Windows. That doesn't match the `/` separator when using MSYS tools to build the list, and it isn't obvious that this is the problem because directory separators can mostly be used interchangeably. The `--test-list` argument already seems to be properly handled.

stages:
  - tests
  - phabricator

image: registry.heptapod.net/mercurial/ci-images/mercurial-core:$HG_CI_IMAGE_TAG

variables:
    PYTHON: python
    TEST_HGMODULEPOLICY: "allow"
    HG_CI_IMAGE_TAG: "latest"
    TEST_HGTESTS_ALLOW_NETIO: "0"

.runtests_template: &runtests
    stage: tests
    # The runner made a clone as root.
    # We make a new clone owned by user used to run the step.
    before_script:
      - hg clone . /tmp/mercurial-ci/ --noupdate --config phases.publish=no
      - hg -R /tmp/mercurial-ci/ update `hg log --rev '.' --template '{node}'`
      - cd /tmp/mercurial-ci/
      - ls -1 tests/test-check-*.* > /tmp/check-tests.txt
      - black --version
      - clang-format --version
    script:
        - echo "python used, $PYTHON"
        - echo "$RUNTEST_ARGS"
        - HGTESTS_ALLOW_NETIO="$TEST_HGTESTS_ALLOW_NETIO" HGMODULEPOLICY="$TEST_HGMODULEPOLICY" "$PYTHON" tests/run-tests.py --color=always $RUNTEST_ARGS

checks-py2:
    <<: *runtests
    variables:
        RUNTEST_ARGS: "--time --test-list /tmp/check-tests.txt"

checks-py3:
    <<: *runtests
    variables:
        RUNTEST_ARGS: "--time --test-list /tmp/check-tests.txt"
        PYTHON: python3

rust-cargo-test-py2: &rust_cargo_test
    stage: tests
    script:
        - echo "python used, $PYTHON"
        - make rust-tests

rust-cargo-test-py3:
    stage: tests
    <<: *rust_cargo_test
    variables:
        PYTHON: python3

phabricator-refresh:
    stage: phabricator
    variables:
      DEFAULT_COMMENT: ":white_check_mark: refresh by Heptapod after a successful CI run (:octopus: :green_heart:)"
      STABLE_COMMENT: ":white_check_mark: refresh by Heptapod after a successful CI run (:octopus: :green_heart:)\n⚠ This patch is intended for stable ⚠\n{image https://media.giphy.com/media/nYI8SmmChYXK0/source.gif}"
    script:
      - |
        if [ `hg branch` == "stable" ]; then
            ./contrib/phab-refresh-stack.sh --comment "$STABLE_COMMENT";
        else
            ./contrib/phab-refresh-stack.sh --comment "$DEFAULT_COMMENT";
        fi

test-py2:
    <<: *runtests
    variables:
        RUNTEST_ARGS: " --no-rust --blacklist /tmp/check-tests.txt"
        TEST_HGMODULEPOLICY: "c"
        TEST_HGTESTS_ALLOW_NETIO: "1"

test-py3:
    <<: *runtests
    variables:
        RUNTEST_ARGS: " --no-rust --blacklist /tmp/check-tests.txt"
        PYTHON: python3
        TEST_HGMODULEPOLICY: "c"
        TEST_HGTESTS_ALLOW_NETIO: "1"

test-py2-pure:
    <<: *runtests
    variables:
        RUNTEST_ARGS: "--pure --blacklist /tmp/check-tests.txt"
        TEST_HGMODULEPOLICY: "py"

test-py3-pure:
    <<: *runtests
    variables:
        RUNTEST_ARGS: "--pure --blacklist /tmp/check-tests.txt"
        PYTHON: python3
        TEST_HGMODULEPOLICY: "py"

test-py2-rust:
    <<: *runtests
    variables:
        HGWITHRUSTEXT: cpython
        RUNTEST_ARGS: "--rust --blacklist /tmp/check-tests.txt"
        TEST_HGMODULEPOLICY: "rust+c"

test-py3-rust:
    <<: *runtests
    variables:
        HGWITHRUSTEXT: cpython
        RUNTEST_ARGS: "--rust --blacklist /tmp/check-tests.txt"
        PYTHON: python3
        TEST_HGMODULEPOLICY: "rust+c"

test-py3-rhg:
    <<: *runtests
    variables:
        HGWITHRUSTEXT: cpython
        RUNTEST_ARGS: "--rust --rhg --blacklist /tmp/check-tests.txt"
        PYTHON: python3
        TEST_HGMODULEPOLICY: "rust+c"

test-py2-chg:
    <<: *runtests
    variables:
        RUNTEST_ARGS: "--blacklist /tmp/check-tests.txt --chg"
        TEST_HGMODULEPOLICY: "c"

test-py3-chg:
    <<: *runtests
    variables:
        PYTHON: python3
        RUNTEST_ARGS: "--blacklist /tmp/check-tests.txt --chg"
        TEST_HGMODULEPOLICY: "c"

check-pytype-py3:
    extends: .runtests_template
    when: manual
    before_script:
      - hg clone . /tmp/mercurial-ci/ --noupdate --config phases.publish=no
      - hg -R /tmp/mercurial-ci/ update `hg log --rev '.' --template '{node}'`
      - cd /tmp/mercurial-ci/
      - make local PYTHON=$PYTHON
      - $PYTHON -m pip install --user -U pytype==2021.04.15
    variables:
        RUNTEST_ARGS: " --allow-slow-tests tests/test-check-pytype.t"
        PYTHON: python3
        TEST_HGMODULEPOLICY: "c"