1stages:
2  - tests
3  - phabricator
4
5image: registry.heptapod.net/mercurial/ci-images/mercurial-core:$HG_CI_IMAGE_TAG
6
7variables:
8    PYTHON: python
9    TEST_HGMODULEPOLICY: "allow"
10    HG_CI_IMAGE_TAG: "latest"
11    TEST_HGTESTS_ALLOW_NETIO: "0"
12
13.all_template: &all
14  when: always
15
16.runtests_template: &runtests
17    <<: *all
18    stage: tests
19    # The runner made a clone as root.
20    # We make a new clone owned by user used to run the step.
21    before_script:
22      - hg clone . /tmp/mercurial-ci/ --noupdate --config phases.publish=no
23      - hg -R /tmp/mercurial-ci/ update `hg log --rev '.' --template '{node}'`
24      - cd /tmp/mercurial-ci/
25      - ls -1 tests/test-check-*.* > /tmp/check-tests.txt
26      - black --version
27      - clang-format --version
28    script:
29        - echo "python used, $PYTHON"
30        - echo "$RUNTEST_ARGS"
31        - HGTESTS_ALLOW_NETIO="$TEST_HGTESTS_ALLOW_NETIO" HGMODULEPOLICY="$TEST_HGMODULEPOLICY" "$PYTHON" tests/run-tests.py --color=always $RUNTEST_ARGS
32
33checks-py2:
34    <<: *runtests
35    variables:
36        RUNTEST_ARGS: "--time --test-list /tmp/check-tests.txt"
37
38checks-py3:
39    <<: *runtests
40    variables:
41        RUNTEST_ARGS: "--time --test-list /tmp/check-tests.txt"
42        PYTHON: python3
43
44rust-cargo-test-py2: &rust_cargo_test
45    <<: *all
46    stage: tests
47    script:
48        - echo "python used, $PYTHON"
49        - make rust-tests
50
51rust-cargo-test-py3:
52    stage: tests
53    <<: *rust_cargo_test
54    variables:
55        PYTHON: python3
56
57phabricator-refresh:
58    stage: phabricator
59    variables:
60      DEFAULT_COMMENT: ":white_check_mark: refresh by Heptapod after a successful CI run (:octopus: :green_heart:)"
61      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}"
62    script:
63      - |
64        if [ `hg branch` == "stable" ]; then
65            ./contrib/phab-refresh-stack.sh --comment "$STABLE_COMMENT";
66        else
67            ./contrib/phab-refresh-stack.sh --comment "$DEFAULT_COMMENT";
68        fi
69
70test-py2:
71    <<: *runtests
72    variables:
73        RUNTEST_ARGS: " --no-rust --blacklist /tmp/check-tests.txt"
74        TEST_HGMODULEPOLICY: "c"
75        TEST_HGTESTS_ALLOW_NETIO: "1"
76
77test-py3:
78    <<: *runtests
79    variables:
80        RUNTEST_ARGS: " --no-rust --blacklist /tmp/check-tests.txt"
81        PYTHON: python3
82        TEST_HGMODULEPOLICY: "c"
83        TEST_HGTESTS_ALLOW_NETIO: "1"
84
85test-py2-pure:
86    <<: *runtests
87    variables:
88        RUNTEST_ARGS: "--pure --blacklist /tmp/check-tests.txt"
89        TEST_HGMODULEPOLICY: "py"
90
91test-py3-pure:
92    <<: *runtests
93    variables:
94        RUNTEST_ARGS: "--pure --blacklist /tmp/check-tests.txt"
95        PYTHON: python3
96        TEST_HGMODULEPOLICY: "py"
97
98test-py2-rust:
99    <<: *runtests
100    variables:
101        HGWITHRUSTEXT: cpython
102        RUNTEST_ARGS: "--rust --blacklist /tmp/check-tests.txt"
103        TEST_HGMODULEPOLICY: "rust+c"
104
105test-py3-rust:
106    <<: *runtests
107    variables:
108        HGWITHRUSTEXT: cpython
109        RUNTEST_ARGS: "--rust --blacklist /tmp/check-tests.txt"
110        PYTHON: python3
111        TEST_HGMODULEPOLICY: "rust+c"
112
113test-py3-rhg:
114    <<: *runtests
115    variables:
116        HGWITHRUSTEXT: cpython
117        RUNTEST_ARGS: "--rust --rhg --blacklist /tmp/check-tests.txt"
118        PYTHON: python3
119        TEST_HGMODULEPOLICY: "rust+c"
120
121test-py2-chg:
122    <<: *runtests
123    variables:
124        RUNTEST_ARGS: "--blacklist /tmp/check-tests.txt --chg"
125        TEST_HGMODULEPOLICY: "c"
126
127test-py3-chg:
128    <<: *runtests
129    variables:
130        PYTHON: python3
131        RUNTEST_ARGS: "--blacklist /tmp/check-tests.txt --chg"
132        TEST_HGMODULEPOLICY: "c"
133
134check-pytype-py3:
135    extends: .runtests_template
136    before_script:
137      - hg clone . /tmp/mercurial-ci/ --noupdate --config phases.publish=no
138      - hg -R /tmp/mercurial-ci/ update `hg log --rev '.' --template '{node}'`
139      - cd /tmp/mercurial-ci/
140      - make local PYTHON=$PYTHON
141      - $PYTHON -m pip install --user -U pytype==2021.04.15
142    variables:
143        RUNTEST_ARGS: " --allow-slow-tests tests/test-check-pytype.t"
144        HGTEST_SLOWTIMEOUT: "3600"
145        PYTHON: python3
146        TEST_HGMODULEPOLICY: "c"
147
148# `sh.exe --login` sets a couple of extra environment variables that are defined
149# in the MinGW shell, but switches CWD to /home/$username.  The previous value
150# is stored in OLDPWD.  Of the added variables, MSYSTEM is crucial to running
151# run-tests.py- it is needed to make run-tests.py generate a `python3` script
152# that satisfies the various shebang lines and delegates to `py -3`.
153.window_runtests_template: &windows_runtests
154    <<: *all
155    stage: tests
156    before_script:
157      - C:/MinGW/msys/1.0/bin/sh.exe --login -c 'cd "$OLDPWD" && ls -1 tests/test-check-*.* > C:/Temp/check-tests.txt'
158      # TODO: find/install cvs, bzr, perforce, gpg, sqlite3
159
160    script:
161        - echo "Entering script section"
162        - echo "python used, $Env:PYTHON"
163        - Invoke-Expression "$Env:PYTHON -V"
164        - Invoke-Expression "$Env:PYTHON -m black --version"
165        - echo "$Env:RUNTEST_ARGS"
166        - echo "$Env:TMP"
167        - echo "$Env:TEMP"
168
169        - C:/MinGW/msys/1.0/bin/sh.exe --login -c 'cd "$OLDPWD" && HGTESTS_ALLOW_NETIO="$TEST_HGTESTS_ALLOW_NETIO" HGMODULEPOLICY="$TEST_HGMODULEPOLICY" $PYTHON tests/run-tests.py --color=always $RUNTEST_ARGS'
170
171windows-py3:
172    <<: *windows_runtests
173    tags:
174      - windows
175    variables:
176        TEST_HGMODULEPOLICY: "c"
177        RUNTEST_ARGS: "--blacklist C:/Temp/check-tests.txt"
178        PYTHON: py -3
179
180windows-py3-pyox:
181    <<: *windows_runtests
182    tags:
183      - windows
184    variables:
185        TEST_HGMODULEPOLICY: "c"
186        RUNTEST_ARGS: "--blacklist C:/Temp/check-tests.txt --pyoxidized"
187        PYTHON: py -3
188