~ubuntu-branches/debian/squeeze/nose/squeeze

« back to all changes in this revision

Viewing changes to doc/plugin_testid.html

  • Committer: Bazaar Package Importer
  • Author(s): Torsten Marek, Torsten Marek, Gustavo Noronha Silva
  • Date: 2008-06-12 13:39:43 UTC
  • mfrom: (1.2.1 upstream) (2.1.5 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080612133943-2q7syp67fwl4on13
Tags: 0.10.3-1

[Torsten Marek]
* New upstream release (Closes: #461994)
* debian/control
  - bump standards version to 3.8.0, no changes necessary
  - add suggestions for python-coverage (Closes: #457053)
  - change dependency on python-setuptools into 
    python-pkg-resources (Closes: #468719)
  - added myself to uploaders

[Gustavo Noronha Silva]
* debian/control:
  - remove -1 from build-dep on setuptools

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<html>
 
2
  <head>
 
3
    <title>nose: builtin plugin: testid</title>
 
4
    <link rel="stylesheet" href="site.css" type="text/css"></link>
 
5
  </head>
 
6
  <body>
 
7
    
 
8
    <div id="menu">
 
9
      <p>This document covers nose version <b>0.10.3</b></p>
 
10
      <p>Last update: <b>Tue Jun  3 11:50:26 2008</b></p>
 
11
      <h2>Plugins</h2><ul><li><a href="plugin_attrib.html">Builtin Plugin: attrib</a></li><li><a href="plugin_capture.html">Builtin Plugin: capture</a></li><li><a href="plugin_cover.html">Builtin Plugin: cover</a></li><li><a href="plugin_debug.html">Builtin Plugin: debug</a></li><li><a href="plugin_deprecated.html">Builtin Plugin: deprecated</a></li><li><a href="plugin_doctests.html">Builtin Plugin: doctests</a></li><li><a href="plugin_failuredetail.html">Builtin Plugin: failuredetail</a></li><li><a href="plugin_isolate.html">Builtin Plugin: isolate</a></li><li><a href="plugin_prof.html">Builtin Plugin: prof</a></li><li><a href="plugin_skip.html">Builtin Plugin: skip</a></li><li><a href="plugin_testid.html">Builtin Plugin: testid</a></li><li><a href="error_class_plugin.html">ErrorClass Plugins</a></li><li><a href="plugin_interface.html">Plugin Interface</a></li><li><a href="writing_plugins.html">Writing Plugins</a></li></ul><h2>Modules</h2><ul><li><a href="module_nose.case.html">Module: nose.case</a></li><li><a href="module_nose.commands.html">Module: nose.commands</a></li><li><a href="module_nose.config.html">Module: nose.config</a></li><li><a href="module_nose.core.html">Module: nose.core</a></li><li><a href="module_nose.exc.html">Module: nose.exc</a></li><li><a href="module_nose.failure.html">Module: nose.failure</a></li><li><a href="module_nose.importer.html">Module: nose.importer</a></li><li><a href="module_nose.inspector.html">Module: nose.inspector</a></li><li><a href="module_nose.loader.html">Module: nose.loader</a></li><li><a href="module_nose.plugins.manager.html">Module: nose.plugins.manager</a></li><li><a href="module_nose.plugins.plugintest.html">Module: nose.plugins.plugintest</a></li><li><a href="module_nose.proxy.html">Module: nose.proxy</a></li><li><a href="module_nose.result.html">Module: nose.result</a></li><li><a href="module_nose.selector.html">Module: nose.selector</a></li><li><a href="module_nose.suite.html">Module: nose.suite</a></li><li><a href="module_nose.tools.html">Module: nose.tools</a></li><li><a href="module_nose.twistedtools.html">Module: nose.twistedtools</a></li><li><a href="module_nose.util.html">Module: nose.util</a></li></ul><h2>Plugin Examples</h2><ul><li><a href="unwanted_package.html">Excluding Unwanted Packages</a></li><li><a href="errorclass_failure.html">Failure of Errorclasses</a></li><li><a href="imported_tests.html">Importing Tests</a></li><li><a href="empty_plugin.html">Minimal plugin</a></li><li><a href="restricted_plugin_options.html">Restricted Plugin Managers</a></li><li><a href="init_plugin.html">Running Initialization Code Before the Test Run</a></li><li><a href="selector_plugin.html">Using a Custom Selector</a></li><li><a href="plugin_exceptions.html">When Plugins Fail</a></li><li><a href="plugintest_environment.html">nose.plugins.plugintest, os.environ and sys.argv</a></li></ul>
 
12
    </div>
 
13
    
 
14
    <div id="main">
 
15
      <h1>nose: builtin plugin: testid</h1>
 
16
      
 
17
      <p>This plugin adds a test id (like #1) to each test name output. After
 
18
you've run once to generate test ids, you can re-run individual
 
19
tests by activating the plugin and passing the ids (with or
 
20
without the # prefix) instead of test names.</p>
 
21
<p>For example, if your normal test run looks like:</p>
 
22
<pre class="literal-block">
 
23
% nosetests -v
 
24
tests.test_a ... ok
 
25
tests.test_b ... ok
 
26
tests.test_c ... ok
 
27
</pre>
 
28
<p>When adding --with-id you'll see:</p>
 
29
<pre class="literal-block">
 
30
% nosetests -v --with-id
 
31
#1 tests.test_a ... ok
 
32
#2 tests.test_b ... ok
 
33
#2 tests.test_c ... ok
 
34
</pre>
 
35
<p>Then you can rerun individual tests by supplying just the id numbers:</p>
 
36
<pre class="literal-block">
 
37
% nosetests -v --with-id 2
 
38
#2 tests.test_b ... ok
 
39
</pre>
 
40
<p>Then you can rerun individual tests by supplying just the id numbers:</p>
 
41
<pre class="literal-block">
 
42
% nosetests -v --with-id 2 3
 
43
#2 tests.test_b ... ok
 
44
#3 tests.test_c ... ok
 
45
</pre>
 
46
<p>Since most shells consider '#' a special character, you can leave it out when
 
47
specifying a test id.</p>
 
48
 
 
49
 
 
50
      <h2>Plugin Methods Implemented</h2>
 
51
 
 
52
      <p>This plugin implements the following plugin interface methods:</p>
 
53
      
 
54
      <ul><li><a href="plugin_interface.html#configure">configure</a></li><li><a href="plugin_interface.html#finalize">finalize</a></li><li><a href="plugin_interface.html#loadTestsFromNames">loadTestsFromNames</a></li><li><a href="plugin_interface.html#options">options</a></li><li><a href="plugin_interface.html#setOutputStream">setOutputStream</a></li><li><a href="plugin_interface.html#startTest">startTest</a></li></ul>
 
55
 
 
56
 
 
57
      <h2>Commandline Options</h2>
 
58
 
 
59
      <p>This plugin adds the following commandline options:</p>
 
60
 
 
61
      <pre>options:
 
62
  --with-id             Enable plugin TestId:  Activate to add a test id (like
 
63
                        #1) to each test name output. After you've run once to
 
64
                        generate test ids, you can re-run individual tests by
 
65
                        activating the plugin and passing the ids (with or
 
66
                        without the # prefix) instead of test names.
 
67
                        [NOSE_WITH_ID]
 
68
  --id-file=TESTIDFILE  Store test ids found in test runs in this file.
 
69
                        Default is the file .noseids in the working directory.
 
70
</pre>
 
71
 
 
72
      <h2>Source</h2>
 
73
 
 
74
      <div class="highlight"><pre><span class="sd">&quot;&quot;&quot;</span>
 
75
<span class="sd">This plugin adds a test id (like #1) to each test name output. After</span>
 
76
<span class="sd">you&#39;ve run once to generate test ids, you can re-run individual</span>
 
77
<span class="sd">tests by activating the plugin and passing the ids (with or</span>
 
78
<span class="sd">without the # prefix) instead of test names.</span>
 
79
 
 
80
<span class="sd">For example, if your normal test run looks like::</span>
 
81
 
 
82
<span class="sd">  % nosetests -v</span>
 
83
<span class="sd">  tests.test_a ... ok</span>
 
84
<span class="sd">  tests.test_b ... ok</span>
 
85
<span class="sd">  tests.test_c ... ok</span>
 
86
 
 
87
<span class="sd">When adding --with-id you&#39;ll see::</span>
 
88
 
 
89
<span class="sd">  % nosetests -v --with-id</span>
 
90
<span class="sd">  #1 tests.test_a ... ok</span>
 
91
<span class="sd">  #2 tests.test_b ... ok</span>
 
92
<span class="sd">  #2 tests.test_c ... ok</span>
 
93
 
 
94
<span class="sd">Then you can rerun individual tests by supplying just the id numbers::</span>
 
95
 
 
96
<span class="sd">  % nosetests -v --with-id 2</span>
 
97
<span class="sd">  #2 tests.test_b ... ok</span>
 
98
 
 
99
<span class="sd">Then you can rerun individual tests by supplying just the id numbers::</span>
 
100
 
 
101
<span class="sd">  % nosetests -v --with-id 2 3</span>
 
102
<span class="sd">  #2 tests.test_b ... ok</span>
 
103
<span class="sd">  #3 tests.test_c ... ok</span>
 
104
<span class="sd">  </span>
 
105
<span class="sd">Since most shells consider &#39;#&#39; a special character, you can leave it out when</span>
 
106
<span class="sd">specifying a test id.</span>
 
107
<span class="sd">&quot;&quot;&quot;</span>
 
108
<span class="n">__test__</span> <span class="o">=</span> <span class="bp">False</span>
 
109
 
 
110
<span class="k">import</span> <span class="nn">logging</span>
 
111
<span class="k">import</span> <span class="nn">os</span>
 
112
<span class="k">from</span> <span class="nn">nose.plugins</span> <span class="k">import</span> <span class="n">Plugin</span>
 
113
<span class="k">from</span> <span class="nn">nose.util</span> <span class="k">import</span> <span class="n">src</span>
 
114
 
 
115
<span class="k">try</span><span class="p">:</span>
 
116
    <span class="k">from</span> <span class="nn">cPickle</span> <span class="k">import</span> <span class="n">dump</span><span class="p">,</span> <span class="n">load</span>
 
117
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
 
118
    <span class="k">from</span> <span class="nn">pickle</span> <span class="k">import</span> <span class="n">dump</span><span class="p">,</span> <span class="n">load</span>
 
119
 
 
120
<span class="n">log</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">__name__</span><span class="p">)</span>
 
121
 
 
122
<span class="k">class</span> <span class="nc">TestId</span><span class="p">(</span><span class="n">Plugin</span><span class="p">):</span>
 
123
    <span class="sd">&quot;&quot;&quot;</span>
 
124
<span class="sd">    Activate to add a test id (like #1) to each test name output. After</span>
 
125
<span class="sd">    you&#39;ve run once to generate test ids, you can re-run individual</span>
 
126
<span class="sd">    tests by activating the plugin and passing the ids (with or</span>
 
127
<span class="sd">    without the # prefix) instead of test names.</span>
 
128
<span class="sd">    &quot;&quot;&quot;</span>
 
129
    <span class="n">name</span> <span class="o">=</span> <span class="s">&#39;id&#39;</span>
 
130
    <span class="n">idfile</span> <span class="o">=</span> <span class="bp">None</span>
 
131
    <span class="n">shouldSave</span> <span class="o">=</span> <span class="bp">True</span>
 
132
    
 
133
    <span class="k">def</span> <span class="nf">options</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parser</span><span class="p">,</span> <span class="n">env</span><span class="p">):</span>
 
134
        <span class="n">Plugin</span><span class="o">.</span><span class="n">options</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parser</span><span class="p">,</span> <span class="n">env</span><span class="p">)</span>
 
135
        <span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s">&#39;--id-file&#39;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s">&#39;store&#39;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s">&#39;testIdFile&#39;</span><span class="p">,</span>
 
136
                          <span class="n">default</span><span class="o">=</span><span class="s">&#39;.noseids&#39;</span><span class="p">,</span>
 
137
                          <span class="n">help</span><span class="o">=</span><span class="s">&quot;Store test ids found in test runs in this &quot;</span>
 
138
                          <span class="s">&quot;file. Default is the file .noseids in the &quot;</span>
 
139
                          <span class="s">&quot;working directory.&quot;</span><span class="p">)</span>
 
140
 
 
141
    <span class="k">def</span> <span class="nf">configure</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">options</span><span class="p">,</span> <span class="n">conf</span><span class="p">):</span>
 
142
        <span class="n">Plugin</span><span class="o">.</span><span class="n">configure</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">options</span><span class="p">,</span> <span class="n">conf</span><span class="p">)</span>
 
143
        <span class="bp">self</span><span class="o">.</span><span class="n">idfile</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">expanduser</span><span class="p">(</span><span class="n">options</span><span class="o">.</span><span class="n">testIdFile</span><span class="p">)</span>
 
144
        <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isabs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idfile</span><span class="p">):</span>
 
145
            <span class="bp">self</span><span class="o">.</span><span class="n">idfile</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">conf</span><span class="o">.</span><span class="n">workingDir</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">idfile</span><span class="p">)</span>
 
146
        <span class="bp">self</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="mi">1</span>
 
147
        <span class="c"># Ids and tests are mirror images: ids are {id: test address} and</span>
 
148
        <span class="c"># tests are {test address: id}</span>
 
149
        <span class="bp">self</span><span class="o">.</span><span class="n">ids</span> <span class="o">=</span> <span class="p">{}</span>
 
150
        <span class="bp">self</span><span class="o">.</span><span class="n">tests</span> <span class="o">=</span> <span class="p">{}</span>
 
151
        <span class="c"># used to track ids seen when tests is filled from</span>
 
152
        <span class="c"># loaded ids file</span>
 
153
        <span class="bp">self</span><span class="o">.</span><span class="n">_seen</span> <span class="o">=</span> <span class="p">{}</span>
 
154
 
 
155
    <span class="k">def</span> <span class="nf">finalize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">result</span><span class="p">):</span>
 
156
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">shouldSave</span><span class="p">:</span>
 
157
            <span class="n">fh</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idfile</span><span class="p">,</span> <span class="s">&#39;w&#39;</span><span class="p">)</span>
 
158
            <span class="c"># save as {id: test address}</span>
 
159
            <span class="n">ids</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tests</span><span class="o">.</span><span class="n">values</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">tests</span><span class="o">.</span><span class="n">keys</span><span class="p">()))</span>            
 
160
            <span class="n">dump</span><span class="p">(</span><span class="n">ids</span><span class="p">,</span> <span class="n">fh</span><span class="p">)</span>
 
161
            <span class="n">fh</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
 
162
            <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;Saved test ids: </span><span class="si">%s</span><span class="s"> to </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">ids</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">idfile</span><span class="p">)</span>
 
163
 
 
164
    <span class="k">def</span> <span class="nf">loadTestsFromNames</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">names</span><span class="p">,</span> <span class="n">module</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
 
165
        <span class="sd">&quot;&quot;&quot;Translate ids in the list of requested names into their</span>
 
166
<span class="sd">        test addresses, if they are found in my dict of tests.</span>
 
167
<span class="sd">        &quot;&quot;&quot;</span>
 
168
        <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;ltfn </span><span class="si">%s</span><span class="s"> </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">names</span><span class="p">,</span> <span class="n">module</span><span class="p">)</span>
 
169
        <span class="k">try</span><span class="p">:</span>
 
170
            <span class="n">fh</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idfile</span><span class="p">,</span> <span class="s">&#39;r&#39;</span><span class="p">)</span>
 
171
            <span class="bp">self</span><span class="o">.</span><span class="n">ids</span> <span class="o">=</span> <span class="n">load</span><span class="p">(</span><span class="n">fh</span><span class="p">)</span>
 
172
            <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;Loaded test ids </span><span class="si">%s</span><span class="s"> from </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">ids</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">idfile</span><span class="p">)</span>
 
173
            <span class="n">fh</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
 
174
        <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span>
 
175
            <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;IO error reading </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">idfile</span><span class="p">)</span>
 
176
            <span class="k">return</span>
 
177
            
 
178
        <span class="c"># I don&#39;t load any tests myself, only translate names like &#39;#2&#39;</span>
 
179
        <span class="c"># into the associated test addresses</span>
 
180
        <span class="n">result</span> <span class="o">=</span> <span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="nb">map</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tr</span><span class="p">,</span> <span class="n">names</span><span class="p">))</span>
 
181
        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">shouldSave</span><span class="p">:</span>
 
182
            <span class="c"># got some ids in names, so make sure that the ids line</span>
 
183
            <span class="c"># up in output with what I said they were last time</span>
 
184
            <span class="bp">self</span><span class="o">.</span><span class="n">tests</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ids</span><span class="o">.</span><span class="n">values</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">ids</span><span class="o">.</span><span class="n">keys</span><span class="p">()))</span>
 
185
        <span class="k">return</span> <span class="n">result</span>
 
186
 
 
187
    <span class="k">def</span> <span class="nf">makeName</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">):</span>
 
188
        <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Make name </span><span class="si">%s</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">addr</span><span class="p">)</span>
 
189
        <span class="n">filename</span><span class="p">,</span> <span class="n">module</span><span class="p">,</span> <span class="n">call</span> <span class="o">=</span> <span class="n">addr</span>
 
190
        <span class="k">if</span> <span class="n">filename</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
 
191
            <span class="n">head</span> <span class="o">=</span> <span class="n">src</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
 
192
        <span class="k">else</span><span class="p">:</span>
 
193
            <span class="n">head</span> <span class="o">=</span> <span class="n">module</span>
 
194
        <span class="k">if</span> <span class="n">call</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
 
195
            <span class="k">return</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">:</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">head</span><span class="p">,</span> <span class="n">call</span><span class="p">)</span>
 
196
        <span class="k">return</span> <span class="n">head</span>
 
197
        
 
198
    <span class="k">def</span> <span class="nf">setOutputStream</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">stream</span><span class="p">):</span>
 
199
        <span class="bp">self</span><span class="o">.</span><span class="n">stream</span> <span class="o">=</span> <span class="n">stream</span>
 
200
 
 
201
    <span class="k">def</span> <span class="nf">startTest</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">test</span><span class="p">):</span>
 
202
        <span class="n">adr</span> <span class="o">=</span> <span class="n">test</span><span class="o">.</span><span class="n">address</span><span class="p">()</span>
 
203
        <span class="k">if</span> <span class="n">adr</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">tests</span><span class="p">:</span>
 
204
            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">shouldSave</span> <span class="ow">or</span> <span class="n">adr</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_seen</span><span class="p">:</span>
 
205
                <span class="bp">self</span><span class="o">.</span><span class="n">stream</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">&#39;   &#39;</span><span class="p">)</span>
 
206
            <span class="k">else</span><span class="p">:</span>
 
207
                <span class="bp">self</span><span class="o">.</span><span class="n">stream</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">&#39;#</span><span class="si">%s</span><span class="s"> &#39;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">tests</span><span class="p">[</span><span class="n">adr</span><span class="p">])</span>
 
208
                <span class="bp">self</span><span class="o">.</span><span class="n">_seen</span><span class="p">[</span><span class="n">adr</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
 
209
            <span class="k">return</span>
 
210
        <span class="bp">self</span><span class="o">.</span><span class="n">tests</span><span class="p">[</span><span class="n">adr</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span>
 
211
        <span class="bp">self</span><span class="o">.</span><span class="n">stream</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">&#39;#</span><span class="si">%s</span><span class="s"> &#39;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">)</span>
 
212
        <span class="bp">self</span><span class="o">.</span><span class="n">id</span> <span class="o">+=</span> <span class="mi">1</span>
 
213
 
 
214
    <span class="k">def</span> <span class="nf">tr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
 
215
        <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;tr &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
 
216
        <span class="k">try</span><span class="p">:</span>
 
217
            <span class="n">key</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&#39;#&#39;</span><span class="p">,</span> <span class="s">&#39;&#39;</span><span class="p">))</span>
 
218
        <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
 
219
            <span class="k">return</span> <span class="n">name</span>
 
220
        <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Got key </span><span class="si">%s</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span>
 
221
        <span class="bp">self</span><span class="o">.</span><span class="n">shouldSave</span> <span class="o">=</span> <span class="bp">False</span>
 
222
        <span class="k">if</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">ids</span><span class="p">:</span>
 
223
            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">makeName</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ids</span><span class="p">[</span><span class="n">key</span><span class="p">])</span>
 
224
        <span class="k">return</span> <span class="n">name</span>
 
225
        
 
226
</pre></div>
 
227
 
 
228
 
 
229
    </div>
 
230
    <script src="http://www.google-analytics.com/urchin.js" 
 
231
            type="text/javascript">
 
232
    </script>
 
233
    <script type="text/javascript">
 
234
      _uacct = "UA-2236166-1";
 
235
      urchinTracker();
 
236
    </script>
 
237
  </body>
 
238
</html>
 
239