aboutsummaryrefslogtreecommitdiff
path: root/lldb/unittests/ScriptInterpreter/Python/PythonDataObjectsTests.cpp
diff options
context:
space:
mode:
authorLawrence D'Anna <lawrence_danna@apple.com>2020-05-08 10:56:30 -0700
committerLawrence D'Anna <lawrence_danna@apple.com>2020-05-08 10:57:10 -0700
commit52712d3ff7a2f7bcf737996d6ab59ef2cc29c20d (patch)
treecf0b823eed5f3fc69e1a11f43b028d29b5b20992 /lldb/unittests/ScriptInterpreter/Python/PythonDataObjectsTests.cpp
parentae920a81ffa3c7e3c14de131d0d55abd31bbff7d (diff)
downloadllvm-52712d3ff7a2f7bcf737996d6ab59ef2cc29c20d.zip
llvm-52712d3ff7a2f7bcf737996d6ab59ef2cc29c20d.tar.gz
llvm-52712d3ff7a2f7bcf737996d6ab59ef2cc29c20d.tar.bz2
Re-land "get rid of PythonInteger::GetInteger()"
This was reverted due to a python2-specific bug. Re-landing with a fix for python2. Summary: One small step in my long running quest to improve python exception handling in LLDB. Replace GetInteger() which just returns an int with As<long long> and friends, which return Expected types that can track python exceptions Reviewers: labath, jasonmolenda, JDevlieghere, vadimcn, omjavaid Reviewed By: labath, omjavaid Subscribers: omjavaid, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D78462
Diffstat (limited to 'lldb/unittests/ScriptInterpreter/Python/PythonDataObjectsTests.cpp')
-rw-r--r--lldb/unittests/ScriptInterpreter/Python/PythonDataObjectsTests.cpp74
1 files changed, 37 insertions, 37 deletions
diff --git a/lldb/unittests/ScriptInterpreter/Python/PythonDataObjectsTests.cpp b/lldb/unittests/ScriptInterpreter/Python/PythonDataObjectsTests.cpp
index fe3b423..75a1f5e 100644
--- a/lldb/unittests/ScriptInterpreter/Python/PythonDataObjectsTests.cpp
+++ b/lldb/unittests/ScriptInterpreter/Python/PythonDataObjectsTests.cpp
@@ -123,13 +123,11 @@ TEST_F(PythonDataObjectsTest, TestInstanceNameResolutionNoDot) {
EXPECT_TRUE(major_version_field.IsAllocated());
EXPECT_TRUE(minor_version_field.IsAllocated());
- PythonInteger major_version_value =
- major_version_field.AsType<PythonInteger>();
- PythonInteger minor_version_value =
- minor_version_field.AsType<PythonInteger>();
+ auto major_version_value = As<long long>(major_version_field);
+ auto minor_version_value = As<long long>(minor_version_field);
- EXPECT_EQ(PY_MAJOR_VERSION, major_version_value.GetInteger());
- EXPECT_EQ(PY_MINOR_VERSION, minor_version_value.GetInteger());
+ EXPECT_THAT_EXPECTED(major_version_value, llvm::HasValue(PY_MAJOR_VERSION));
+ EXPECT_THAT_EXPECTED(minor_version_value, llvm::HasValue(PY_MINOR_VERSION));
}
TEST_F(PythonDataObjectsTest, TestGlobalNameResolutionWithDot) {
@@ -137,16 +135,14 @@ TEST_F(PythonDataObjectsTest, TestGlobalNameResolutionWithDot) {
EXPECT_TRUE(sys_path.IsAllocated());
EXPECT_TRUE(PythonList::Check(sys_path.get()));
- PythonInteger version_major =
- m_main_module.ResolveName("sys.version_info.major")
- .AsType<PythonInteger>();
- PythonInteger version_minor =
- m_main_module.ResolveName("sys.version_info.minor")
- .AsType<PythonInteger>();
- EXPECT_TRUE(version_major.IsAllocated());
- EXPECT_TRUE(version_minor.IsAllocated());
- EXPECT_EQ(PY_MAJOR_VERSION, version_major.GetInteger());
- EXPECT_EQ(PY_MINOR_VERSION, version_minor.GetInteger());
+ auto version_major =
+ As<long long>(m_main_module.ResolveName("sys.version_info.major"));
+
+ auto version_minor =
+ As<long long>(m_main_module.ResolveName("sys.version_info.minor"));
+
+ EXPECT_THAT_EXPECTED(version_major, llvm::HasValue(PY_MAJOR_VERSION));
+ EXPECT_THAT_EXPECTED(version_minor, llvm::HasValue(PY_MINOR_VERSION));
}
TEST_F(PythonDataObjectsTest, TestDictionaryResolutionWithDot) {
@@ -155,14 +151,14 @@ TEST_F(PythonDataObjectsTest, TestDictionaryResolutionWithDot) {
dict.SetItemForKey(PythonString("sys"), m_sys_module);
// Now use that dictionary to resolve `sys.version_info.major`
- PythonInteger version_major =
- PythonObject::ResolveNameWithDictionary("sys.version_info.major", dict)
- .AsType<PythonInteger>();
- PythonInteger version_minor =
- PythonObject::ResolveNameWithDictionary("sys.version_info.minor", dict)
- .AsType<PythonInteger>();
- EXPECT_EQ(PY_MAJOR_VERSION, version_major.GetInteger());
- EXPECT_EQ(PY_MINOR_VERSION, version_minor.GetInteger());
+ auto version_major = As<long long>(
+ PythonObject::ResolveNameWithDictionary("sys.version_info.major", dict));
+
+ auto version_minor = As<long long>(
+ PythonObject::ResolveNameWithDictionary("sys.version_info.minor", dict));
+
+ EXPECT_THAT_EXPECTED(version_major, llvm::HasValue(PY_MAJOR_VERSION));
+ EXPECT_THAT_EXPECTED(version_minor, llvm::HasValue(PY_MINOR_VERSION));
}
TEST_F(PythonDataObjectsTest, TestPythonInteger) {
@@ -176,7 +172,8 @@ TEST_F(PythonDataObjectsTest, TestPythonInteger) {
PythonInteger python_int(PyRefType::Owned, py_int);
EXPECT_EQ(PyObjectType::Integer, python_int.GetObjectType());
- EXPECT_EQ(12, python_int.GetInteger());
+ auto python_int_value = As<long long>(python_int);
+ EXPECT_THAT_EXPECTED(python_int_value, llvm::HasValue(12));
#endif
// Verify that `PythonInteger` works correctly when given a PyLong object.
@@ -187,12 +184,14 @@ TEST_F(PythonDataObjectsTest, TestPythonInteger) {
// Verify that you can reset the value and that it is reflected properly.
python_long.SetInteger(40);
- EXPECT_EQ(40, python_long.GetInteger());
+ auto e = As<long long>(python_long);
+ EXPECT_THAT_EXPECTED(e, llvm::HasValue(40));
// Test that creating a `PythonInteger` object works correctly with the
// int constructor.
PythonInteger constructed_int(7);
- EXPECT_EQ(7, constructed_int.GetInteger());
+ auto value = As<long long>(constructed_int);
+ EXPECT_THAT_EXPECTED(value, llvm::HasValue(7));
}
TEST_F(PythonDataObjectsTest, TestPythonBoolean) {
@@ -339,7 +338,8 @@ TEST_F(PythonDataObjectsTest, TestPythonListValueEquality) {
PythonInteger chk_int(PyRefType::Borrowed, chk_value1.get());
PythonString chk_str(PyRefType::Borrowed, chk_value2.get());
- EXPECT_EQ(long_value0, chk_int.GetInteger());
+ auto chkint = As<long long>(chk_value1);
+ ASSERT_THAT_EXPECTED(chkint, llvm::HasValue(long_value0));
EXPECT_EQ(string_value1, chk_str.GetString());
}
@@ -367,7 +367,8 @@ TEST_F(PythonDataObjectsTest, TestPythonListManipulation) {
PythonInteger chk_int(PyRefType::Borrowed, chk_value1.get());
PythonString chk_str(PyRefType::Borrowed, chk_value2.get());
- EXPECT_EQ(long_value0, chk_int.GetInteger());
+ auto e = As<long long>(chk_int);
+ EXPECT_THAT_EXPECTED(e, llvm::HasValue(long_value0));
EXPECT_EQ(string_value1, chk_str.GetString());
}
@@ -487,10 +488,10 @@ TEST_F(PythonDataObjectsTest, TestPythonDictionaryValueEquality) {
EXPECT_TRUE(PythonInteger::Check(chk_value1.get()));
EXPECT_TRUE(PythonString::Check(chk_value2.get()));
- PythonInteger chk_int(PyRefType::Borrowed, chk_value1.get());
PythonString chk_str(PyRefType::Borrowed, chk_value2.get());
+ auto chkint = As<long long>(chk_value1);
- EXPECT_EQ(value_0, chk_int.GetInteger());
+ EXPECT_THAT_EXPECTED(chkint, llvm::HasValue(value_0));
EXPECT_EQ(value_1, chk_str.GetString());
}
@@ -524,10 +525,10 @@ TEST_F(PythonDataObjectsTest, TestPythonDictionaryManipulation) {
EXPECT_TRUE(PythonInteger::Check(chk_value1.get()));
EXPECT_TRUE(PythonString::Check(chk_value2.get()));
- PythonInteger chk_int(PyRefType::Borrowed, chk_value1.get());
+ auto chkint = As<long long>(chk_value1);
PythonString chk_str(PyRefType::Borrowed, chk_value2.get());
- EXPECT_EQ(value_0, chk_int.GetInteger());
+ EXPECT_THAT_EXPECTED(chkint, llvm::HasValue(value_0));
EXPECT_EQ(value_1, chk_str.GetString());
}
@@ -594,10 +595,9 @@ TEST_F(PythonDataObjectsTest, TestObjectAttributes) {
EXPECT_TRUE(py_int.HasAttribute("numerator"));
EXPECT_FALSE(py_int.HasAttribute("this_should_not_exist"));
- PythonInteger numerator_attr =
- py_int.GetAttributeValue("numerator").AsType<PythonInteger>();
- EXPECT_TRUE(numerator_attr.IsAllocated());
- EXPECT_EQ(42, numerator_attr.GetInteger());
+ auto numerator_attr = As<long long>(py_int.GetAttributeValue("numerator"));
+
+ EXPECT_THAT_EXPECTED(numerator_attr, llvm::HasValue(42));
}
TEST_F(PythonDataObjectsTest, TestExtractingUInt64ThroughStructuredData) {