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    @skipIfWindows
18    @skipIfRemote
19    @skipIfLLVMTargetMissing("X86")
20    def test_core_file(self):
21        current_dir = os.path.dirname(os.path.realpath(__file__))
22        exe_file = os.path.join(current_dir, "linux-x86_64.out")
23        core_file = os.path.join(current_dir, "linux-x86_64.core")
24
25        self.create_debug_adaptor()
26        self.attach(exe_file, coreFile=core_file)
27
28        expected_frames = [
29            {'column': 0, 'id': 524288, 'line': 4, 'name': 'bar', 'source': {'name': 'main.c', 'path': '/home/labath/test/main.c'}},
30            {'column': 0, 'id': 524289, 'line': 10, 'name': 'foo', 'source': {'name': 'main.c', 'path': '/home/labath/test/main.c'}},
31            {'column': 0, 'id': 524290, 'line': 16, 'name': '_start', 'source': {'name': 'main.c', 'path': '/home/labath/test/main.c'}},
32        ]
33
34        self.assertEquals(self.get_stackFrames(), expected_frames)
35
36        # Resuming should have no effect and keep the process stopped
37        self.continue_to_next_stop()
38        self.assertEquals(self.get_stackFrames(), expected_frames)
39
40        self.vscode.request_next(threadId=32259)
41        self.assertEquals(self.get_stackFrames(), expected_frames)
42
43    @skipIfWindows
44    @skipIfRemote
45    @skipIfLLVMTargetMissing("X86")
46    def test_core_file_source_mapping(self):
47        ''' Test that sourceMap property is correctly applied when loading a core '''
48        current_dir = os.path.dirname(os.path.realpath(__file__))
49        exe_file = os.path.join(current_dir, "linux-x86_64.out")
50        core_file = os.path.join(current_dir, "linux-x86_64.core")
51
52        self.create_debug_adaptor()
53
54        source_map = [["/home/labath/test", current_dir]]
55        self.attach(exe_file, coreFile=core_file, sourceMap=source_map)
56
57        self.assertTrue(current_dir in self.get_stackFrames()[0]['source']['path'])
58