[Lldb-commits] [lldb] r251368 - Change TestTypeCompletion to not rely on std::string
Enrico Granata via lldb-commits
lldb-commits at lists.llvm.org
Mon Oct 26 16:39:17 PDT 2015
Author: enrico
Date: Mon Oct 26 18:39:12 2015
New Revision: 251368
URL: http://llvm.org/viewvc/llvm-project?rev=251368&view=rev
Log:
Change TestTypeCompletion to not rely on std::string
On some combination of platform and c++ library, this dependency was causing the test to fail for reasons tangential to its real objective
Modified:
lldb/trunk/test/functionalities/type_completion/TestTypeCompletion.py
lldb/trunk/test/functionalities/type_completion/main.cpp
Modified: lldb/trunk/test/functionalities/type_completion/TestTypeCompletion.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/type_completion/TestTypeCompletion.py?rev=251368&r1=251367&r2=251368&view=diff
==============================================================================
--- lldb/trunk/test/functionalities/type_completion/TestTypeCompletion.py (original)
+++ lldb/trunk/test/functionalities/type_completion/TestTypeCompletion.py Mon Oct 26 18:39:12 2015
@@ -73,14 +73,10 @@ class TypeCompletionTestCase(TestBase):
self.assertTrue(name_address_type.IsValid(), 'NameAndAddress should be valid')
self.assertTrue(name_address_type.IsTypeComplete(), 'NameAndAddress should now be complete')
field0 = name_address_type.GetFieldAtIndex(0)
- if self.TraceOn():
- print('field0: ' + str(field0))
self.assertTrue(field0.IsValid(), 'NameAndAddress::m_name should be valid')
string = field0.GetType().GetPointeeType()
- if self.TraceOn():
- print('string: ' + str(string))
- self.assertTrue(string.IsValid(), 'std::string should be valid')
- self.assertFalse(string.IsTypeComplete(), 'std::string complete but it should not be')
+ self.assertTrue(string.IsValid(), 'CustomString should be valid')
+ self.assertFalse(string.IsTypeComplete(), 'CustomString complete but it should not be')
self.runCmd("continue")
@@ -91,17 +87,13 @@ class TypeCompletionTestCase(TestBase):
self.assertTrue(name_address_type.IsValid(), 'NameAndAddress should be valid')
self.assertTrue(name_address_type.IsTypeComplete(), 'NameAndAddress should now be complete')
field0 = name_address_type.GetFieldAtIndex(0)
- if self.TraceOn():
- print('field0: ' + str(field0))
self.assertTrue(field0.IsValid(), 'NameAndAddress::m_name should be valid')
string = field0.GetType().GetPointeeType()
- if self.TraceOn():
- print('string: ' + str(string))
- self.assertTrue(string.IsValid(), 'std::string should be valid')
- self.assertFalse(string.IsTypeComplete(), 'std::string complete but it should not be')
+ self.assertTrue(string.IsValid(), 'CustomString should be valid')
+ self.assertFalse(string.IsTypeComplete(), 'CustomString complete but it should not be')
self.runCmd('type category enable -l c++', check=False)
- self.runCmd('frame variable guy --show-types')
+ self.runCmd('frame variable guy --show-types --ptr-depth=1')
p_vector = self.dbg.GetSelectedTarget().GetProcess().GetSelectedThread().GetSelectedFrame().FindVariable('p')
p_type = p_vector.GetType()
@@ -112,5 +104,5 @@ class TypeCompletionTestCase(TestBase):
field0 = name_address_type.GetFieldAtIndex(0)
self.assertTrue(field0.IsValid(), 'NameAndAddress::m_name should be valid')
string = field0.GetType().GetPointeeType()
- self.assertTrue(string.IsValid(), 'std::string should be valid')
- self.assertTrue(string.IsTypeComplete(), 'std::string should now be complete')
+ self.assertTrue(string.IsValid(), 'CustomString should be valid')
+ self.assertTrue(string.IsTypeComplete(), 'CustomString should now be complete')
Modified: lldb/trunk/test/functionalities/type_completion/main.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/type_completion/main.cpp?rev=251368&r1=251367&r2=251368&view=diff
==============================================================================
--- lldb/trunk/test/functionalities/type_completion/main.cpp (original)
+++ lldb/trunk/test/functionalities/type_completion/main.cpp Mon Oct 26 18:39:12 2015
@@ -7,16 +7,45 @@
//
//===----------------------------------------------------------------------===//
-#include <string>
+#include <string.h>
#include <vector>
#include <iostream>
+class CustomString
+{
+public:
+ CustomString (const char* buffer) :
+ m_buffer(nullptr)
+ {
+ if (buffer)
+ {
+ auto l = strlen(buffer);
+ m_buffer = new char[1 + l];
+ strcpy(m_buffer, buffer);
+ }
+ }
+
+ ~CustomString ()
+ {
+ delete[] m_buffer;
+ }
+
+ const char*
+ GetBuffer ()
+ {
+ return m_buffer;
+ }
+
+private:
+ char *m_buffer;
+};
+
class NameAndAddress
{
public:
- std::string& GetName() { return *m_name; }
- std::string& GetAddress() { return *m_address; }
- NameAndAddress(const char* N, const char* A) : m_name(new std::string(N)), m_address(new std::string(A))
+ CustomString& GetName() { return *m_name; }
+ CustomString& GetAddress() { return *m_address; }
+ NameAndAddress(const char* N, const char* A) : m_name(new CustomString(N)), m_address(new CustomString(A))
{
}
~NameAndAddress()
@@ -24,8 +53,8 @@ class NameAndAddress
}
private:
- std::string* m_name;
- std::string* m_address;
+ CustomString* m_name;
+ CustomString* m_address;
};
typedef std::vector<NameAndAddress> People;
@@ -43,7 +72,7 @@ int main (int argc, const char * argv[])
for (int j = 0; j<p.size(); j++)
{
NameAndAddress guy = p[j];
- std::cout << "Person " << j << " is named " << guy.GetName() << " and lives at " << guy.GetAddress() << std::endl; // Set break point at this line.
+ std::cout << "Person " << j << " is named " << guy.GetName().GetBuffer() << " and lives at " << guy.GetAddress().GetBuffer() << std::endl; // Set break point at this line.
}
return 0;
More information about the lldb-commits
mailing list