summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2020-08-03 14:33:06 +0000
committerpatrick <patrick@openbsd.org>2020-08-03 14:33:06 +0000
commit061da546b983eb767bad15e67af1174fb0bcf31c (patch)
tree83c78b820819d70aa40c36d90447978b300078c5 /gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification
parentImport LLVM 10.0.0 release including clang, lld and lldb. (diff)
downloadwireguard-openbsd-061da546b983eb767bad15e67af1174fb0bcf31c.tar.xz
wireguard-openbsd-061da546b983eb767bad15e67af1174fb0bcf31c.zip
Import LLVM 10.0.0 release including clang, lld and lldb.
ok hackroom tested by plenty
Diffstat (limited to 'gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification')
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/README.txt5
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestExpectedTimeout.py.park20
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestFail.py.park15
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestInvalidDecorator.py.park12
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestRerunFail.py.park22
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestRerunFileLevelTimeout.py.park33
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestRerunInline.py.park13
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestRerunTimeout.py.park24
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestSignal.py.park25
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestSignalOutsideTestMethod.py.park23
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestTimeout.py.park19
-rwxr-xr-xgnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/disable.py20
-rwxr-xr-xgnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/enable.py20
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/inline_rerun_inferior.cpp13
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/rerun_base.py27
15 files changed, 291 insertions, 0 deletions
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/README.txt b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/README.txt
new file mode 100644
index 00000000000..0f1ae7f0ecf
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/README.txt
@@ -0,0 +1,5 @@
+Tests in this directory are intentionally setup to
+fail, error, timeout, etc. to verify that the buildbots
+pick up errors. The tests in this directory will be
+parked/removed/renamed after verifying they trigger
+as expected.
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestExpectedTimeout.py.park b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestExpectedTimeout.py.park
new file mode 100644
index 00000000000..67db8149f85
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestExpectedTimeout.py.park
@@ -0,0 +1,20 @@
+"""Tests that a timeout is detected by the testbot."""
+from __future__ import print_function
+
+import time
+
+import lldbsuite.test.lldbtest as lldbtest
+
+
+class ExpectedTimeoutTestCase(lldbtest.TestBase):
+ """Forces test timeout."""
+ mydir = lldbtest.TestBase.compute_mydir(__file__)
+
+ @lldbtest.expectedFailureAll()
+ def test_buildbot_sees_expected_timeout(self):
+ """Tests that expected timeout logic kicks in and is picked up."""
+ while True:
+ try:
+ time.sleep(1)
+ except:
+ print("ignoring exception during sleep")
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestFail.py.park b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestFail.py.park
new file mode 100644
index 00000000000..fcdba39d7fe
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestFail.py.park
@@ -0,0 +1,15 @@
+"""Tests that a FAIL is detected by the testbot."""
+
+
+import lldbsuite.test.lldbtest as lldbtest
+
+
+class FailTestCase(lldbtest.TestBase):
+ """Forces test failure."""
+ mydir = lldbtest.TestBase.compute_mydir(__file__)
+
+ def test_buildbot_catches_failure(self):
+ """Issues a failing test assertion."""
+ self.assertTrue(
+ False,
+ "This will always fail, buildbot should flag this.")
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestInvalidDecorator.py.park b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestInvalidDecorator.py.park
new file mode 100644
index 00000000000..d5c8c58506f
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestInvalidDecorator.py.park
@@ -0,0 +1,12 @@
+from lldbsuite.test import lldbtest
+from lldbsuite.test import decorators
+
+
+class NonExistentDecoratorTestCase(lldbtest.TestBase):
+
+ mydir = lldbtest.TestBase.compute_mydir(__file__)
+
+ @decorators.nonExistentDecorator(bugnumber="yt/1300")
+ def test(self):
+ """Verify non-existent decorators are picked up by test runner."""
+ pass
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestRerunFail.py.park b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestRerunFail.py.park
new file mode 100644
index 00000000000..8d1fc95502a
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestRerunFail.py.park
@@ -0,0 +1,22 @@
+"""Tests that a flakey fail is rerun, and will pass on the rerun.
+Run this test with --rerun-all-issues specified to test that
+the tests fail on the first run, then pass on the second.
+Do not mark them as flakey as, at this time, flakey tests will
+run twice, thus causing the second run to succeed."""
+
+
+import rerun_base
+
+import lldbsuite.test.lldbtest as lldbtest
+
+
+class RerunFailTestCase(rerun_base.RerunBaseTestCase):
+ """Forces test failure on first run, success on rerun."""
+ @lldbtest.no_debug_info_test
+ def test_buildbot_catches_failure(self):
+ """Issues a failing test assertion."""
+ if self.should_generate_issue():
+ self.assertTrue(
+ False,
+ "This will fail on the first call, succeed on rerun, and "
+ "alternate thereafter.")
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestRerunFileLevelTimeout.py.park b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestRerunFileLevelTimeout.py.park
new file mode 100644
index 00000000000..9422624207c
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestRerunFileLevelTimeout.py.park
@@ -0,0 +1,33 @@
+"""Tests that a timeout is detected by the testbot."""
+from __future__ import print_function
+
+import atexit
+import time
+
+from lldbsuite.test import decorators
+import rerun_base
+
+
+class RerunTimeoutTestCase(rerun_base.RerunBaseTestCase):
+ def maybe_do_timeout(self):
+ # Do the timeout here if we're going to time out.
+ if self.should_generate_issue():
+ # We time out this time.
+ while True:
+ try:
+ time.sleep(1)
+ except:
+ print("ignoring exception during sleep")
+
+ # call parent
+ super(RerunTimeoutTestCase, self).tearDown()
+
+ @decorators.no_debug_info_test
+ def test_timeout_file_level_timeout_rerun_succeeds(self):
+ """Tests that file-level timeout is cleared on rerun."""
+
+ # This test just needs to pass. It is the exit hook (outside
+ # the test method) that will time out.
+
+ # Add the exit handler that will time out the first time around.
+ atexit.register(RerunTimeoutTestCase.maybe_do_timeout, self)
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestRerunInline.py.park b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestRerunInline.py.park
new file mode 100644
index 00000000000..4c50495a2ec
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestRerunInline.py.park
@@ -0,0 +1,13 @@
+"""Tests that the rerun mechanism respects lldbinline-created tests.
+
+The current implementation of this test is expected to fail both on
+the initial run and on the rerun, assuming --rerun-all-issues is provided
+to the dotest.py run.
+
+This test could be improved by doing something in the test inferior
+C++ program that could look for the "should an issue be raised" marker
+file, and then really pass on the rerun.
+"""
+import lldbsuite.test.lldbinline as lldbinline
+
+lldbinline.MakeInlineTest(__file__, globals())
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestRerunTimeout.py.park b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestRerunTimeout.py.park
new file mode 100644
index 00000000000..a8f5542ae2f
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestRerunTimeout.py.park
@@ -0,0 +1,24 @@
+"""Tests that a timeout is detected by the testbot."""
+from __future__ import print_function
+
+import time
+
+import lldbsuite.test.decorators as decorators
+import rerun_base
+
+
+class RerunTimeoutTestCase(rerun_base.RerunBaseTestCase):
+ @decorators.no_debug_info_test
+ def test_timeout_rerun_succeeds(self):
+ """Tests that the timeout logic kicks in and that this timeout is picked up."""
+ if not self.should_generate_issue():
+ # We pass this time.
+ return
+
+ # We time out this time.
+ while True:
+ # noinspection PyBroadException
+ try:
+ time.sleep(1)
+ except:
+ print("ignoring exception during sleep")
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestSignal.py.park b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestSignal.py.park
new file mode 100644
index 00000000000..5a34c096201
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestSignal.py.park
@@ -0,0 +1,25 @@
+"""Tests that an exceptional exit is detected by the testbot."""
+
+
+import os
+import signal
+import time
+
+import lldbsuite.test.lldbtest as lldbtest
+
+
+class ExceptionalExitTestCase(lldbtest.TestBase):
+ """Forces exceptional exit."""
+ mydir = lldbtest.TestBase.compute_mydir(__file__)
+
+ @lldbtest.skipIfWindows
+ def test_buildbot_catches_exceptional_exit(self):
+ """Force process to die with exceptional exit."""
+
+ # Sleep for a couple seconds
+ try:
+ time.sleep(5)
+ except:
+ pass
+
+ os.kill(os.getpid(), signal.SIGKILL)
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestSignalOutsideTestMethod.py.park b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestSignalOutsideTestMethod.py.park
new file mode 100644
index 00000000000..425c5fe9077
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestSignalOutsideTestMethod.py.park
@@ -0,0 +1,23 @@
+"""Tests that an exceptional exit is detected by the testbot."""
+
+
+import atexit
+import os
+import signal
+import time
+
+import lldbsuite.test.lldbtest as lldbtest
+
+
+class ExceptionalExitOutOfTestMethodTestCase(lldbtest.TestBase):
+ """Forces exceptional exit."""
+ mydir = lldbtest.TestBase.compute_mydir(__file__)
+
+ @lldbtest.skipIfWindows
+ def test_buildbot_catches_exceptional_exit(self):
+ pass
+
+def cleanup():
+ os.kill(os.getpid(), signal.SIGKILL)
+
+atexit.register(cleanup)
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestTimeout.py.park b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestTimeout.py.park
new file mode 100644
index 00000000000..ba7be454f9a
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/TestTimeout.py.park
@@ -0,0 +1,19 @@
+"""Tests that a timeout is detected by the testbot."""
+from __future__ import print_function
+
+import time
+
+import lldbsuite.test.lldbtest as lldbtest
+
+
+class TimeoutTestCase(lldbtest.TestBase):
+ """Forces test timeout."""
+ mydir = lldbtest.TestBase.compute_mydir(__file__)
+
+ def test_buildbot_catches_timeout(self):
+ """Tests that timeout logic kicks in and is picked up."""
+ while True:
+ try:
+ time.sleep(1)
+ except:
+ print("ignoring exception during sleep")
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/disable.py b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/disable.py
new file mode 100755
index 00000000000..6d1f93e8b15
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/disable.py
@@ -0,0 +1,20 @@
+#!/usr/bin/env python
+"""Renames *.py files to *.py.park."""
+import os
+import sys
+
+
+def main():
+ """Drives the main script behavior."""
+ script_dir = os.path.dirname(os.path.realpath(__file__))
+ for filename in os.listdir(script_dir):
+ basename, extension = os.path.splitext(filename)
+ if basename.startswith("Test") and extension == '.py':
+ source_path = os.path.join(script_dir, filename)
+ dest_path = source_path + ".park"
+ sys.stdout.write("renaming {} to {}\n".format(
+ source_path, dest_path))
+ os.rename(source_path, dest_path)
+
+if __name__ == "__main__":
+ main()
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/enable.py b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/enable.py
new file mode 100755
index 00000000000..eb19276de1f
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/enable.py
@@ -0,0 +1,20 @@
+#!/usr/bin/env python
+"""Renames *.py.park files to *.py."""
+import os
+import sys
+
+
+def main():
+ """Drives the main script behavior."""
+ script_dir = os.path.dirname(os.path.realpath(__file__))
+ for filename in os.listdir(script_dir):
+ basename, extension = os.path.splitext(filename)
+ if basename.startswith("Test") and extension == '.park':
+ source_path = os.path.join(script_dir, filename)
+ dest_path = os.path.join(script_dir, basename)
+ sys.stdout.write("renaming {} to {}\n".format(
+ source_path, dest_path))
+ os.rename(source_path, dest_path)
+
+if __name__ == "__main__":
+ main()
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/inline_rerun_inferior.cpp b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/inline_rerun_inferior.cpp
new file mode 100644
index 00000000000..6d1e0236056
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/inline_rerun_inferior.cpp
@@ -0,0 +1,13 @@
+//===-- main.cpp --------------------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+typedef int Foo;
+
+int main() {
+ Foo array[3] = {1,2,3};
+ return 0; //% self.expect("frame variable array --show-types --", substrs = ['(Foo [3]) wrong_type_here = {','(Foo) [0] = 1','(Foo) [1] = 2','(Foo) [2] = 3'])
+}
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/rerun_base.py b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/rerun_base.py
new file mode 100644
index 00000000000..909b93b134c
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/issue_verification/rerun_base.py
@@ -0,0 +1,27 @@
+
+import os
+
+import lldbsuite.test.lldbtest as lldbtest
+
+
+# pylint: disable=too-few-public-methods
+class RerunBaseTestCase(lldbtest.TestBase):
+ """Forces test failure."""
+ mydir = lldbtest.TestBase.compute_mydir(__file__)
+
+ def should_generate_issue(self):
+ """Returns whether a test issue should be generated.
+
+ @returns True on the first and every other call via a given
+ test method.
+ """
+ should_pass_filename = "{}.{}.succeed-marker".format(
+ __file__, self.id())
+ fail = not os.path.exists(should_pass_filename)
+ if fail:
+ # Create the marker so that next call to this passes.
+ open(should_pass_filename, 'w').close()
+ else:
+ # Delete the marker so next time we fail.
+ os.remove(should_pass_filename)
+ return fail