Repository: kevin1024/vcrpy

Issue:
It seems that "register_persister()" does not work
It seems that the "self.persister" attribute is never propagated to new Cassettes created, since get_merged_config() doesn't look it up.

The code and the related test works because only FileSystemPersister is used in both.

Discussion:

Patch:
diff --git a/vcr/config.py b/vcr/config.py
index 15ae459..cfc890d 100644
--- a/vcr/config.py
+++ b/vcr/config.py
@@ -145,6 +145,7 @@ class VCR(object):
 
         merged_config = {
             'serializer': self._get_serializer(serializer_name),
+            'persister': self.persister,
             'match_on': self._get_matchers(
                 tuple(matcher_names) + tuple(additional_matchers)
             ),


Test patch:
diff --git a/tests/integration/test_register_persister.py b/tests/integration/test_register_persister.py
index 64e20b6..758a1cf 100644
--- a/tests/integration/test_register_persister.py
+++ b/tests/integration/test_register_persister.py
@@ -10,10 +10,25 @@ import vcr
 from vcr.persisters.filesystem import FilesystemPersister
 
 
+class CustomFilesystemPersister(object):
+    '''Behaves just like default FilesystemPersister but adds .test extension
+       to the cassette file'''
+    @staticmethod
+    def load_cassette(cassette_path, serializer):
+        cassette_path += '.test'
+        return FilesystemPersister.load_cassette(cassette_path, serializer)
+
+    @staticmethod
+    def save_cassette(cassette_path, cassette_dict, serializer):
+        cassette_path += '.test'
+        FilesystemPersister.save_cassette(cassette_path, cassette_dict,
+                                          serializer)
+
+
 def test_save_cassette_with_custom_persister(tmpdir, httpbin):
     '''Ensure you can save a cassette using custom persister'''
     my_vcr = vcr.VCR()
-    my_vcr.register_persister(FilesystemPersister)
+    my_vcr.register_persister(CustomFilesystemPersister)
 
     # Check to make sure directory doesnt exist
     assert not os.path.exists(str(tmpdir.join('nonexistent')))
@@ -23,7 +38,7 @@ def test_save_cassette_with_custom_persister(tmpdir, httpbin):
         urlopen(httpbin.url).read()
 
     # Callback should have made the file and the directory
-    assert os.path.exists(str(tmpdir.join('nonexistent', 'cassette.yml')))
+    assert os.path.exists(str(tmpdir.join('nonexistent', 'cassette.yml.test')))
 
 
 def test_load_cassette_with_custom_persister(tmpdir, httpbin):
@@ -31,9 +46,9 @@ def test_load_cassette_with_custom_persister(tmpdir, httpbin):
     Ensure you can load a cassette using custom persister
     '''
     my_vcr = vcr.VCR()
-    my_vcr.register_persister(FilesystemPersister)
+    my_vcr.register_persister(CustomFilesystemPersister)
 
-    test_fixture = str(tmpdir.join('synopsis.json'))
+    test_fixture = str(tmpdir.join('synopsis.json.test'))
 
     with my_vcr.use_cassette(test_fixture, serializer='json'):
         response = urlopen(httpbin.url).read()