1#require no-chg 2 3Test basic extension support 4 5 $ cat > foobar.py <<EOF 6 > import os 7 > from mercurial import commands, registrar 8 > cmdtable = {} 9 > command = registrar.command(cmdtable) 10 > configtable = {} 11 > configitem = registrar.configitem(configtable) 12 > configitem(b'tests', b'foo', default=b"Foo") 13 > def uisetup(ui): 14 > ui.debug(b"uisetup called [debug]\\n") 15 > ui.write(b"uisetup called\\n") 16 > ui.status(b"uisetup called [status]\\n") 17 > ui.flush() 18 > def reposetup(ui, repo): 19 > ui.write(b"reposetup called for %s\\n" % os.path.basename(repo.root)) 20 > ui.write(b"ui %s= repo.ui\\n" % (ui == repo.ui and b"=" or b"!")) 21 > ui.flush() 22 > @command(b'foo', [], b'hg foo') 23 > def foo(ui, *args, **kwargs): 24 > foo = ui.config(b'tests', b'foo') 25 > ui.write(foo) 26 > ui.write(b"\\n") 27 > @command(b'bar', [], b'hg bar', norepo=True) 28 > def bar(ui, *args, **kwargs): 29 > ui.write(b"Bar\\n") 30 > EOF 31 $ abspath=`pwd`/foobar.py 32 33 $ mkdir barfoo 34 $ cp foobar.py barfoo/__init__.py 35 $ barfoopath=`pwd`/barfoo 36 37 $ hg init a 38 $ cd a 39 $ echo foo > file 40 $ hg add file 41 $ hg commit -m 'add file' 42 43 $ echo '[extensions]' >> $HGRCPATH 44 $ echo "foobar = $abspath" >> $HGRCPATH 45 46 $ filterlog () { 47 > sed -e 's!^[0-9/]* [0-9:]* ([0-9]*)>!YYYY/MM/DD HH:MM:SS (PID)>!' 48 > } 49 50Test extension setup timings 51 52 $ hg foo --traceback --config devel.debug.extensions=yes --debug 2>&1 | filterlog 53 YYYY/MM/DD HH:MM:SS (PID)> loading extensions 54 YYYY/MM/DD HH:MM:SS (PID)> - processing 1 entries 55 YYYY/MM/DD HH:MM:SS (PID)> - loading extension: foobar 56 YYYY/MM/DD HH:MM:SS (PID)> > foobar extension loaded in * (glob) 57 YYYY/MM/DD HH:MM:SS (PID)> - validating extension tables: foobar 58 YYYY/MM/DD HH:MM:SS (PID)> - invoking registered callbacks: foobar 59 YYYY/MM/DD HH:MM:SS (PID)> > callbacks completed in * (glob) 60 YYYY/MM/DD HH:MM:SS (PID)> > loaded 1 extensions, total time * (glob) 61 YYYY/MM/DD HH:MM:SS (PID)> - loading configtable attributes 62 YYYY/MM/DD HH:MM:SS (PID)> - executing uisetup hooks 63 YYYY/MM/DD HH:MM:SS (PID)> - running uisetup for foobar 64 uisetup called [debug] 65 uisetup called 66 uisetup called [status] 67 YYYY/MM/DD HH:MM:SS (PID)> > uisetup for foobar took * (glob) 68 YYYY/MM/DD HH:MM:SS (PID)> > all uisetup took * (glob) 69 YYYY/MM/DD HH:MM:SS (PID)> - executing extsetup hooks 70 YYYY/MM/DD HH:MM:SS (PID)> - running extsetup for foobar 71 YYYY/MM/DD HH:MM:SS (PID)> > extsetup for foobar took * (glob) 72 YYYY/MM/DD HH:MM:SS (PID)> > all extsetup took * (glob) 73 YYYY/MM/DD HH:MM:SS (PID)> - executing remaining aftercallbacks 74 YYYY/MM/DD HH:MM:SS (PID)> > remaining aftercallbacks completed in * (glob) 75 YYYY/MM/DD HH:MM:SS (PID)> - loading extension registration objects 76 YYYY/MM/DD HH:MM:SS (PID)> > extension registration object loading took * (glob) 77 YYYY/MM/DD HH:MM:SS (PID)> > extension foobar take a total of * to load (glob) 78 YYYY/MM/DD HH:MM:SS (PID)> extension loading complete 79 YYYY/MM/DD HH:MM:SS (PID)> loading additional extensions 80 YYYY/MM/DD HH:MM:SS (PID)> - processing 1 entries 81 YYYY/MM/DD HH:MM:SS (PID)> > loaded 0 extensions, total time * (glob) 82 YYYY/MM/DD HH:MM:SS (PID)> - loading configtable attributes 83 YYYY/MM/DD HH:MM:SS (PID)> - executing uisetup hooks 84 YYYY/MM/DD HH:MM:SS (PID)> > all uisetup took * (glob) 85 YYYY/MM/DD HH:MM:SS (PID)> - executing extsetup hooks 86 YYYY/MM/DD HH:MM:SS (PID)> > all extsetup took * (glob) 87 YYYY/MM/DD HH:MM:SS (PID)> - executing remaining aftercallbacks 88 YYYY/MM/DD HH:MM:SS (PID)> > remaining aftercallbacks completed in * (glob) 89 YYYY/MM/DD HH:MM:SS (PID)> - loading extension registration objects 90 YYYY/MM/DD HH:MM:SS (PID)> > extension registration object loading took * (glob) 91 YYYY/MM/DD HH:MM:SS (PID)> extension loading complete 92 YYYY/MM/DD HH:MM:SS (PID)> - executing reposetup hooks 93 YYYY/MM/DD HH:MM:SS (PID)> - running reposetup for foobar 94 reposetup called for a 95 ui == repo.ui 96 YYYY/MM/DD HH:MM:SS (PID)> > reposetup for foobar took * (glob) 97 YYYY/MM/DD HH:MM:SS (PID)> > all reposetup took * (glob) 98 Foo 99 100 $ cd .. 101 102 $ echo 'foobar = !' >> $HGRCPATH 103