xref: /llvm-project/llvm/utils/lit/tests/shtest-timeout.py (revision 4415678718ad471c84f024e20ce864ae1e79348a)
1b9179ff8SDavid Tenty# REQUIRES: lit-max-individual-test-time
28ade9e75SDan Liew
34f780ea1SStella Stamenova# llvm.org/PR33944
483c28abdSStella Stamenova# UNSUPPORTED: system-windows
54f03fb1cSStella Stamenova
6*295d4e42SDan Liew###############################################################################
7*295d4e42SDan Liew# Check tests can hit timeout when set
8*295d4e42SDan Liew###############################################################################
96dfcc783SDan Liew
1075742410SDan Liew# Test per test timeout using external shell
1175742410SDan Liew# RUN: not %{lit} \
1275742410SDan Liew# RUN: %{inputs}/shtest-timeout/infinite_loop.py \
13*295d4e42SDan Liew# RUN: -j 1 -v --debug --timeout 1 --param external=1 > %t.extsh.out 2> %t.extsh.err
1475742410SDan Liew# RUN: FileCheck --check-prefix=CHECK-OUT-COMMON < %t.extsh.out %s
1575742410SDan Liew# RUN: FileCheck --check-prefix=CHECK-EXTSH-ERR < %t.extsh.err %s
1675742410SDan Liew#
1775742410SDan Liew# CHECK-EXTSH-ERR: Using external shell
1875742410SDan Liew
1975742410SDan Liew# Test per test timeout using internal shell
2075742410SDan Liew# RUN: not %{lit} \
2175742410SDan Liew# RUN: %{inputs}/shtest-timeout/infinite_loop.py \
22*295d4e42SDan Liew# RUN: -j 1 -v --debug --timeout 1 --param external=0 > %t.intsh.out 2> %t.intsh.err
2375742410SDan Liew# RUN: FileCheck  --check-prefix=CHECK-OUT-COMMON < %t.intsh.out %s
2475742410SDan Liew# RUN: FileCheck --check-prefix=CHECK-INTSH-OUT < %t.intsh.out %s
2575742410SDan Liew# RUN: FileCheck --check-prefix=CHECK-INTSH-ERR < %t.intsh.err %s
2675742410SDan Liew
271d62f4abSMichal Gorny# CHECK-INTSH-OUT: TIMEOUT: per_test_timeout :: infinite_loop.py
281d62f4abSMichal Gorny# CHECK-INTSH-OUT: command reached timeout: True
2975742410SDan Liew
3075742410SDan Liew# CHECK-INTSH-ERR: Using internal shell
3175742410SDan Liew
3275742410SDan Liew# Test per test timeout set via a config file rather than on the command line
3375742410SDan Liew# RUN: not %{lit} \
3475742410SDan Liew# RUN: %{inputs}/shtest-timeout/infinite_loop.py \
3575742410SDan Liew# RUN: -j 1 -v --debug --param external=0 \
36*295d4e42SDan Liew# RUN: --param set_timeout=1 > %t.cfgset.out 2> %t.cfgset.err
3775742410SDan Liew# RUN: FileCheck --check-prefix=CHECK-OUT-COMMON  < %t.cfgset.out %s
3875742410SDan Liew# RUN: FileCheck --check-prefix=CHECK-CFGSET-ERR < %t.cfgset.err %s
3975742410SDan Liew#
4075742410SDan Liew# CHECK-CFGSET-ERR: Using internal shell
4175742410SDan Liew
4275742410SDan Liew# CHECK-OUT-COMMON: TIMEOUT: per_test_timeout :: infinite_loop.py
43*295d4e42SDan Liew# CHECK-OUT-COMMON: Timeout: Reached timeout of 1 seconds
4499d6e05eSJulian Lettner# CHECK-OUT-COMMON: Timed Out: 1
4575742410SDan Liew
46*295d4e42SDan Liew
47*295d4e42SDan Liew###############################################################################
48*295d4e42SDan Liew# Check tests can complete in with a timeout set
49*295d4e42SDan Liew#
50*295d4e42SDan Liew# `short.py` should execute quickly so we shouldn't wait anywhere near the
51*295d4e42SDan Liew# 3600 second timeout.
52*295d4e42SDan Liew###############################################################################
53*295d4e42SDan Liew
54*295d4e42SDan Liew# Test per test timeout using external shell
55*295d4e42SDan Liew# RUN: %{lit} \
56*295d4e42SDan Liew# RUN: %{inputs}/shtest-timeout/short.py \
57*295d4e42SDan Liew# RUN: -j 1 -v --debug --timeout 3600 --param external=1 > %t.pass.extsh.out 2> %t.pass.extsh.err
58*295d4e42SDan Liew# RUN: FileCheck --check-prefix=CHECK-OUT-COMMON-SHORT < %t.pass.extsh.out %s
59*295d4e42SDan Liew# RUN: FileCheck --check-prefix=CHECK-EXTSH-ERR < %t.pass.extsh.err %s
60*295d4e42SDan Liew
61*295d4e42SDan Liew# Test per test timeout using internal shell
62*295d4e42SDan Liew# RUN: %{lit} \
63*295d4e42SDan Liew# RUN: %{inputs}/shtest-timeout/short.py \
64*295d4e42SDan Liew# RUN: -j 1 -v --debug --timeout 3600 --param external=0 > %t.pass.intsh.out 2> %t.pass.intsh.err
65*295d4e42SDan Liew# RUN: FileCheck  --check-prefix=CHECK-OUT-COMMON-SHORT < %t.pass.intsh.out %s
66*295d4e42SDan Liew# RUN: FileCheck --check-prefix=CHECK-INTSH-ERR < %t.pass.intsh.err %s
67*295d4e42SDan Liew
68*295d4e42SDan Liew# CHECK-OUT-COMMON-SHORT: PASS: per_test_timeout :: short.py
69*295d4e42SDan Liew# CHECK-OUT-COMMON-SHORT: Passed: 1
70*295d4e42SDan Liew
7175742410SDan Liew# Test per test timeout via a config file and on the command line.
7275742410SDan Liew# The value set on the command line should override the config file.
73*295d4e42SDan Liew# RUN: %{lit} \
7475742410SDan Liew# RUN:   %{inputs}/shtest-timeout/short.py \
7575742410SDan Liew# RUN:   -j 1 -v --debug --param external=0 \
76*295d4e42SDan Liew# RUN: --param set_timeout=1 --timeout=3600 > %t.pass.cmdover.out 2> %t.pass.cmdover.err
77*295d4e42SDan Liew# RUN: FileCheck --check-prefix=CHECK-OUT-COMMON-SHORT  < %t.pass.cmdover.out %s
78*295d4e42SDan Liew# RUN: FileCheck --check-prefix=CHECK-CMDLINE-OVERRIDE-ERR < %t.pass.cmdover.err %s
7975742410SDan Liew
80*295d4e42SDan Liew# CHECK-CMDLINE-OVERRIDE-ERR: Forcing timeout to be 3600 seconds
81