Skip to content

minimock broken hard on python2.7 if 'future' is installed #5

@mgorny

Description

@mgorny

I've just noticed that having [https://pypi.python.org/pypi/future future] package installed system-wide is breaking minimock for python2.7. This causes a significant pain for system packaging. Is there any chance you could look into making minimock detect that and work around the stupid idea?

To reproduce:

python2.7 -m virtualenv v27
. v27/bin/activate
pip install future
python -m doctest minimock.py

This causes the following lot of failures for me:

**********************************************************************
File "minimock.py", line 363, in minimock.TraceTracker.check
Failed example:
    m.some_meth('arg1')
Exception raised:
    Traceback (most recent call last):
      File "/usr/lib64/python2.7/doctest.py", line 1315, in __run
        compileflags, 1) in test.globs
      File "<doctest minimock.TraceTracker.check[2]>", line 1, in <module>
        m.some_meth('arg1')
      File "minimock.py", line 529, in __call__
        self.mock_tracker.call(self.mock_name, *args, **kw)
      File "minimock.py", line 323, in call
        self.file.write(msg)
    TypeError: unicode argument expected, got 'str'
**********************************************************************
File "minimock.py", line 364, in minimock.TraceTracker.check
Failed example:
    tt.check("Called mock_obj.some_meth('arg1')")
Expected:
    True
Got:
    False
**********************************************************************
File "minimock.py", line 367, in minimock.TraceTracker.check
Failed example:
    m.some_meth('arg2')
Exception raised:
    Traceback (most recent call last):
      File "/usr/lib64/python2.7/doctest.py", line 1315, in __run
        compileflags, 1) in test.globs
      File "<doctest minimock.TraceTracker.check[5]>", line 1, in <module>
        m.some_meth('arg2')
      File "minimock.py", line 529, in __call__
        self.mock_tracker.call(self.mock_name, *args, **kw)
      File "minimock.py", line 323, in call
        self.file.write(msg)
    TypeError: unicode argument expected, got 'str'
**********************************************************************
File "minimock.py", line 389, in minimock.TraceTracker.diff
Failed example:
    m.some_meth('dummy argument')
Exception raised:
    Traceback (most recent call last):
      File "/usr/lib64/python2.7/doctest.py", line 1315, in __run
        compileflags, 1) in test.globs
      File "<doctest minimock.TraceTracker.diff[2]>", line 1, in <module>
        m.some_meth('dummy argument')
      File "minimock.py", line 529, in __call__
        self.mock_tracker.call(self.mock_name, *args, **kw)
      File "minimock.py", line 323, in call
        self.file.write(msg)
    TypeError: unicode argument expected, got 'str'
**********************************************************************
File "minimock.py", line 390, in minimock.TraceTracker.diff
Failed example:
    tt.diff("does not match")
Expected:
    "Expected:\n    does not match\nGot:\n    Called mock_obj.some_meth('dummy argument')\n"
Got:
    'Expected:\n    does not match\nGot nothing\n'
**********************************************************************
File "minimock.py", line 392, in minimock.TraceTracker.diff
Failed example:
    tt.diff("Called mock_obj.some_meth('dummy argument')")
Expected:
    ''
Got:
    "Expected:\n    Called mock_obj.some_meth('dummy argument')\nGot nothing\n"
**********************************************************************
File "minimock.py", line 411, in minimock.TraceTracker.dump
Failed example:
    m.some_meth('dummy argument')
Exception raised:
    Traceback (most recent call last):
      File "/usr/lib64/python2.7/doctest.py", line 1315, in __run
        compileflags, 1) in test.globs
      File "<doctest minimock.TraceTracker.dump[2]>", line 1, in <module>
        m.some_meth('dummy argument')
      File "minimock.py", line 529, in __call__
        self.mock_tracker.call(self.mock_name, *args, **kw)
      File "minimock.py", line 323, in call
        self.file.write(msg)
    TypeError: unicode argument expected, got 'str'
**********************************************************************
File "minimock.py", line 412, in minimock.TraceTracker.dump
Failed example:
    tt.dump()
Expected:
    "Called mock_obj.some_meth('dummy argument')\n"
Got:
    u''
**********************************************************************
File "minimock.py", line 286, in minimock.assert_same_trace
Failed example:
    m.some_meth('dummy argument')
Exception raised:
    Traceback (most recent call last):
      File "/usr/lib64/python2.7/doctest.py", line 1315, in __run
        compileflags, 1) in test.globs
      File "<doctest minimock.assert_same_trace[2]>", line 1, in <module>
        m.some_meth('dummy argument')
      File "minimock.py", line 529, in __call__
        self.mock_tracker.call(self.mock_name, *args, **kw)
      File "minimock.py", line 323, in call
        self.file.write(msg)
    TypeError: unicode argument expected, got 'str'
**********************************************************************
File "minimock.py", line 287, in minimock.assert_same_trace
Failed example:
    assert_same_trace(tt,
        "Called mock_obj.some_meth('dummy argument')\n")
Exception raised:
    Traceback (most recent call last):
      File "/usr/lib64/python2.7/doctest.py", line 1315, in __run
        compileflags, 1) in test.globs
      File "<doctest minimock.assert_same_trace[3]>", line 2, in <module>
        "Called mock_obj.some_meth('dummy argument')\n")
      File "minimock.py", line 294, in assert_same_trace
        assert tracker.check(want), tracker.diff(want)
    AssertionError: Expected:
        Called mock_obj.some_meth('dummy argument')
    Got nothing

**********************************************************************
File "minimock.py", line 450, in minimock.normalize_function_parameters
Failed example:
    foo.bar('baz')
Exception raised:
    Traceback (most recent call last):
      File "/usr/lib64/python2.7/doctest.py", line 1315, in __run
        compileflags, 1) in test.globs
      File "<doctest minimock.normalize_function_parameters[3]>", line 1, in <module>
        foo.bar('baz')
      File "minimock.py", line 529, in __call__
        self.mock_tracker.call(self.mock_name, *args, **kw)
      File "minimock.py", line 323, in call
        self.file.write(msg)
    TypeError: unicode argument expected, got 'str'
**********************************************************************
File "minimock.py", line 451, in minimock.normalize_function_parameters
Failed example:
    tt.check(expect_mock_output)
Expected:
    True
Got:
    False
**********************************************************************
File "minimock.py", line 458, in minimock.normalize_function_parameters
Failed example:
    foo.bar('baz')
Exception raised:
    Traceback (most recent call last):
      File "/usr/lib64/python2.7/doctest.py", line 1315, in __run
        compileflags, 1) in test.globs
      File "<doctest minimock.normalize_function_parameters[7]>", line 1, in <module>
        foo.bar('baz')
      File "minimock.py", line 529, in __call__
        self.mock_tracker.call(self.mock_name, *args, **kw)
      File "minimock.py", line 323, in call
        self.file.write(msg)
    TypeError: unicode argument expected, got 'str'
**********************************************************************
File "minimock.py", line 459, in minimock.normalize_function_parameters
Failed example:
    tt.check(expect_mock_output)
Expected:
    True
Got:
    False
**********************************************************************
5 items had failures:
   3 of   7 in minimock.TraceTracker.check
   3 of   5 in minimock.TraceTracker.diff
   2 of   4 in minimock.TraceTracker.dump
   2 of   5 in minimock.assert_same_trace
   4 of   9 in minimock.normalize_function_parameters
***Test Failed*** 14 failures.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions