mirror of
https://github.com/git/git.git
synced 2026-03-04 14:37:35 +01:00
Merge branch 'ps/ci-gitlab-msvc-updates' into next
CI update. * ps/ci-gitlab-msvc-updates: gitlab-ci: handle failed tests on MSVC+Meson job gitlab-ci: use "run-test-slice-meson.sh" ci: make test slicing consistent across Meson/Make github: fix Meson tests not executing at all meson: fix MERGE_TOOL_DIR with "--no-bin-wrappers" ci: don't skip smallest test slice in GitLab ci: handle failures of test-slice helper
This commit is contained in:
8
.github/workflows/main.yml
vendored
8
.github/workflows/main.yml
vendored
@@ -150,7 +150,7 @@ jobs:
|
||||
- uses: git-for-windows/setup-git-for-windows-sdk@v1
|
||||
- name: test
|
||||
shell: bash
|
||||
run: . /etc/profile && ci/run-test-slice.sh ${{matrix.nr}} 10
|
||||
run: . /etc/profile && ci/run-test-slice.sh $((${{matrix.nr}} + 1)) 10
|
||||
- name: print test failures
|
||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||
shell: bash
|
||||
@@ -237,7 +237,7 @@ jobs:
|
||||
shell: bash
|
||||
env:
|
||||
NO_SVN_TESTS: 1
|
||||
run: . /etc/profile && ci/run-test-slice.sh ${{matrix.nr}} 10
|
||||
run: . /etc/profile && ci/run-test-slice.sh $((${{matrix.nr}} + 1)) 10
|
||||
- name: print test failures
|
||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||
shell: bash
|
||||
@@ -297,8 +297,8 @@ jobs:
|
||||
name: windows-meson-artifacts
|
||||
path: build
|
||||
- name: Test
|
||||
shell: pwsh
|
||||
run: ci/run-test-slice-meson.sh build ${{matrix.nr}} 10
|
||||
shell: bash
|
||||
run: ci/run-test-slice-meson.sh build $((${{matrix.nr}} + 1)) 10
|
||||
- name: print test failures
|
||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||
shell: bash
|
||||
|
||||
@@ -157,6 +157,8 @@ test:mingw64:
|
||||
parallel: 10
|
||||
|
||||
.msvc-meson:
|
||||
variables:
|
||||
TEST_OUTPUT_DIRECTORY: "C:/Git-Test"
|
||||
tags:
|
||||
- saas-windows-medium-amd64
|
||||
before_script:
|
||||
@@ -164,12 +166,13 @@ test:mingw64:
|
||||
- choco install -y git meson ninja rust-ms
|
||||
- Import-Module $env:ChocolateyInstall\helpers\chocolateyProfile.psm1
|
||||
- refreshenv
|
||||
- New-Item -Path $env:TEST_OUTPUT_DIRECTORY -ItemType Directory
|
||||
|
||||
build:msvc-meson:
|
||||
extends: .msvc-meson
|
||||
stage: build
|
||||
script:
|
||||
- meson setup build --vsenv -Dperl=disabled -Dbackend_max_links=1 -Dcredential_helpers=wincred
|
||||
- meson setup build --vsenv -Dperl=disabled -Dbackend_max_links=1 -Dcredential_helpers=wincred -Dtest_output_directory="$TEST_OUTPUT_DIRECTORY"
|
||||
- meson compile -C build
|
||||
artifacts:
|
||||
paths:
|
||||
@@ -183,11 +186,21 @@ test:msvc-meson:
|
||||
- job: "build:msvc-meson"
|
||||
artifacts: true
|
||||
script:
|
||||
- meson test -C build --no-rebuild --print-errorlogs --slice $Env:CI_NODE_INDEX/$Env:CI_NODE_TOTAL
|
||||
- |
|
||||
& "C:/Program Files/Git/usr/bin/bash.exe" -l -c 'ci/run-test-slice-meson.sh build $CI_NODE_INDEX $CI_NODE_TOTAL'
|
||||
after_script:
|
||||
- |
|
||||
if ($env:CI_JOB_STATUS -ne "success") {
|
||||
& "C:/Program Files/Git/usr/bin/bash.exe" -l -c 'ci/print-test-failures.sh'
|
||||
Move-Item -Path "$env:TEST_OUTPUT_DIRECTORY/failed-test-artifacts" -Destination t/
|
||||
}
|
||||
parallel: 10
|
||||
artifacts:
|
||||
paths:
|
||||
- t/failed-test-artifacts
|
||||
reports:
|
||||
junit: build/meson-logs/testlog.junit.xml
|
||||
when: on_failure
|
||||
|
||||
test:fuzz-smoke-tests:
|
||||
image: ubuntu:latest
|
||||
|
||||
@@ -9,5 +9,5 @@
|
||||
|
||||
group "Run tests" \
|
||||
meson test -C "$1" --no-rebuild --print-errorlogs \
|
||||
--test-args="$GIT_TEST_OPTS" --slice "$((1+$2))/$3" ||
|
||||
--test-args="$GIT_TEST_OPTS" --slice "$(($2))/$3" ||
|
||||
handle_failed_tests
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
|
||||
. ${0%/*}/lib.sh
|
||||
|
||||
group "Run tests" make --quiet -C t T="$(cd t &&
|
||||
./helper/test-tool path-utils slice-tests "$1" "$2" t[0-9]*.sh |
|
||||
tr '\n' ' ')" ||
|
||||
TESTS=$(cd t && ./helper/test-tool path-utils slice-tests "$1" "$2" t[0-9]*.sh)
|
||||
|
||||
group "Run tests" make --quiet -C t T="$(echo "$TESTS" | tr '\n' ' ')" ||
|
||||
handle_failed_tests
|
||||
|
||||
# We only have one unit test at the moment, so run it in the first slice
|
||||
|
||||
@@ -477,14 +477,20 @@ int cmd__path_utils(int argc, const char **argv)
|
||||
|
||||
if (argc > 5 && !strcmp(argv[1], "slice-tests")) {
|
||||
int res = 0;
|
||||
long offset, stride, i;
|
||||
long slice, slices_total, i;
|
||||
struct string_list list = STRING_LIST_INIT_NODUP;
|
||||
struct stat st;
|
||||
|
||||
offset = strtol(argv[2], NULL, 10);
|
||||
stride = strtol(argv[3], NULL, 10);
|
||||
if (stride < 1)
|
||||
stride = 1;
|
||||
slices_total = strtol(argv[3], NULL, 10);
|
||||
if (slices_total < 1)
|
||||
die("there must be at least one slice, got '%s'",
|
||||
argv[3]);
|
||||
|
||||
slice = strtol(argv[2], NULL, 10);
|
||||
if (1 > slice || slice > slices_total)
|
||||
die("slice must be in the range 1 <= slice <= %ld, got '%s'",
|
||||
slices_total, argv[2]);
|
||||
|
||||
for (i = 4; i < argc; i++)
|
||||
if (stat(argv[i], &st))
|
||||
res = error_errno("Cannot stat '%s'", argv[i]);
|
||||
@@ -492,7 +498,7 @@ int cmd__path_utils(int argc, const char **argv)
|
||||
string_list_append(&list, argv[i])->util =
|
||||
(void *)(intptr_t)st.st_size;
|
||||
QSORT(list.items, list.nr, cmp_by_st_size);
|
||||
for (i = offset; i < list.nr; i+= stride)
|
||||
for (i = slice - 1; i < list.nr; i+= slices_total)
|
||||
printf("%s\n", list.items[i].string);
|
||||
|
||||
return !!res;
|
||||
|
||||
@@ -1213,6 +1213,7 @@ endif
|
||||
|
||||
test_environment = script_environment
|
||||
test_environment.set('GIT_BUILD_DIR', git_build_dir)
|
||||
test_environment.set('MERGE_TOOLS_DIR', meson.project_source_root() / 'mergetools')
|
||||
|
||||
foreach integration_test : integration_tests
|
||||
test(fs.stem(integration_test), shell,
|
||||
|
||||
Reference in New Issue
Block a user