brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · 0a192dc Raw
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