Compare commits

...

3 Commits

Author SHA1 Message Date
ridiculousfish 6735e6e035 Add cirrus.yml
This adds a CI job script for cirrus-ci.com.
2022-11-12 13:48:25 -08:00
ridiculousfish 7a3771bdbe Increase debounce timeout in debounce test
On slow machines this was spuriously failing.
2022-11-12 13:26:40 -08:00
ridiculousfish d65192e3c5 Reduce FISH_MAX_EVAL_DEPTH under tsan
The stack overflow tests are too slow without this.
This is because the tests are essentially quadratic: with 500 jobs, and
each job attempts to reap all jobs.
2022-11-12 10:15:23 -08:00
3 changed files with 106 additions and 2 deletions

99
.cirrus.yml Normal file
View File

@ -0,0 +1,99 @@
env:
CIRRUS_CLONE_DEPTH: 1
CI: 1
linux_task:
matrix:
- name: alpine
container: &step
image: ghcr.io/fish-shell/fish-ci/alpine:latest
memory: 4GB
- name: bionic
container:
<<: *step
image: ghcr.io/fish-shell/fish-ci/bionic:latest
- name: bionic-asan-clang
container:
<<: *step
image: ghcr.io/fish-shell/fish-ci/bionic-asan-clang:latest
- name: bionic-tsan
container:
<<: *step
image: ghcr.io/fish-shell/fish-ci/bionic-tsan:latest
- name: bionic-tsan-clang
container:
<<: *step
image: ghcr.io/fish-shell/fish-ci/bionic-tsan-clang:latest
- name: centos7
container:
<<: *step
image: ghcr.io/fish-shell/fish-ci/centos7:latest
- name: centos8
container:
<<: *step
image: ghcr.io/fish-shell/fish-ci/centos8:latest
- name: focal-32bit
container:
<<: *step
image: ghcr.io/fish-shell/fish-ci/focal-32bit:latest
- name: xenial
container:
<<: *step
image: ghcr.io/fish-shell/fish-ci/xenial:latest
tests_script:
# cirrus at times gives us 32 procs and 2 GB of RAM
# Unrestriced parallelism results in OOM
- lscpu || true
- (cat /proc/meminfo | grep MemTotal) || true
- mkdir build && cd build
- cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCTEST_PARALLEL_LEVEL=6 ..
- ninja -j 6 fish fish_tests
- ninja fish_run_tests
linux_arm_task:
matrix:
- name: focal-arm64
arm_container:
image: ghcr.io/fish-shell/fish-ci/focal-arm64
- name: jammy-armv7-32bit
arm_container:
image: ghcr.io/fish-shell/fish-ci/jammy-armv7-32bit
tests_script:
# cirrus at times gives us 32 procs and 2 GB of RAM
# Unrestriced parallelism results in OOM
- lscpu || true
- (cat /proc/meminfo | grep MemTotal) || true
- mkdir build && cd build
- cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCTEST_PARALLEL_LEVEL=6 ..
- ninja -j 6 fish fish_tests
- file ./fish
- ninja fish_run_tests
freebsd_task:
matrix:
- name: FreeBSD 14
freebsd_instance:
image_family: freebsd-14-0-snap
- name: FreeBSD 13
freebsd_instance:
image: freebsd-13-0-release-amd64
- name: FreeBSD 12.3
freebsd_instance:
image: freebsd-12-3-release-amd64
tests_script:
- pkg install -y cmake devel/pcre2 devel/ninja misc/py-pexpect git
# BSDs have the following behavior: root may open or access files even if
# the mode bits would otherwise disallow it. For example root may open()
# a file with write privileges even if the file has mode 400. This breaks
# our tests for e.g. cd and path. So create a new unprivileged user to run tests.
- pw user add -n fish-user -s /bin/csh -d /home/fish-user
- mkdir -p /home/fish-user
- chown -R fish-user /home/fish-user
- mkdir build && cd build
- chown -R fish-user ..
- sudo -u fish-user -s whoami
- sudo -u fish-user -s cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCTEST_PARALLEL_LEVEL=1 ..
- sudo -u fish-user -s ninja -j 6 fish fish_tests
- sudo -u fish-user -s ninja fish_run_tests

View File

@ -1026,7 +1026,7 @@ static void test_debounce_timeout() {
// Verify that debounce doesn't wait forever.
// Use a shared_ptr so we don't have to join our threads.
const long timeout_ms = 50;
const long timeout_ms = 500;
struct data_t {
debounce_t db{timeout_ms};
bool exit_ok = false;

View File

@ -217,14 +217,19 @@ enum class pipeline_position_t : uint8_t {
#define FISH_MAX_STACK_DEPTH 128
/// Maximum number of nested string substitutions (in lieu of evals)
/// Reduced under TSAN: our CI test creates 500 jobs and this is very slow with TSAN.
#if FISH_TSAN_WORKAROUNDS
#define FISH_MAX_EVAL_DEPTH 250
#else
#define FISH_MAX_EVAL_DEPTH 500
#endif
/// Error message on a function that calls itself immediately.
#define INFINITE_FUNC_RECURSION_ERR_MSG \
_(L"The function '%ls' calls itself immediately, which would result in an infinite loop.")
/// Error message on reaching maximum call stack depth.
#define CALL_STACK_LIMIT_EXCEEDED_ERR_MSG \
#define CALL_STACK_LIMIT_EXCEEDED_ERR_MSG \
_(L"The call stack limit has been exceeded. Do you have an accidental infinite loop?")
/// Error message when encountering an unknown builtin name.