Skip to content

Commit 4c6a7ca

Browse files
Merge pull request #247 from cincodenada/bugfix/numeric_keys
Numeric keys break array inspection
2 parents c3f2dbd + 1857f83 commit 4c6a7ca

2 files changed

Lines changed: 48 additions & 2 deletions

File tree

plugin/python/vdebug/dbgp.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -669,8 +669,12 @@ def _determine_displayname(self,node):
669669
if self.language == 'php' or \
670670
self.language == 'perl':
671671
if self.parent.type == 'array':
672-
self.display_name = self.parent.display_name + \
673-
"['%s']" % node.get('name')
672+
if node.get('name').isdigit():
673+
self.display_name = self.parent.display_name + \
674+
"[%s]" % node.get('name')
675+
else:
676+
self.display_name = self.parent.display_name + \
677+
"['%s']" % node.get('name')
674678
else:
675679
self.display_name = self.parent.display_name + \
676680
"->"+node.get('name')

tests/test_dbgp_eval_property.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
if __name__ == "__main__":
2+
import sys
3+
sys.path.append('../plugin/python/')
4+
import unittest2 as unittest
5+
import vdebug.dbgp
6+
import xml.etree.ElementTree as ET
7+
8+
class EvalPropertyTest(unittest.TestCase):
9+
def __get_eval_property(self,xml_string,code,lang):
10+
xml = ET.fromstring(xml_string)
11+
firstnode = xml[0]
12+
return vdebug.dbgp.EvalProperty(firstnode,code,lang)
13+
14+
def test_numeric_keys(self):
15+
prop = self.__get_eval_property(\
16+
"""<?xml version="1.0" encoding="iso-8859-1"?>
17+
<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="eval" transaction_id="13">
18+
<property
19+
address="140722906708544" type="array"
20+
children="1" numchildren="2" page="0" pagesize="32">
21+
<property
22+
name="0" address="140022315302704"
23+
type="array" children="1" numchildren="1"></property>
24+
<property
25+
name="key" address="140022315307008"
26+
type="array" children="1" numchildren="1"></property>
27+
</property>
28+
</response>
29+
""", '$testarr', 'php')
30+
31+
self.assertEqual(prop.display_name,'$testarr')
32+
self.assertEqual(prop.value,'')
33+
self.assertEqual(prop.type,'array')
34+
self.assertEqual(prop.depth,0)
35+
self.assertTrue(prop.has_children)
36+
self.assertEqual(prop.child_count(),2)
37+
38+
self.assertEqual(prop.children[0].type,'array')
39+
self.assertEqual(prop.children[0].display_name,'$testarr[0]')
40+
41+
self.assertEqual(prop.children[1].type,'array')
42+
self.assertEqual(prop.children[1].display_name,"$testarr['key']")

0 commit comments

Comments
 (0)