[New-bugs-announce] [issue9330] assertIn should check for membership support before testing

Brian Curtin report at bugs.python.org
Thu Jul 22 19:11:20 CEST 2010


New submission from Brian Curtin <curtin at acm.org>:

A recent sysconfig test which should have been skipped on Windows (now fixed) exposed a bug in the assertIn/assertNotIn methods. If the "container" you are testing doesn't support membership testing or iteration, such as None value when a previous call fails, the test is then an error rather than a fail.

Before:
======================================================================
ERROR: test_ldshared_value (test.test_sysconfig.TestSysConfig)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "c:\python-dev\py3k\lib\test\test_sysconfig.py", line 285, in test_ldshar
ed_value
    self.assertIn(ldflags, ldshared)
  File "c:\python-dev\py3k\lib\unittest\case.py", line 797, in assertIn
    if member not in container:
TypeError: argument of type 'NoneType' is not iterable


I believe this should be a fail with AssertionError, rather than an error with TypeError.

======================================================================
FAIL: test_ldshared_value (test.test_sysconfig.TestSysConfig)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "c:\python-dev\py3k\lib\test\test_sysconfig.py", line 285, in test_ldshar
ed_value
    self.assertIn(ldflags, ldshared)
AssertionError: None does not support the `in` operator



The patch adds a check that __contains__, __iter__, or __getitem__ exist on the object and fails the test if none of those are found. It also includes a few test updates.

----------
assignee: michael.foord
components: Library (Lib)
files: membership_check.diff
keywords: needs review, patch, patch
messages: 111193
nosy: brian.curtin, michael.foord
priority: normal
severity: normal
stage: patch review
status: open
title: assertIn should check for membership support before testing
type: behavior
versions: Python 2.7, Python 3.2
Added file: http://bugs.python.org/file18126/membership_check.diff

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue9330>
_______________________________________


More information about the New-bugs-announce mailing list