Mercurial > hg
view contrib/heptapod-ci.yml @ 51998:629ecced55a6
tests: fix hooks in `test-transaction-rollback-on-revlog-split.t` for Windows
A few problems with external hooks here:
1) `cmd.exe` is blissfully unaware of the meaning of single quotes, and passes
them along as part of the revision arg
2) `cmd.exe` doesn't know how to run the python script `f` with the shebang
line, so it needs to be invoked with the intepreter explicitly. Then for
some reason it was trying to open `$TESTTMP\troffset-computation-hooks\f`,
so make it an absolute path.
3) Likewise, the shell script `wait-on-file` cannot be invoked directly by
`cmd.exe`.
4) Windows python doesn't understand whatever `$TESTTMP` unrolls to (probably
it has the double backslashes), and silently failed to write the lock file.
I'm assuming that `pretxnclose.03-abort` is also bad (there's no `false` in
`cmd.exe`), but it's not currently causing problems.
Also note that the paths in this are very long, and typically exceed the
`MAX_PATH` limit in Windows. It can be run with `run-tests.py --tmpdir /c/t`.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sat, 12 Oct 2024 16:55:30 -0400 |
parents | baf9e3a8fd14 |
children | 22a50b7934d2 |
line wrap: on
line source
# Don't run pipelines on branch "merge", since we're fast-forward only. # Gitlab sees a new branch (since e.g. `topic/stable/my-topic` becomes # `branch/stable`), but the hash hasn't changed. There is no reason to # re-run the CI in our case, since we haven't built up any specific automation. # Right now it's just wasted CI and developer time. # One can still run the pipeline manually via the web interface, # like in the case of releases, to make *extra* sure that the actual branch # has succeeded. workflow: rules: - if: $CI_COMMIT_BRANCH =~ /^branch\/.*/ && $CI_PIPELINE_SOURCE != "web" when: never - if: $CI_PIPELINE_SOURCE == "merge_request_event" when: never - if: $CI_PIPELINE_SOURCE == "push" when: always - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS when: never - if: $CI_COMMIT_BRANCH when: always stages: - tests image: registry.heptapod.net/mercurial/ci-images/mercurial-core:$HG_CI_IMAGE_TAG variables: PYTHON: python HG_CI_IMAGE_TAG: "v2.1" TEST_HGTESTS_ALLOW_NETIO: "0" .all_template: &all when: on_success .runtests_template: &runtests <<: *all stage: tests # The runner made a clone as root. # We make a new clone owned by user used to run the step. before_script: - echo "python used, $PYTHON" - $PYTHON --version - black --version - clang-format --version - 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 script: - echo "$RUNTEST_ARGS" - HGTESTS_ALLOW_NETIO="$TEST_HGTESTS_ALLOW_NETIO" "$PYTHON" tests/run-tests.py --color=always $RUNTEST_ARGS checks: <<: *runtests variables: RUNTEST_ARGS: "--time --test-list /tmp/check-tests.txt" CI_CLEVER_CLOUD_FLAVOR: S rust-cargo-test: <<: *all stage: tests script: - make rust-tests - make cargo-clippy variables: CI_CLEVER_CLOUD_FLAVOR: S test-c: &test_c <<: *runtests variables: RUNTEST_ARGS: " --no-rust --blacklist /tmp/check-tests.txt" TEST_HGTESTS_ALLOW_NETIO: "1" test-pure: <<: *runtests variables: RUNTEST_ARGS: "--pure --blacklist /tmp/check-tests.txt" test-rust: &test_rust <<: *runtests variables: HGWITHRUSTEXT: cpython RUNTEST_ARGS: "--rust --blacklist /tmp/check-tests.txt" test-rhg: <<: *runtests variables: HGWITHRUSTEXT: cpython RUNTEST_ARGS: "--rust --rhg --blacklist /tmp/check-tests.txt" test-chg: <<: *runtests variables: RUNTEST_ARGS: "--blacklist /tmp/check-tests.txt --chg" # note: we should probably get a full matrix for flavor × py-version, but this # is a simple start to be able to check if we break the lowest supported # version (and 3.12 have been giving us various troubles) test-3.8-c: <<: *test_c when: manual # avoid overloading the CI by default variables: PYTHON: python3.8 test-3.12-c: <<: *test_c when: manual # avoid overloading the CI by default variables: PYTHON: python3.12 test-3.12-rust: <<: *test_rust when: manual # avoid overloading the CI by default variables: PYTHON: python3.12 test-3.13-c: <<: *test_c when: manual # avoid overloading the CI by default variables: PYTHON: python3.13 test-3.13-rust: <<: *test_rust when: manual # avoid overloading the CI by default variables: PYTHON: python3.13 check-pytype: extends: .runtests_template before_script: - export PATH="/home/ci-runner/vendor/pyenv/pyenv-2.4.7-adf3c2bccf09cdb81febcfd15b186711a33ac7a8/shims:/home/ci-runner/vendor/pyenv/pyenv-2.4.7-adf3c2bccf09cdb81febcfd15b186711a33ac7a8/bin:$PATH" - echo "PATH, $PATH" - 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 - ./contrib/setup-pytype.sh script: - echo "Entering script section" - sh contrib/check-pytype.sh # `sh.exe --login` sets a couple of extra environment variables that are defined # in the MinGW shell, but switches CWD to /home/$username. The previous value # is stored in OLDPWD. Of the added variables, MSYSTEM is crucial to running # run-tests.py- it is needed to make run-tests.py generate a `python3` script # that satisfies the various shebang lines and delegates to `py -3`. .window_runtests_template: &windows_runtests <<: *all when: manual # we don't have any Windows runners anymore at the moment stage: tests before_script: - C:/MinGW/msys/1.0/bin/sh.exe --login -c 'cd "$OLDPWD" && ls -1 tests/test-check-*.* > C:/Temp/check-tests.txt' # TODO: find/install cvs, bzr, perforce, gpg, sqlite3 script: - echo "Entering script section" - echo "python used, $Env:PYTHON" - Invoke-Expression "$Env:PYTHON -V" - Invoke-Expression "$Env:PYTHON -m black --version" - echo "$Env:RUNTEST_ARGS" - echo "$Env:TMP" - echo "$Env:TEMP" - C:/MinGW/msys/1.0/bin/sh.exe --login -c 'cd "$OLDPWD" && HGTESTS_ALLOW_NETIO="$TEST_HGTESTS_ALLOW_NETIO" $PYTHON tests/run-tests.py --color=always $RUNTEST_ARGS' windows: <<: *windows_runtests tags: - windows variables: RUNTEST_ARGS: "--blacklist C:/Temp/check-tests.txt" PYTHON: py -3 windows-pyox: <<: *windows_runtests tags: - windows variables: RUNTEST_ARGS: "--blacklist C:/Temp/check-tests.txt --pyoxidized" PYTHON: py -3