| Server IP : 182.53.201.61 / Your IP : 216.73.217.175 Web Server : Apache/2.2.15 (Fedora) System : Linux km10.dyndns.org 2.6.31.5-127.fc12.i686.PAE #1 SMP Sat Nov 7 21:25:57 EST 2009 i686 User : apache ( 48) PHP Version : 5.3.3 Disable Function : NONE MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/11490/root/usr/lib/python2.6/site-packages/giscanner/ |
Upload File : |
# -*- Mode: Python -*-
# GObject-Introspection - a framework for introspecting GObject libraries
# Copyright (C) 2008 Colin Walters
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
from .girparser import C_NS, GLIB_NS
from .girparser import _corens
_nsmap = {'c': C_NS,
'glib': GLIB_NS}
def myxpath(node, expr):
"""I Can't Believe It's Not XPath!"""
elts = expr.split('/')
curnode = node
for elt in elts:
if elt == '':
continue
try:
(elt, qual) = elt.split('[', 1)
qual = qual[1:-1]
pairs = [x.split('=', 1) for x in qual.split(',')]
exp_attrs = [(x[0], x[1][1:-1]) for x in pairs]
except ValueError, e:
(elt, exp_attrs) = (elt, [])
try:
(ns, elt) = elt.split(':', 1)
ns = _nsmap[ns]
elt = '{%s}%s' % (ns, elt)
except ValueError, e:
elt = _corens(elt)
curnodes = curnode.findall(elt)
if not curnodes:
return None
found = True
#print "LOOKING %d nodes" % (len(curnodes), )
for node in curnodes:
#print "LOOKING: %r expecting: %r attrib: %r" \
# % (node, exp_attrs, node.attrib)
passes = True
for name, val in exp_attrs:
a = node.attrib.get(name)
if not a or a != val:
#print "ATTR FAIL: %r=%r" % (val, a)
passes = False
break
if passes:
found = True
#print 'ATTR PASS: %r' % (node, )
curnode = node
break
found = False
if not found:
return None
return curnode
def xpath_assert(node, path, attribs=[]):
elt = myxpath(node, path)
if elt is None:
raise AssertionError("Failed to find %r" % (path, ))
for (name, expvalue) in attribs:
value = elt.attrib.get(name)
if not value:
raise AssertionError("Failed to find attibute %r" +
"in node %r" % (name, elt, ))
if value != expvalue:
raise AssertionError("Attibute %r in node %r has " +
"unexpected value %r" % (name, elt, expvalue))