Yelp/Testify — pull request #208 by mrtyler (2013-11-12 07:57:17+00:00)
Title: on failure during [class_]setup, stop running additional setups

This arose due to internal bug #58087, but this branch fixes the now preschool-aged issue #12 (achievement unlocked; *waves to @ayust*).

```
import testify as T

class A(T.TestCase):

@T.class_setup
def first(self):
print "first"
raise Exception

class B(A):

@T.class_setup
def second(self):
print "second"

def test_me(self):
print "this won't run"

if __name__ == '__main__':
T.run()
```

results in the following output with Testify 0.4.2:

```
first
second
error: B.test_me
Traceback (most recent call last):
File "/usr/lib/python2.6/contextlib.py", line 16, in __enter__
return self.gen.next()
File "/usr/lib/python2.6/dist-packages/testify/test_case.py", line 371, in wrapper
fixture()
File "test_class_setup_test_case.py", line 9, in first
raise Exception
Exception
```

With this branch, we instead get:

```
first
error: B.test_me
Traceback (most recent call last):
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/contextlib.py", line 17, in __enter__
return self.gen.next()
File "/Users/tyler/Testify/testify/test_fixtures.py", line 73, in wrapper
fixture()
File "tmp.py", line 9, in first
raise Exception
Exception
```

There are now unit tests pinning down the order in this and a few other exceptional situations.