1"""
2Test lldb-vscode coreFile attaching
3"""
4
5
6import unittest2
7import vscode
8from lldbsuite.test.decorators import *
9from lldbsuite.test.lldbtest import *
10from lldbsuite.test import lldbutil
11import lldbvscode_testcase
12import os
13
14
15class TestVSCode_coreFile(lldbvscode_testcase.VSCodeTestCaseBase):
16
17    mydir = TestBase.compute_mydir(__file__)
18
19    @skipIfWindows
20    @skipIfRemote
21    @skipIfLLVMTargetMissing("X86")
22    def test_core_file(self):
23        current_dir = os.path.dirname(os.path.realpath(__file__))
24        exe_file = os.path.join(current_dir, "linux-x86_64.out")
25        core_file = os.path.join(current_dir, "linux-x86_64.core")
26
27        self.create_debug_adaptor()
28        self.attach(exe_file, coreFile=core_file)
29
30        expected_frames = [
31            {'column': 0, 'id': 524288, 'line': 4, 'name': 'bar', 'source': {'name': 'main.c', 'path': '/home/labath/test/main.c'}},
32            {'column': 0, 'id': 524289, 'line': 10, 'name': 'foo', 'source': {'name': 'main.c', 'path': '/home/labath/test/main.c'}},
33            {'column': 0, 'id': 524290, 'line': 16, 'name': '_start', 'source': {'name': 'main.c', 'path': '/home/labath/test/main.c'}},
34        ]
35
36        self.assertEquals(self.get_stackFrames(), expected_frames)
37
38        # Resuming should have no effect and keep the process stopped
39        self.continue_to_next_stop()
40        self.assertEquals(self.get_stackFrames(), expected_frames)
41
42        self.vscode.request_next(threadId=32259)
43        self.assertEquals(self.get_stackFrames(), expected_frames)
44