Commits

Zero Piraeus committed fdbce95

Write 'README'.

Comments (0)

Files changed (1)

 
 **fix** is a simple library to assist with the creation of fixtures for test
 functions, methods etc. It provides one decorator, ``with_fixture``, which
-allows you to attach setup and teardown functions to the decorated callable,
+allows you to attach setup() and teardown() functions to the decorated callable,
 and access information defined in the fixture from within the test function.
 
+**fix** was written for use with nose_, but doesn't depend on it, and may also
+prove useful with other test frameworks.
 
-Example
--------
+.. _nose: http://nose.readthedocs.org/en/latest/index.html
 
-.. write me!
 
+Examples
+--------
 
-Usage
------
+Here's a basic example with setup but no teardown::
 
-.. write me!
+    def setup_only(context):
+
+        def setup():
+            """Add something to the context."""
+            assert context == {}
+            context.squee = "kapow"
+
+        return setup
+
+    @with_fixture(setup_only)
+    def case(context):
+        assert context == {"squee": "kapow"}
+
+... and here's a rather more involved one that creates some temporary files to
+work with, then deletes them during teardown::
+
+    def external(context, files=3):
+
+        def setup():
+            context.temp_dir = tempfile.mkdtemp()
+            context.filenames = ["file_%03d" % i for i in range(files)]
+            for filename in context.filenames:
+                with open(os.path.join(context.temp_dir, filename), "w") as f:
+                    f.write("This is the file %r.\n" % filename)
+
+        def teardown():
+            shutil.rmtree(context.temp_dir)
+
+        return setup, teardown
+
+    @with_fixture(external, files=5)
+    def check_files(context):
+        present = 0
+        absent = 0
+        for filename in context.filenames:
+            if os.path.exists(os.path.join(context.temp_dir, filename)):
+                present += 1
+            else:
+                absent += 1
+        return context.temp_dir, present, absent
+
+    temp_dir, present, absent = check_files()
+    assert not os.path.exists(temp_dir)
+    assert present == 5
+    assert absent == 0
 
 
 Installation