Show More
@@ -117,7 +117,8 b' class _demandmod(object):' | |||
|
117 | 117 | if '.' in p: |
|
118 | 118 | h, t = p.split('.', 1) |
|
119 | 119 | if getattr(mod, h, nothing) is nothing: |
|
120 |
setattr(mod, h, _demandmod(p, mod.__dict__, mod.__dict__ |
|
|
120 | setattr(mod, h, _demandmod(p, mod.__dict__, mod.__dict__, | |
|
121 | level=1)) | |
|
121 | 122 | elif t: |
|
122 | 123 | subload(getattr(mod, h), t) |
|
123 | 124 | |
@@ -210,8 +211,8 b' def _demandimport(name, globals=None, lo' | |||
|
210 | 211 | mod = rootmod |
|
211 | 212 | for comp in modname.split('.')[1:]: |
|
212 | 213 | if getattr(mod, comp, nothing) is nothing: |
|
213 | setattr(mod, comp, | |
|
214 |
|
|
|
214 | setattr(mod, comp, _demandmod(comp, mod.__dict__, | |
|
215 | mod.__dict__, level=1)) | |
|
215 | 216 | mod = getattr(mod, comp) |
|
216 | 217 | return mod |
|
217 | 218 |
@@ -432,6 +432,36 b' Examine module importing.' | |||
|
432 | 432 | REL: this is absextroot.xsub1.xsub2.called.func() |
|
433 | 433 | REL: this relimporter imports 'this is absextroot.relimportee' |
|
434 | 434 | |
|
435 | Examine whether sub-module is imported relatively as expected. | |
|
436 | ||
|
437 | See also issue5208 for detail about example case on Python 3.x. | |
|
438 | ||
|
439 | $ f -q $TESTTMP/extlibroot/lsub1/lsub2/notexist.py | |
|
440 | $TESTTMP/extlibroot/lsub1/lsub2/notexist.py: file not found | |
|
441 | ||
|
442 | $ cat > $TESTTMP/notexist.py <<EOF | |
|
443 | > text = 'notexist.py at root is loaded unintentionally\n' | |
|
444 | > EOF | |
|
445 | ||
|
446 | $ cat > $TESTTMP/checkrelativity.py <<EOF | |
|
447 | > from mercurial import cmdutil | |
|
448 | > cmdtable = {} | |
|
449 | > command = cmdutil.command(cmdtable) | |
|
450 | > | |
|
451 | > # demand import avoids failure of importing notexist here | |
|
452 | > import extlibroot.lsub1.lsub2.notexist | |
|
453 | > | |
|
454 | > @command('checkrelativity', [], norepo=True) | |
|
455 | > def checkrelativity(ui, *args, **opts): | |
|
456 | > try: | |
|
457 | > ui.write(extlibroot.lsub1.lsub2.notexist.text) | |
|
458 | > return 1 # unintentional success | |
|
459 | > except ImportError: | |
|
460 | > pass # intentional failure | |
|
461 | > EOF | |
|
462 | ||
|
463 | $ (PYTHONPATH=${PYTHONPATH}${PATHSEP}${TESTTMP}; hg --config extensions.checkrelativity=$TESTTMP/checkrelativity.py checkrelativity) | |
|
464 | ||
|
435 | 465 | #endif |
|
436 | 466 | |
|
437 | 467 | $ cd .. |
General Comments 0
You need to be logged in to leave comments.
Login now