[Zope-dev] Manuel Beta

Benji York benji at zope.com
Wed Jun 24 18:38:09 EDT 2009


On Wed, Jun 24, 2009 at 6:07 PM, Chris Withers<chris at simplistix.co.uk> wrote:
> Benji York wrote:
>>
>> --- begin quote ---
>>
>> Contents of myfile.zcml::
>>
>>    <configure xmlns="http://namespaces.zope.org/zope">
>>    blah blah blah
>>    </configure>
>>
>> .. -> config
>>
>>    >>> import tmpfile
>>    >>> f = tmpfile.mkstemp()
>>    >>> f.write(config)
>>    >>> f.close()
>
> Okay, but this looks like I'd have to write the above every time I wanted to
> save a file

As given, you are correct.

A helper function could be written to shorten it to something like this:

--- begin quote ---

Contents of myfile.zcml::

   <configure xmlns="http://namespaces.zope.org/zope">
   blah blah blah
   </configure>

.. -> config

    >>> file_name = temp_file_helper(config)
    >>> zope.configuration.xmlconfig.file(file_name)

--- end quote ---

> *and* the saving code would show in the docs, or am I missing
> something?

No, the code wouldn't be visible.  The four lines of code after
".. -> config" are in a reST comment (".." introduces a comment block).

> In fact, thinking about it, it'd be great if there were two plugins:
>
> - one to write files that code being tested could access from disk

I think the version above with the helper does a reasonable job for this
use case.

> - one to read files that code being tested had output and check their
> contents were as expected.

I'd do that with something like this:

--- begin quote ---

Contents of myfile.zcml::

   <configure xmlns="http://namespaces.zope.org/zope">
   blah blah blah
   </configure>

.. -> config

    >>> file, file_name = make_a_named_temp_file()
    >>> generate_a_file(fn)
    >>> file.read() == config
    True

--- end quote ---

Alternatively, you might make a purpose-built Manuel plug-in to do
exactly what you want.  Maybe with syntax like...

--- begin quote ---

Contents of myfile.zcml::

   <configure xmlns="http://namespaces.zope.org/zope">
   blah blah blah
   </configure>

.. verify-file: name_of_function_to_do_verification

--- end quote ---

Where "name_of_function_to_do_verification" would be passed the file
name (extracted from the line before the literal block) and the contents
of the literal block.  Your plug-in could provide a formatter that would
show you a nice diff if there is a discrepancy.

The code in manuel.capture would be a good starting point for something
like that.
-- 
Benji York
Senior Software Engineer
Zope Corporation


More information about the Zope-Dev mailing list