37 lines · python
1"""Test that lldb recognizes enum variant emitted by Rust compiler """2import logging3 4import lldb5from lldbsuite.test.decorators import *6from lldbsuite.test.lldbtest import *7from RustEnumValue import RustEnumValue8 9 10class TestRustEnumStructs(TestBase):11 def setUp(self):12 TestBase.setUp(self)13 src_dir = self.getSourceDir()14 yaml_path = os.path.join(src_dir, "main.yaml")15 obj_path = self.getBuildArtifact("main.o")16 self.yaml2obj(yaml_path, obj_path)17 self.dbg.CreateTarget(obj_path)18 19 def getFromGlobal(self, name):20 values = self.target().FindGlobalVariables(name, 1)21 self.assertEqual(values.GetSize(), 1)22 return RustEnumValue(values[0])23 24 def test_enum_instance(self):25 # static ENUM_INSTANCE: A = A::A(B::B(10));26 value = self.getFromGlobal("ENUM_INSTANCE").getCurrentValue()27 self.assertEqual(value.GetType().GetDisplayTypeName(), "main::A::A")28 29 value_b = RustEnumValue(value.GetChildAtIndex(0))30 self.assertEqual(31 value_b.getCurrentValue()32 .GetChildAtIndex(0)33 .GetData()34 .GetUnsignedInt8(lldb.SBError(), 0),35 10,36 )37