Fix spying on objects with a custom __setattr__.

Review Request #10073 — Created July 9, 2018 and submitted

chipx86
kgb
master
2e7b1c1...
kgb

Objects with a custom __setattr__ could impact spies, if they don't
fall back to the default behavior. In some cases, we attempt to set a
cloned method on an instance, and this triggered __setattr__,
sometimes losing that spy and leading to various sorts of failures.

We now explicitly call the default object.__setattr__() for instances,
which ensures we're setting the value in the instance's dictionary
instead of triggering the subclass. This is effectively what setattr()
would do by default.

Ran unit tests on all supported Python versions. They failed prior to the
fix, but ran successfully after.

Hit this issue during development on another project. Verified that the
problems went away after the fix.

  • 0
  • 0
  • 1
  • 0
  • 1
Description From Last Updated
david
  1. 
      
  2. kgb/tests/test_function_spy.py (Diff revision 1)
     
     

    Typo: boudn

  3. 
      
chipx86
Review request changed

Status: Closed (submitted)

Change Summary:

Pushed to master (dfe42ff)
Loading...