{5} Assigned, Active Tickets by Owner (Full Description) (324 matches)

List tickets assigned, group by ticket owner. This report demonstrates the use of full-row display.

jpellerin

Ticket Summary Component Milestone Severity Created
Description
#115 --with-doctest fails totaly with some of the docstrings nose:plugin:doctest blocker 01/02/07

nose's --with-doctest will fail with the following class doctest's:

class CatalogHeader:
    """Representation of a gettext catalog header"""
    def __init__(self, encoding='utf-8'):
        self.encoding = encoding
        self._comments = []
        self._headers = {
            ProjectIdVersion: (
                u'Project-Id-Version', u'PROJECT VERSION'
            ),
            ReportMsgidBugsTo: (
                u'Report-Msgid-Bugs-To', u'ADDRESS@EMAIL'
            ),
            POTCreationDate: (
                u'POT-Creation-Date', u'YEAR-MO-DA HO:MI+ZONE'
            ),
            PORevisionDate: (
                u'PO-Revision-Date', u'YEAR-MO-DA HO:MI+ZONE'
            ),
            LastTranslator: (
                u'Last-Translator', u'FULL NAME <EMAIL@ADDRESS>'
            ),
            LanguageTeam: (
                u'Language-Team', u'LANGUAGE <LL@li.org>'
            ),
            MIMEVersion: (
                u'MIME-Version', u'1.0'
            ),
            ContentType: (
                u'Content-Type', u'text/plain; charset=UTF-8'
            ),
            ContentTransferEncoding: (
                u'Content-Transfer-Encoding', u'8bit'
            ),
            PluralForms: (
                u'Plural-Forms', u'nplurals=INTEGER; plural=EXPRESSION;'
            )
        }
        self.fuzzy = False

    def __str__(self):
        output = self.generate()
        if not isinstance(output, str):
            output = output.encode(self.encoding)
        return output

    def __unicode__(self):
        output = self.generate()
        if not isinstance(output, unicode):
            output = unicode(output, self.encoding)
        return output

    def __repr__(self):
        return '<%s>' % self.__class__.__name__

    def generate(self):
        """Generates the catalog header output."""
        txt = u''.join([u'# %s\n' % x for x in self._comments]) + u'#\n'
        if self.fuzzy:
            txt += u'#, fuzzy\n'
        txt += u'msgid ""\nmsgstr""\n'
        for key, val in self._headers.values():
            txt += u'"%s: %s\\n"\n' % (key, val)
        return txt

    def comments(self):
        """Get the comments the header has

        >>> ch = CatalogHeader()
        >>> ch.add_comment('Translation Template for Project XY')
        >>> ch.add_comment('Copyright FooBar 2010')
        >>> ch.comments()
        [u'Translation Template for Project XY', u'Copyright FooBar 2010']
        """
        return self._comments

    def headers(self):
        """Returns the headers.

        >>> ch = CatalogHeader()
        >>> ch.headers()            #doctest: +SKIP
        [(u'Project-Id-Version', u'PROJECT VERSION'),
         (u'Report-Msgid-Bugs-To', u'ADDRESS@EMAIL'),
         (u'POT-Creation-Date', u'YEAR-MO-DA HO:MI+ZONE'),
         (u'PO-Revision-Date', u'YEAR-MO-DA HO:MI+ZONE'),
         (u'Last-Translator', u'FULL NAME <EMAIL@ADDRESS>'),
         (u'Language-Team', u'LANGUAGE <LL@li.org>'),
         (u'MIME-Version', u'1.0'),
         (u'Content-Type', u'text/plain; charset=UTF-8'),
         (u'Content-Transfer-Encoding', u'8bit'),
         (u'Plural-Forms', u'nplurals=INTEGER; plural=EXPRESSION;')]
        """
        return self._headers.values()

    def add_comment(self, comment):
        """Add comments to the catalog header.

        >>> ch = CatalogHeader()
        >>> ch.add_comment('Translation Template for Project XY')
        >>> ch.add_comment('Copyright FooBar 2010')
        >>> print ch
        # Translation Template for Project XY
        # Copyright FooBar 2010
        #
        msgid ""
        msgstr""
        "Project-Id-Version: PROJECT VERSION\n"
        "Report-Msgid-Bugs-To: ADDRESS@EMAIL\n"
        "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
        "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
        "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
        "Language-Team: LANGUAGE <LL@li.org>\n"
        "MIME-Version: 1.0\n"
        "Content-Type: text/plain; charset=UTF-8\n"
        "Content-Transfer-Encoding: 8bit\n"
        "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
        <BLANKLINE>
        """

        if comment not in self._comments:
            self._comments.append(unicode(comment))

    def set_project_id_version(self, project, version):
        """Set the 'Project-Id-Version' header.

        >>> ch = CatalogHeader()
        >>> ch.set_project_id_version('Foo Project', 0.2)
        >>> print ch
        #
        msgid ""
        msgstr""
        "Project-Id-Version: Foo Project 0.2\n"
        "Report-Msgid-Bugs-To: ADDRESS@EMAIL\n"
        "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
        "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
        "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
        "Language-Team: LANGUAGE <LL@li.org>\n"
        "MIME-Version: 1.0\n"
        "Content-Type: text/plain; charset=UTF-8\n"
        "Content-Transfer-Encoding: 8bit\n"
        "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
        <BLANKLINE>
        """
        self._headers[ProjectIdVersion] = (
            self._headers[ProjectIdVersion][0],
            u'%s %s' % (unicode(project), unicode(version))
        )

    def set_report_msgid_bugs_to(self, value):
        self._headers[ReportMsgidBugsTo] = (
            self._headers[ReportMsgidBugsTo][0],
            unicode(value)
        )

    def set_pot_creation_date(self, value):
        self._headers[POTCreationDate] = (
            self._headers[POTCreationDate][0],
            unicode(value)
        )

    def set_po_revision_date(self, value):
        self._headers[PORevisionDate] = (
            self._headers[PORevisionDate][0],
            unicode(value)
        )

    def set_last_translator(self, value):
        self._headers[LastTranslator] = (
            self._headers[LastTranslator][0],
            unicode(value)
        )

    def set_language_team(self, value):
        self._headers[LanguageTeam] = (
            self._headers[LanguageTeam][0],
            unicode(value)
        )

    def set_mime_version(self, value):
        self._headers[MIMEVersion] = (
            self._headers[MIMEVersion][0],
            unicode(value)
        )

    def set_content_type(self, ctype, charset):
        self._headers[ContentType] = (
            self._headers[ContentType][0],
            u'%s; charset=%s' % (unicode(ctype), unicode(charset))
        )

    def set_content_transfer_encoding(self, value):
        self._headers[ContentTransferEncoding] = (
            self._headers[ContentTransferEncoding][0],
            unicode(value)
        )

    def set_plural_forms(self, nplurals, expression):
        self._headers[PluralForms] = (
            self._headers[PluralForms][0],
            u'nplurals=%s; plural=%s;' % (unicode(nplurals), unicode(expression))
        )

    def set_custom_header(self, name, value):
        self._headers[len(self._headers)+1] = (unicode(name), unicode(value))

    def set_fuzzy(self):
        self.fuzzy = True

    def unset_fuzzy(self):
        self.fuzzy = False
nosetests --with-doctest catalog.CatalogHeader

----------------------------------------------------------------------
Ran 0 tests in 0.008s

OK

The problem seems to be on methods add_comment() and set_project_id_version().


#85 Is it possible to have more control over TestProgram configuration when running the nose from within python code? nose 1.0 enhancement 08/28/06

I am trying to use nose with the NoseXML plugin. When I call:

nose.run(argv=['--with-nosexml','--xml-report-file=some_file']),

I get my NoseXML output in some_file. This is nice.

On the other hand, it would be nicer if I could specify a StringIO that the NoseXML could write to instead of a file in the filesystem.

I have managed to do this by poking around inside the nose.core.TestProgram? class and nose.core.configure function, but my solution is not really acceptable for long-term use. I manually insert a StringIO into the configuration information after argv is parsed and before it is passed to the plugins.

Please consider providing a different means for specifying configuration information to nose when it is run using nose.run(). I would be glad to help with this if it would be an acceptable change.

And if I've missed the proper way to do something like this, please let me know.

Thanks, Matthew Desmarais


#85 Is it possible to have more control over TestProgram configuration when running the nose from within python code? nose 1.0 enhancement 08/28/06

I am trying to use nose with the NoseXML plugin. When I call:

nose.run(argv=['--with-nosexml','--xml-report-file=some_file']),

I get my NoseXML output in some_file. This is nice.

On the other hand, it would be nicer if I could specify a StringIO that the NoseXML could write to instead of a file in the filesystem.

I have managed to do this by poking around inside the nose.core.TestProgram? class and nose.core.configure function, but my solution is not really acceptable for long-term use. I manually insert a StringIO into the configuration information after argv is parsed and before it is passed to the plugins.

Please consider providing a different means for specifying configuration information to nose when it is run using nose.run(). I would be glad to help with this if it would be an acceptable change.

And if I've missed the proper way to do something like this, please let me know.

Thanks, Matthew Desmarais


#85 Is it possible to have more control over TestProgram configuration when running the nose from within python code? nose 1.0 enhancement 08/28/06

I am trying to use nose with the NoseXML plugin. When I call:

nose.run(argv=['--with-nosexml','--xml-report-file=some_file']),

I get my NoseXML output in some_file. This is nice.

On the other hand, it would be nicer if I could specify a StringIO that the NoseXML could write to instead of a file in the filesystem.

I have managed to do this by poking around inside the nose.core.TestProgram? class and nose.core.configure function, but my solution is not really acceptable for long-term use. I manually insert a StringIO into the configuration information after argv is parsed and before it is passed to the plugins.

Please consider providing a different means for specifying configuration information to nose when it is run using nose.run(). I would be glad to help with this if it would be an acceptable change.

And if I've missed the proper way to do something like this, please let me know.

Thanks, Matthew Desmarais


#85 Is it possible to have more control over TestProgram configuration when running the nose from within python code? nose 1.0 enhancement 08/28/06

I am trying to use nose with the NoseXML plugin. When I call:

nose.run(argv=['--with-nosexml','--xml-report-file=some_file']),

I get my NoseXML output in some_file. This is nice.

On the other hand, it would be nicer if I could specify a StringIO that the NoseXML could write to instead of a file in the filesystem.

I have managed to do this by poking around inside the nose.core.TestProgram? class and nose.core.configure function, but my solution is not really acceptable for long-term use. I manually insert a StringIO into the configuration information after argv is parsed and before it is passed to the plugins.

Please consider providing a different means for specifying configuration information to nose when it is run using nose.run(). I would be glad to help with this if it would be an acceptable change.

And if I've missed the proper way to do something like this, please let me know.

Thanks, Matthew Desmarais


#89 would like common interface for all test wrapper objects nose 0.10 enhancement 09/11/06

It would be convenient/efficient/and future-safe to access all of nose's internal test wrappers with a common interface. That is, convenient for the nose-watch plugin ;)

Here is an initial idea, open to suggestions. I should point out that these are the only things that nose-watch needs to access, so a complete interface might want more.

  • wrapper.getTestObject()
    • the actual test (i.e. FunctionTestCase.testFunc or TestModule.module or unittest.TestCase._'_class_'_)
  • wrapper.getTestFile()
    • this one has proven itself really tricky and maybe nose has a better way to do it since it is already looking for tests in the filesystem. Currently I am working around unloadable modules by overloading the load_source() method in ihooks.Hooks. There is also a big problem that I'm not sure is solvable in aliased modules (i.e. "from main import foo" when when foo.py exists in main/foo/foo.py, concealed by main/foo/init.py). I think inspect.getfile() is the one to blame for that, but I haven't looked into it too far other than knowing it's not working how I would like it.
  • wrapper.getTestAddress()
    • get a string "address" of a test. That is, a name that could be put on the command line of a nosetests call to run this test again. I'm thinking that any unittest.TestCase method could only return the filename of its module?

We should talk before you start work on this ... or perhaps I will just add a patch or two to this ticket if I get around to it first. I'll wait until 0.9.1 is out the door.


#89 would like common interface for all test wrapper objects nose 0.10 enhancement 09/11/06

It would be convenient/efficient/and future-safe to access all of nose's internal test wrappers with a common interface. That is, convenient for the nose-watch plugin ;)

Here is an initial idea, open to suggestions. I should point out that these are the only things that nose-watch needs to access, so a complete interface might want more.

  • wrapper.getTestObject()
    • the actual test (i.e. FunctionTestCase.testFunc or TestModule.module or unittest.TestCase._'_class_'_)
  • wrapper.getTestFile()
    • this one has proven itself really tricky and maybe nose has a better way to do it since it is already looking for tests in the filesystem. Currently I am working around unloadable modules by overloading the load_source() method in ihooks.Hooks. There is also a big problem that I'm not sure is solvable in aliased modules (i.e. "from main import foo" when when foo.py exists in main/foo/foo.py, concealed by main/foo/init.py). I think inspect.getfile() is the one to blame for that, but I haven't looked into it too far other than knowing it's not working how I would like it.
  • wrapper.getTestAddress()
    • get a string "address" of a test. That is, a name that could be put on the command line of a nosetests call to run this test again. I'm thinking that any unittest.TestCase method could only return the filename of its module?

We should talk before you start work on this ... or perhaps I will just add a patch or two to this ticket if I get around to it first. I'll wait until 0.9.1 is out the door.


#89 would like common interface for all test wrapper objects nose 0.10 enhancement 09/11/06

It would be convenient/efficient/and future-safe to access all of nose's internal test wrappers with a common interface. That is, convenient for the nose-watch plugin ;)

Here is an initial idea, open to suggestions. I should point out that these are the only things that nose-watch needs to access, so a complete interface might want more.

  • wrapper.getTestObject()
    • the actual test (i.e. FunctionTestCase.testFunc or TestModule.module or unittest.TestCase._'_class_'_)
  • wrapper.getTestFile()
    • this one has proven itself really tricky and maybe nose has a better way to do it since it is already looking for tests in the filesystem. Currently I am working around unloadable modules by overloading the load_source() method in ihooks.Hooks. There is also a big problem that I'm not sure is solvable in aliased modules (i.e. "from main import foo" when when foo.py exists in main/foo/foo.py, concealed by main/foo/init.py). I think inspect.getfile() is the one to blame for that, but I haven't looked into it too far other than knowing it's not working how I would like it.
  • wrapper.getTestAddress()
    • get a string "address" of a test. That is, a name that could be put on the command line of a nosetests call to run this test again. I'm thinking that any unittest.TestCase method could only return the filename of its module?

We should talk before you start work on this ... or perhaps I will just add a patch or two to this ticket if I get around to it first. I'll wait until 0.9.1 is out the door.


#89 would like common interface for all test wrapper objects nose 0.10 enhancement 09/11/06

It would be convenient/efficient/and future-safe to access all of nose's internal test wrappers with a common interface. That is, convenient for the nose-watch plugin ;)

Here is an initial idea, open to suggestions. I should point out that these are the only things that nose-watch needs to access, so a complete interface might want more.

  • wrapper.getTestObject()
    • the actual test (i.e. FunctionTestCase.testFunc or TestModule.module or unittest.TestCase._'_class_'_)
  • wrapper.getTestFile()
    • this one has proven itself really tricky and maybe nose has a better way to do it since it is already looking for tests in the filesystem. Currently I am working around unloadable modules by overloading the load_source() method in ihooks.Hooks. There is also a big problem that I'm not sure is solvable in aliased modules (i.e. "from main import foo" when when foo.py exists in main/foo/foo.py, concealed by main/foo/init.py). I think inspect.getfile() is the one to blame for that, but I haven't looked into it too far other than knowing it's not working how I would like it.
  • wrapper.getTestAddress()
    • get a string "address" of a test. That is, a name that could be put on the command line of a nosetests call to run this test again. I'm thinking that any unittest.TestCase method could only return the filename of its module?

We should talk before you start work on this ... or perhaps I will just add a patch or two to this ticket if I get around to it first. I'll wait until 0.9.1 is out the door.


#100 nosetests man page nose 0.9.2 enhancement 10/28/06

Install a man page for nosetests on install. A man page contributed by Gustavo Noronha Silva is attached to this ticket.


#100 nosetests man page nose 0.9.2 enhancement 10/28/06

Install a man page for nosetests on install. A man page contributed by Gustavo Noronha Silva is attached to this ticket.


#100 nosetests man page nose 0.9.2 enhancement 10/28/06

Install a man page for nosetests on install. A man page contributed by Gustavo Noronha Silva is attached to this ticket.


#100 nosetests man page nose 0.9.2 enhancement 10/28/06

Install a man page for nosetests on install. A man page contributed by Gustavo Noronha Silva is attached to this ticket.


#110 isolation plugin nose:plugins 0.9.2 enhancement 12/02/06

Include a plugin in core that resets the state of sys.modules between after each test module is run.


#110 isolation plugin nose:plugins 0.9.2 enhancement 12/02/06

Include a plugin in core that resets the state of sys.modules between after each test module is run.


#110 isolation plugin nose:plugins 0.9.2 enhancement 12/02/06

Include a plugin in core that resets the state of sys.modules between after each test module is run.


#110 isolation plugin nose:plugins 0.9.2 enhancement 12/02/06

Include a plugin in core that resets the state of sys.modules between after each test module is run.


#102 Nose frontpage installation instructions in error nose 0.9.2 minor 11/05/06

These instructions are wrong:

Install nose using setuptools:

easy_install nose

Or, if you don't have setuptools installed, use the download link 
at right to download the source package, and install in the normal
fashion: Ungzip and untar the source package, cd to the new
directory, and:

python setup.py install

You cannot run python setup.py install without setup_tools upgraded to at least the version that nose is configured to work with, as per this error message:

$ sudo python setup.py install                                                ~/src/nose-0.9.1
The required version of setuptools (>=0.6c2) is not available, and
can't be installed while this script is running. Please install
 a more recent version first.

(Currently using setuptools 0.6c1 (/usr/lib/python2.4/site-packages/setuptools-0.6c1-py2.4.egg))
zsh: 32149 exit 2     sudo python setup.py install

I recommend ammending the instructions to say

python ez_setup.py
python setup.py install

and note that the installation will cause easy_install to be installed. Perhaps a link to ez_setup.py would be good too.


#102 Nose frontpage installation instructions in error nose 0.9.2 minor 11/05/06

These instructions are wrong:

Install nose using setuptools:

easy_install nose

Or, if you don't have setuptools installed, use the download link 
at right to download the source package, and install in the normal
fashion: Ungzip and untar the source package, cd to the new
directory, and:

python setup.py install

You cannot run python setup.py install without setup_tools upgraded to at least the version that nose is configured to work with, as per this error message:

$ sudo python setup.py install                                                ~/src/nose-0.9.1
The required version of setuptools (>=0.6c2) is not available, and
can't be installed while this script is running. Please install
 a more recent version first.

(Currently using setuptools 0.6c1 (/usr/lib/python2.4/site-packages/setuptools-0.6c1-py2.4.egg))
zsh: 32149 exit 2     sudo python setup.py install

I recommend ammending the instructions to say

python ez_setup.py
python setup.py install

and note that the installation will cause easy_install to be installed. Perhaps a link to ez_setup.py would be good too.


#102 Nose frontpage installation instructions in error nose 0.9.2 minor 11/05/06

These instructions are wrong:

Install nose using setuptools:

easy_install nose

Or, if you don't have setuptools installed, use the download link 
at right to download the source package, and install in the normal
fashion: Ungzip and untar the source package, cd to the new
directory, and:

python setup.py install

You cannot run python setup.py install without setup_tools upgraded to at least the version that nose is configured to work with, as per this error message:

$ sudo python setup.py install                                                ~/src/nose-0.9.1
The required version of setuptools (>=0.6c2) is not available, and
can't be installed while this script is running. Please install
 a more recent version first.

(Currently using setuptools 0.6c1 (/usr/lib/python2.4/site-packages/setuptools-0.6c1-py2.4.egg))
zsh: 32149 exit 2     sudo python setup.py install

I recommend ammending the instructions to say

python ez_setup.py
python setup.py install

and note that the installation will cause easy_install to be installed. Perhaps a link to ez_setup.py would be good too.


#102 Nose frontpage installation instructions in error nose 0.9.2 minor 11/05/06

These instructions are wrong:

Install nose using setuptools:

easy_install nose

Or, if you don't have setuptools installed, use the download link 
at right to download the source package, and install in the normal
fashion: Ungzip and untar the source package, cd to the new
directory, and:

python setup.py install

You cannot run python setup.py install without setup_tools upgraded to at least the version that nose is configured to work with, as per this error message:

$ sudo python setup.py install                                                ~/src/nose-0.9.1
The required version of setuptools (>=0.6c2) is not available, and
can't be installed while this script is running. Please install
 a more recent version first.

(Currently using setuptools 0.6c1 (/usr/lib/python2.4/site-packages/setuptools-0.6c1-py2.4.egg))
zsh: 32149 exit 2     sudo python setup.py install

I recommend ammending the instructions to say

python ez_setup.py
python setup.py install

and note that the installation will cause easy_install to be installed. Perhaps a link to ez_setup.py would be good too.


#13 update selftest.py nose:selftest normal 03/15/06

Update selftest to account for the new tests in units and unit support.


#13 update selftest.py nose:selftest normal 03/15/06

Update selftest to account for the new tests in units and unit support.


#13 update selftest.py nose:selftest normal 03/15/06

Update selftest to account for the new tests in units and unit support.


#13 update selftest.py nose:selftest normal 03/15/06

Update selftest to account for the new tests in units and unit support.


#47 optimize startup time for lib/ test/ and package/ test/ cases nose normal 04/18/06

Startup time for layouts like:

- lib/ - test/

Or:

- package/ - test/

Is very bad, since nose examines everyting in package/ and lib/ before looking in test/. This should be fixable, since it's only looking in the libs first to be sure that their root dirs are in sys.path before the tests are loaded.


#47 optimize startup time for lib/ test/ and package/ test/ cases nose normal 04/18/06

Startup time for layouts like:

- lib/ - test/

Or:

- package/ - test/

Is very bad, since nose examines everyting in package/ and lib/ before looking in test/. This should be fixable, since it's only looking in the libs first to be sure that their root dirs are in sys.path before the tests are loaded.


#47 optimize startup time for lib/ test/ and package/ test/ cases nose normal 04/18/06

Startup time for layouts like:

- lib/ - test/

Or:

- package/ - test/

Is very bad, since nose examines everyting in package/ and lib/ before looking in test/. This should be fixable, since it's only looking in the libs first to be sure that their root dirs are in sys.path before the tests are loaded.


#47 optimize startup time for lib/ test/ and package/ test/ cases nose normal 04/18/06

Startup time for layouts like:

- lib/ - test/

Or:

- package/ - test/

Is very bad, since nose examines everyting in package/ and lib/ before looking in test/. This should be fixable, since it's only looking in the libs first to be sure that their root dirs are in sys.path before the tests are loaded.


#57 .noserc nose 1.0 normal 05/14/06

Support reading options from a .noserc file or other config file. Format should be the same as command line args (long form), minus the --.


#57 .noserc nose 1.0 normal 05/14/06

Support reading options from a .noserc file or other config file. Format should be the same as command line args (long form), minus the --.


#57 .noserc nose 1.0 normal 05/14/06

Support reading options from a .noserc file or other config file. Format should be the same as command line args (long form), minus the --.


#57 .noserc nose 1.0 normal 05/14/06

Support reading options from a .noserc file or other config file. Format should be the same as command line args (long form), minus the --.


#84 Generator tests with mutable arguments = bad nose 0.10 normal 08/25/06

From Kevin Dangoor:

A coworker found an interesting bug in test generators. Apparently,
py.test does the same thing. Maybe this is architecturally difficult
to contend with. Here's the test:

#! /usr/bin/env python

def test_list_loop():
   def check_list_loop(ls, len_expected):
       print ls
       assert len(ls) == len_expected
   ls = list()
   for i in range(0, 6):
       ls.append(i)
       yield check_list_loop, ls, i + 1

It appears that each yielded test is not run immediately, but is
collected up and *then* run. In this particular case, that fails
because a mutable object is involved (and mutated as part of the test
running). Changing that last line to

       yield check_list_loop, ls[:], i + 1

makes it work, because you're dealing with copies of the list each time.

#84 Generator tests with mutable arguments = bad nose 0.10 normal 08/25/06

From Kevin Dangoor:

A coworker found an interesting bug in test generators. Apparently,
py.test does the same thing. Maybe this is architecturally difficult
to contend with. Here's the test:

#! /usr/bin/env python

def test_list_loop():
   def check_list_loop(ls, len_expected):
       print ls
       assert len(ls) == len_expected
   ls = list()
   for i in range(0, 6):
       ls.append(i)
       yield check_list_loop, ls, i + 1

It appears that each yielded test is not run immediately, but is
collected up and *then* run. In this particular case, that fails
because a mutable object is involved (and mutated as part of the test
running). Changing that last line to

       yield check_list_loop, ls[:], i + 1

makes it work, because you're dealing with copies of the list each time.

#84 Generator tests with mutable arguments = bad nose 0.10 normal 08/25/06

From Kevin Dangoor:

A coworker found an interesting bug in test generators. Apparently,
py.test does the same thing. Maybe this is architecturally difficult
to contend with. Here's the test:

#! /usr/bin/env python

def test_list_loop():
   def check_list_loop(ls, len_expected):
       print ls
       assert len(ls) == len_expected
   ls = list()
   for i in range(0, 6):
       ls.append(i)
       yield check_list_loop, ls, i + 1

It appears that each yielded test is not run immediately, but is
collected up and *then* run. In this particular case, that fails
because a mutable object is involved (and mutated as part of the test
running). Changing that last line to

       yield check_list_loop, ls[:], i + 1

makes it work, because you're dealing with copies of the list each time.

#84 Generator tests with mutable arguments = bad nose 0.10 normal 08/25/06

From Kevin Dangoor:

A coworker found an interesting bug in test generators. Apparently,
py.test does the same thing. Maybe this is architecturally difficult
to contend with. Here's the test:

#! /usr/bin/env python

def test_list_loop():
   def check_list_loop(ls, len_expected):
       print ls
       assert len(ls) == len_expected
   ls = list()
   for i in range(0, 6):
       ls.append(i)
       yield check_list_loop, ls, i + 1

It appears that each yielded test is not run immediately, but is
collected up and *then* run. In this particular case, that fails
because a mutable object is involved (and mutated as part of the test
running). Changing that last line to

       yield check_list_loop, ls[:], i + 1

makes it work, because you're dealing with copies of the list each time.

#104 rewrite test loading/importing/suites to be easier to follow nose 0.10 normal 11/13/06

The code for test loading, suites and imports is convoluted and difficult to follow. It should be simplified and clarified.


#104 rewrite test loading/importing/suites to be easier to follow nose 0.10 normal 11/13/06

The code for test loading, suites and imports is convoluted and difficult to follow. It should be simplified and clarified.


#104 rewrite test loading/importing/suites to be easier to follow nose 0.10 normal 11/13/06

The code for test loading, suites and imports is convoluted and difficult to follow. It should be simplified and clarified.


#104 rewrite test loading/importing/suites to be easier to follow nose 0.10 normal 11/13/06

The code for test loading, suites and imports is convoluted and difficult to follow. It should be simplified and clarified.


#106 Revise long description in setup.py nose 0.9.2 normal 11/21/06

Revise the long description in setup.py to be more accurate and descriptive.


#106 Revise long description in setup.py nose 0.9.2 normal 11/21/06

Revise the long description in setup.py to be more accurate and descriptive.


#106 Revise long description in setup.py nose 0.9.2 normal 11/21/06

Revise the long description in setup.py to be more accurate and descriptive.


#106 Revise long description in setup.py nose 0.9.2 normal 11/21/06

Revise the long description in setup.py to be more accurate and descriptive.


#108 Generate and post plugin docs nose:plugins 0.9.2 normal 11/22/06

Generate HTML docs for built-in plugins and post them to the site and wiki.


#108 Generate and post plugin docs nose:plugins 0.9.2 normal 11/22/06

Generate HTML docs for built-in plugins and post them to the site and wiki.


#108 Generate and post plugin docs nose:plugins 0.9.2 normal 11/22/06

Generate HTML docs for built-in plugins and post them to the site and wiki.


#108 Generate and post plugin docs nose:plugins 0.9.2 normal 11/22/06

Generate HTML docs for built-in plugins and post them to the site and wiki.


#109 doctest vs coverage nose:plugin:doctest 0.9.2 normal 12/01/06

doctest requires a patch (or monkeypatch) to work correctly with the coverage module.

ref:

http://www.nedbatchelder.com/code/modules/coverage.html

http://svn.zope.org/Zope3/trunk/src/zope/testing/doctest.py?rev=28679&r1=28703&r2=28705

Since nose can't patch a user's doctest directly, we'll have to monkeypatch in a revise _OutputRedirectingPdb?.


#109 doctest vs coverage nose:plugin:doctest 0.9.2 normal 12/01/06

doctest requires a patch (or monkeypatch) to work correctly with the coverage module.

ref:

http://www.nedbatchelder.com/code/modules/coverage.html

http://svn.zope.org/Zope3/trunk/src/zope/testing/doctest.py?rev=28679&r1=28703&r2=28705

Since nose can't patch a user's doctest directly, we'll have to monkeypatch in a revise _OutputRedirectingPdb?.


#109 doctest vs coverage nose:plugin:doctest 0.9.2 normal 12/01/06

doctest requires a patch (or monkeypatch) to work correctly with the coverage module.

ref:

http://www.nedbatchelder.com/code/modules/coverage.html

http://svn.zope.org/Zope3/trunk/src/zope/testing/doctest.py?rev=28679&r1=28703&r2=28705

Since nose can't patch a user's doctest directly, we'll have to monkeypatch in a revise _OutputRedirectingPdb?.


#109 doctest vs coverage nose:plugin:doctest 0.9.2 normal 12/01/06

doctest requires a patch (or monkeypatch) to work correctly with the coverage module.

ref:

http://www.nedbatchelder.com/code/modules/coverage.html

http://svn.zope.org/Zope3/trunk/src/zope/testing/doctest.py?rev=28679&r1=28703&r2=28705

Since nose can't patch a user's doctest directly, we'll have to monkeypatch in a revise _OutputRedirectingPdb?.


#112 test can't be run from package directory -- misleading INFO message nose 0.9.2 normal 12/11/06

I have a small module, i.e. a dir (say, package/) which has an init.py, a foo.py and a test_foo.py test_foo.py has the line 'import foo' in it, as it contains the test code for the code in foo.py

I try to run the tests by running 'nosetests -vv' in the dir. I see the line "nose.core: INFO: Working directory is a package; adding to sys.path" appear, but the tests won't run, I get an ImportError?: No module named foo

The problem is that the message "Working directory is a package; adding to sys.path" is misleading. I doesn't add the current directory, it adds the _parent_ of the current directory to sys.path. (Due to the way add_path() is implemented in sys.path)

I'm not sure how to characterise this problem. Simply having 'import package.foo' instead of 'import foo' in test_foo.py makes it work. Is there any reason to prohibit using 'import foo' in this case? Or maybe using add_path() for adding the current working directory is a bug?


#112 test can't be run from package directory -- misleading INFO message nose 0.9.2 normal 12/11/06

I have a small module, i.e. a dir (say, package/) which has an init.py, a foo.py and a test_foo.py test_foo.py has the line 'import foo' in it, as it contains the test code for the code in foo.py

I try to run the tests by running 'nosetests -vv' in the dir. I see the line "nose.core: INFO: Working directory is a package; adding to sys.path" appear, but the tests won't run, I get an ImportError?: No module named foo

The problem is that the message "Working directory is a package; adding to sys.path" is misleading. I doesn't add the current directory, it adds the _parent_ of the current directory to sys.path. (Due to the way add_path() is implemented in sys.path)

I'm not sure how to characterise this problem. Simply having 'import package.foo' instead of 'import foo' in test_foo.py makes it work. Is there any reason to prohibit using 'import foo' in this case? Or maybe using add_path() for adding the current working directory is a bug?


#112 test can't be run from package directory -- misleading INFO message nose 0.9.2 normal 12/11/06

I have a small module, i.e. a dir (say, package/) which has an init.py, a foo.py and a test_foo.py test_foo.py has the line 'import foo' in it, as it contains the test code for the code in foo.py

I try to run the tests by running 'nosetests -vv' in the dir. I see the line "nose.core: INFO: Working directory is a package; adding to sys.path" appear, but the tests won't run, I get an ImportError?: No module named foo

The problem is that the message "Working directory is a package; adding to sys.path" is misleading. I doesn't add the current directory, it adds the _parent_ of the current directory to sys.path. (Due to the way add_path() is implemented in sys.path)

I'm not sure how to characterise this problem. Simply having 'import package.foo' instead of 'import foo' in test_foo.py makes it work. Is there any reason to prohibit using 'import foo' in this case? Or maybe using add_path() for adding the current working directory is a bug?


#112 test can't be run from package directory -- misleading INFO message nose 0.9.2 normal 12/11/06

I have a small module, i.e. a dir (say, package/) which has an init.py, a foo.py and a test_foo.py test_foo.py has the line 'import foo' in it, as it contains the test code for the code in foo.py

I try to run the tests by running 'nosetests -vv' in the dir. I see the line "nose.core: INFO: Working directory is a package; adding to sys.path" appear, but the tests won't run, I get an ImportError?: No module named foo

The problem is that the message "Working directory is a package; adding to sys.path" is misleading. I doesn't add the current directory, it adds the _parent_ of the current directory to sys.path. (Due to the way add_path() is implemented in sys.path)

I'm not sure how to characterise this problem. Simply having 'import package.foo' instead of 'import foo' in test_foo.py makes it work. Is there any reason to prohibit using 'import foo' in this case? Or maybe using add_path() for adding the current working directory is a bug?


#113 python setup.py nosetests --stop was raise TypeError nose 0.9.2 normal 12/11/06

I'm not sure if this would be true across all extra options sent to setup.py nosetests, however the fix seemed simple enough (the internals needed to handle integer values). A rough patch is following (this got it working).

All this, using nose revision 143 and setuptools 0.6c3


#113 python setup.py nosetests --stop was raise TypeError nose 0.9.2 normal 12/11/06

I'm not sure if this would be true across all extra options sent to setup.py nosetests, however the fix seemed simple enough (the internals needed to handle integer values). A rough patch is following (this got it working).

All this, using nose revision 143 and setuptools 0.6c3


#113 python setup.py nosetests --stop was raise TypeError nose 0.9.2 normal 12/11/06

I'm not sure if this would be true across all extra options sent to setup.py nosetests, however the fix seemed simple enough (the internals needed to handle integer values). A rough patch is following (this got it working).

All this, using nose revision 143 and setuptools 0.6c3


#113 python setup.py nosetests --stop was raise TypeError nose 0.9.2 normal 12/11/06

I'm not sure if this would be true across all extra options sent to setup.py nosetests, however the fix seemed simple enough (the internals needed to handle integer values). A rough patch is following (this got it working).

All this, using nose revision 143 and setuptools 0.6c3


#85 Is it possible to have more control over TestProgram configuration when running the nose from within python code? nose 1.0 enhancement 08/28/06

I am trying to use nose with the NoseXML plugin. When I call:

nose.run(argv=['--with-nosexml','--xml-report-file=some_file']),

I get my NoseXML output in some_file. This is nice.

On the other hand, it would be nicer if I could specify a StringIO that the NoseXML could write to instead of a file in the filesystem.

I have managed to do this by poking around inside the nose.core.TestProgram? class and nose.core.configure function, but my solution is not really acceptable for long-term use. I manually insert a StringIO into the configuration information after argv is parsed and before it is passed to the plugins.

Please consider providing a different means for specifying configuration information to nose when it is run using nose.run(). I would be glad to help with this if it would be an acceptable change.

And if I've missed the proper way to do something like this, please let me know.

Thanks, Matthew Desmarais


#85 Is it possible to have more control over TestProgram configuration when running the nose from within python code? nose 1.0 enhancement 08/28/06

I am trying to use nose with the NoseXML plugin. When I call:

nose.run(argv=['--with-nosexml','--xml-report-file=some_file']),

I get my NoseXML output in some_file. This is nice.

On the other hand, it would be nicer if I could specify a StringIO that the NoseXML could write to instead of a file in the filesystem.

I have managed to do this by poking around inside the nose.core.TestProgram? class and nose.core.configure function, but my solution is not really acceptable for long-term use. I manually insert a StringIO into the configuration information after argv is parsed and before it is passed to the plugins.

Please consider providing a different means for specifying configuration information to nose when it is run using nose.run(). I would be glad to help with this if it would be an acceptable change.

And if I've missed the proper way to do something like this, please let me know.

Thanks, Matthew Desmarais


#85 Is it possible to have more control over TestProgram configuration when running the nose from within python code? nose 1.0 enhancement 08/28/06

I am trying to use nose with the NoseXML plugin. When I call:

nose.run(argv=['--with-nosexml','--xml-report-file=some_file']),

I get my NoseXML output in some_file. This is nice.

On the other hand, it would be nicer if I could specify a StringIO that the NoseXML could write to instead of a file in the filesystem.

I have managed to do this by poking around inside the nose.core.TestProgram? class and nose.core.configure function, but my solution is not really acceptable for long-term use. I manually insert a StringIO into the configuration information after argv is parsed and before it is passed to the plugins.

Please consider providing a different means for specifying configuration information to nose when it is run using nose.run(). I would be glad to help with this if it would be an acceptable change.

And if I've missed the proper way to do something like this, please let me know.

Thanks, Matthew Desmarais


#85 Is it possible to have more control over TestProgram configuration when running the nose from within python code? nose 1.0 enhancement 08/28/06

I am trying to use nose with the NoseXML plugin. When I call:

nose.run(argv=['--with-nosexml','--xml-report-file=some_file']),

I get my NoseXML output in some_file. This is nice.

On the other hand, it would be nicer if I could specify a StringIO that the NoseXML could write to instead of a file in the filesystem.

I have managed to do this by poking around inside the nose.core.TestProgram? class and nose.core.configure function, but my solution is not really acceptable for long-term use. I manually insert a StringIO into the configuration information after argv is parsed and before it is passed to the plugins.

Please consider providing a different means for specifying configuration information to nose when it is run using nose.run(). I would be glad to help with this if it would be an acceptable change.

And if I've missed the proper way to do something like this, please let me know.

Thanks, Matthew Desmarais


#89 would like common interface for all test wrapper objects nose