diff --git a/reviewboard/diffviewer/tests/test_diffset_manager.py b/reviewboard/diffviewer/tests/test_diffset_manager.py
index 3cae5508110703c692698b12ecc686d94893acc3..8d2594176acdc2853edc758ffcfac486258e0d0e 100644
--- a/reviewboard/diffviewer/tests/test_diffset_manager.py
+++ b/reviewboard/diffviewer/tests/test_diffset_manager.py
@@ -21,7 +21,7 @@ class DiffSetManagerTests(SpyAgency, TestCase):
         diffset = DiffSet.objects.create_from_data(
             repository=repository,
             diff_file_name='diff',
-            diff_file_contents=self.DEFAULT_GIT_FILEDIFF_DATA,
+            diff_file_contents=self.DEFAULT_GIT_FILEDIFF_DATA_DIFF,
             basedir='/')
 
         self.assertEqual(diffset.files.count(), 1)
@@ -38,7 +38,7 @@ class DiffSetManagerTests(SpyAgency, TestCase):
         diffset = DiffSet.objects.create_from_data(
             repository=repository,
             diff_file_name='diff',
-            diff_file_contents=self.DEFAULT_GIT_FILEDIFF_DATA,
+            diff_file_contents=self.DEFAULT_GIT_FILEDIFF_DATA_DIFF,
             basedir='trunk/')
 
         self.assertEqual(diffset.files.count(), 1)
@@ -59,7 +59,7 @@ class DiffSetManagerTests(SpyAgency, TestCase):
         diffset = DiffSet.objects.create_from_data(
             repository=repository,
             diff_file_name='diff',
-            diff_file_contents=self.DEFAULT_GIT_FILEDIFF_DATA,
+            diff_file_contents=self.DEFAULT_GIT_FILEDIFF_DATA_DIFF,
             basedir='/trunk/')
 
         self.assertEqual(diffset.files.count(), 1)
@@ -79,7 +79,7 @@ class DiffSetManagerTests(SpyAgency, TestCase):
             diffset = DiffSet.objects.create_from_data(
                 repository=repository,
                 diff_file_name='diff',
-                diff_file_contents=self.DEFAULT_GIT_FILEDIFF_DATA,
+                diff_file_contents=self.DEFAULT_GIT_FILEDIFF_DATA_DIFF,
                 basedir='/',
                 validate_only=True)
 
diff --git a/reviewboard/diffviewer/tests/test_filediff_migration.py b/reviewboard/diffviewer/tests/test_filediff_migration.py
index 6e584fbf1551e8027fa8fa178c79417c7122f163..74573a6fedb51a3065bd750099c3c375e38f2832 100644
--- a/reviewboard/diffviewer/tests/test_filediff_migration.py
+++ b/reviewboard/diffviewer/tests/test_filediff_migration.py
@@ -48,7 +48,7 @@ class FileDiffMigrationTests(TestCase):
 
     def test_migration_by_diff(self):
         """Testing RawFileDiffData migration accessing FileDiff.diff"""
-        self.filediff.diff64 = self.DEFAULT_GIT_FILEDIFF_DATA
+        self.filediff.diff64 = self.DEFAULT_GIT_FILEDIFF_DATA_DIFF
 
         self.assertIsNone(self.filediff.diff_hash)
         self.assertIsNone(self.filediff.parent_diff_hash)
@@ -59,17 +59,17 @@ class FileDiffMigrationTests(TestCase):
         self.assertIsNone(self.filediff.parent_diff_hash)
         self.assertIsNotNone(self.filediff.diff_hash)
 
-        self.assertEqual(diff, self.DEFAULT_GIT_FILEDIFF_DATA)
+        self.assertEqual(diff, self.DEFAULT_GIT_FILEDIFF_DATA_DIFF)
         self.assertEqual(self.filediff.diff64, b'')
         self.assertEqual(self.filediff.diff_hash.binary,
-                         self.DEFAULT_GIT_FILEDIFF_DATA)
+                         self.DEFAULT_GIT_FILEDIFF_DATA_DIFF)
         self.assertEqual(self.filediff.diff, diff)
         self.assertIsNone(self.filediff.parent_diff)
         self.assertIsNone(self.filediff.parent_diff_hash)
 
     def test_migration_by_parent_diff(self):
         """Testing RawFileDiffData migration accessing FileDiff.parent_diff"""
-        self.filediff.diff64 = self.DEFAULT_GIT_FILEDIFF_DATA
+        self.filediff.diff64 = self.DEFAULT_GIT_FILEDIFF_DATA_DIFF
         self.filediff.parent_diff64 = self.parent_diff
 
         self.assertIsNone(self.filediff.parent_diff_hash)
@@ -87,7 +87,7 @@ class FileDiffMigrationTests(TestCase):
 
     def test_migration_by_delete_count(self):
         """Testing RawFileDiffData migration accessing FileDiff.delete_count"""
-        self.filediff.diff64 = self.DEFAULT_GIT_FILEDIFF_DATA
+        self.filediff.diff64 = self.DEFAULT_GIT_FILEDIFF_DATA_DIFF
 
         self.assertIsNone(self.filediff.diff_hash)
 
@@ -100,7 +100,7 @@ class FileDiffMigrationTests(TestCase):
 
     def test_migration_by_insert_count(self):
         """Testing RawFileDiffData migration accessing FileDiff.insert_count"""
-        self.filediff.diff64 = self.DEFAULT_GIT_FILEDIFF_DATA
+        self.filediff.diff64 = self.DEFAULT_GIT_FILEDIFF_DATA_DIFF
 
         self.assertIsNone(self.filediff.diff_hash)
 
@@ -114,7 +114,7 @@ class FileDiffMigrationTests(TestCase):
     def test_migration_by_set_line_counts(self):
         """Testing RawFileDiffData migration calling FileDiff.set_line_counts
         """
-        self.filediff.diff64 = self.DEFAULT_GIT_FILEDIFF_DATA
+        self.filediff.diff64 = self.DEFAULT_GIT_FILEDIFF_DATA_DIFF
 
         self.assertIsNone(self.filediff.diff_hash)
 
@@ -136,7 +136,7 @@ class FileDiffMigrationTests(TestCase):
         """
         legacy = LegacyFileDiffData.objects.create(
             binary_hash='abc123',
-            binary=Base64DecodedValue(self.DEFAULT_GIT_FILEDIFF_DATA))
+            binary=Base64DecodedValue(self.DEFAULT_GIT_FILEDIFF_DATA_DIFF))
 
         self.filediff.legacy_diff_hash = legacy
         self.filediff.save()
@@ -149,10 +149,10 @@ class FileDiffMigrationTests(TestCase):
         self.assertIsNone(self.filediff.legacy_diff_hash)
         self.assertEqual(LegacyFileDiffData.objects.count(), 0)
 
-        self.assertEqual(diff, self.DEFAULT_GIT_FILEDIFF_DATA)
+        self.assertEqual(diff, self.DEFAULT_GIT_FILEDIFF_DATA_DIFF)
         self.assertEqual(self.filediff.diff64, '')
         self.assertEqual(self.filediff.diff_hash.content,
-                         self.DEFAULT_GIT_FILEDIFF_DATA)
+                         self.DEFAULT_GIT_FILEDIFF_DATA_DIFF)
         self.assertEqual(self.filediff.diff, diff)
         self.assertIsNone(self.filediff.parent_diff)
         self.assertIsNone(self.filediff.parent_diff_hash)
@@ -163,7 +163,7 @@ class FileDiffMigrationTests(TestCase):
         """
         legacy = LegacyFileDiffData.objects.create(
             binary_hash='abc123',
-            binary=Base64DecodedValue(self.DEFAULT_GIT_FILEDIFF_DATA))
+            binary=Base64DecodedValue(self.DEFAULT_GIT_FILEDIFF_DATA_DIFF))
 
         self.filediff.legacy_diff_hash = legacy
         self.filediff.save()
@@ -187,10 +187,10 @@ class FileDiffMigrationTests(TestCase):
         self.assertIsNone(self.filediff.legacy_diff_hash)
         self.assertEqual(LegacyFileDiffData.objects.count(), 1)
 
-        self.assertEqual(diff, self.DEFAULT_GIT_FILEDIFF_DATA)
+        self.assertEqual(diff, self.DEFAULT_GIT_FILEDIFF_DATA_DIFF)
         self.assertEqual(self.filediff.diff64, '')
         self.assertEqual(self.filediff.diff_hash.content,
-                         self.DEFAULT_GIT_FILEDIFF_DATA)
+                         self.DEFAULT_GIT_FILEDIFF_DATA_DIFF)
         self.assertEqual(self.filediff.diff, diff)
         self.assertIsNone(self.filediff.parent_diff)
         self.assertIsNone(self.filediff.parent_diff_hash)
@@ -259,7 +259,7 @@ class FileDiffMigrationTests(TestCase):
         """
         legacy = LegacyFileDiffData.objects.create(
             binary_hash='abc123',
-            binary=Base64DecodedValue(self.DEFAULT_GIT_FILEDIFF_DATA))
+            binary=Base64DecodedValue(self.DEFAULT_GIT_FILEDIFF_DATA_DIFF))
         parent_legacy = LegacyFileDiffData.objects.create(
             binary_hash='def456',
             binary=Base64DecodedValue(self.parent_diff))
@@ -289,7 +289,7 @@ class FileDiffMigrationTests(TestCase):
 
         # At this point, we should have valid diffs, and neither call
         # above should have raised an exception due to a dangling hash ID.
-        self.assertEqual(diff1, self.DEFAULT_GIT_FILEDIFF_DATA)
+        self.assertEqual(diff1, self.DEFAULT_GIT_FILEDIFF_DATA_DIFF)
         self.assertEqual(diff1, diff2)
         self.assertEqual(parent_diff1, self.parent_diff)
         self.assertEqual(parent_diff1, parent_diff2)
@@ -314,9 +314,9 @@ class FileDiffMigrationTests(TestCase):
         self.assertEqual(filediff1.diff64, '')
         self.assertEqual(filediff2.diff64, '')
         self.assertEqual(filediff1.diff_hash.content,
-                         self.DEFAULT_GIT_FILEDIFF_DATA)
+                         self.DEFAULT_GIT_FILEDIFF_DATA_DIFF)
         self.assertEqual(filediff2.diff_hash.content,
-                         self.DEFAULT_GIT_FILEDIFF_DATA)
+                         self.DEFAULT_GIT_FILEDIFF_DATA_DIFF)
 
         # Check the parent_diff content.
         self.assertEqual(filediff1.parent_diff64, '')
diff --git a/reviewboard/diffviewer/tests/test_forms.py b/reviewboard/diffviewer/tests/test_forms.py
index 9882bcc01e4237a221e5a82452e22530dccdcb0e..a6e136ea81f9438a256c446d4cc2440e8eba13e9 100644
--- a/reviewboard/diffviewer/tests/test_forms.py
+++ b/reviewboard/diffviewer/tests/test_forms.py
@@ -20,7 +20,8 @@ class UploadDiffFormTests(SpyAgency, TestCase):
 
     def test_create(self):
         """Testing UploadDiffForm.create"""
-        diff_file = SimpleUploadedFile('diff', self.DEFAULT_GIT_FILEDIFF_DATA,
+        diff_file = SimpleUploadedFile('diff',
+                                       self.DEFAULT_GIT_FILEDIFF_DATA_DIFF,
                                        content_type='text/x-patch')
 
         repository = self.create_repository(tool_name='Test')
@@ -72,7 +73,8 @@ class UploadDiffFormTests(SpyAgency, TestCase):
         )
         parent_diff = parent_diff_1 + parent_diff_2
 
-        diff_file = SimpleUploadedFile('diff', self.DEFAULT_GIT_FILEDIFF_DATA,
+        diff_file = SimpleUploadedFile('diff',
+                                       self.DEFAULT_GIT_FILEDIFF_DATA_DIFF,
                                        content_type='text/x-patch')
         parent_diff_file = SimpleUploadedFile('parent_diff', parent_diff,
                                               content_type='text/x-patch')
@@ -95,7 +97,7 @@ class UploadDiffFormTests(SpyAgency, TestCase):
         self.assertEqual(diffset.files.count(), 1)
 
         filediff = diffset.files.get()
-        self.assertEqual(filediff.diff, self.DEFAULT_GIT_FILEDIFF_DATA)
+        self.assertEqual(filediff.diff, self.DEFAULT_GIT_FILEDIFF_DATA_DIFF)
         self.assertEqual(filediff.parent_diff, parent_diff_1)
 
         self.assertIn(('/README', 'd6613f4'), saw_file_exists)
diff --git a/reviewboard/reviews/tests/test_review_request_draft.py b/reviewboard/reviews/tests/test_review_request_draft.py
index 0bd8902f58079554d4d76c262800f4de109b5e3e..56a26bab90455d8f1fca34607f18745e9909ffba 100644
--- a/reviewboard/reviews/tests/test_review_request_draft.py
+++ b/reviewboard/reviews/tests/test_review_request_draft.py
@@ -451,11 +451,8 @@ class PostCommitTests(SpyAgency, TestCase):
             self.assertEqual(commit_id, commit_to_get)
 
             commit = Commit(message='This is my commit message\n\n'
-                                    'With a summary line too.')
-            diff_filename = os.path.join(self.testdata_dir, 'git_readme.diff')
-
-            with open(diff_filename, 'r') as f:
-                commit.diff = f.read()
+                                    'With a summary line too.',
+                            diff=self.DEFAULT_GIT_README_DIFF)
 
             return commit
 
@@ -489,11 +486,8 @@ class PostCommitTests(SpyAgency, TestCase):
         """
         def get_change(repository, commit_to_get):
             commit = Commit(
-                message='* This is a summary\n\n* This is a description.')
-            diff_filename = os.path.join(self.testdata_dir, 'git_readme.diff')
-
-            with open(diff_filename, 'r') as f:
-                commit.diff = f.read()
+                message='* This is a summary\n\n* This is a description.',
+                diff=self.DEFAULT_GIT_README_DIFF)
 
             return commit
 
diff --git a/reviewboard/scmtools/testdata/git_binary.diff b/reviewboard/scmtools/testdata/git_binary.diff
deleted file mode 100644
index 00581d732f1371810b98ced8c973319ebeff64d4..0000000000000000000000000000000000000000
--- a/reviewboard/scmtools/testdata/git_binary.diff
+++ /dev/null
@@ -1,4 +0,0 @@
-diff --git a/pysvn-1.5.1.tar.gz b/pysvn-1.5.1.tar.gz
-new file mode 100644
-index 0000000..86b520c
-Binary files /dev/null and b/pysvn-1.5.1.tar.gz differ
diff --git a/reviewboard/scmtools/testdata/git_binary_image_modified.diff b/reviewboard/scmtools/testdata/git_binary_image_modified.diff
deleted file mode 100644
index ae1c75d83abb4c01916837cbc730acfa341dda80..0000000000000000000000000000000000000000
--- a/reviewboard/scmtools/testdata/git_binary_image_modified.diff
+++ /dev/null
@@ -1,3 +0,0 @@
-diff --git a/logo.png b/logo.png
-index 86b520c..86b520d
-Binary files a/logo.png and b/logo.png differ
diff --git a/reviewboard/scmtools/testdata/git_delfile.diff b/reviewboard/scmtools/testdata/git_delfile.diff
deleted file mode 100644
index 83fa097f414eb4a63d9bb996d8e9a1e957420760..0000000000000000000000000000000000000000
--- a/reviewboard/scmtools/testdata/git_delfile.diff
+++ /dev/null
@@ -1,7 +0,0 @@
-diff --git a/OLDFILE b/OLDFILE
-deleted file mode 100644
-index 8ebcb01..0000000
---- a/OLDFILE
-+++ /dev/null
-@@ -1,1 +0,0 @@
--Goodbye
diff --git a/reviewboard/scmtools/testdata/git_file_not_found.diff b/reviewboard/scmtools/testdata/git_file_not_found.diff
deleted file mode 100644
index c583e0369721fafca6d2e23a9e5db45cdb27a98f..0000000000000000000000000000000000000000
--- a/reviewboard/scmtools/testdata/git_file_not_found.diff
+++ /dev/null
@@ -1,8 +0,0 @@
-diff --git a/missing-file b/missing-file
-index d6613f0..5b50866 100644
---- a/missing-file
-+++ b/missing-file
-@@ -1 +1,3 @@
- Hello there
-+
-+Oh hi!
diff --git a/reviewboard/scmtools/testdata/git_filemode.diff b/reviewboard/scmtools/testdata/git_filemode.diff
deleted file mode 100644
index f5ca66201342b2e6c271ac34dea6cac6c77d6d10..0000000000000000000000000000000000000000
--- a/reviewboard/scmtools/testdata/git_filemode.diff
+++ /dev/null
@@ -1,11 +0,0 @@
-diff --git a/testing b/testing
-old mode 100755
-new mode 100644
-index e69de29..bcae657
---- a/testing
-+++ b/testing
-@@ -0,0 +1 @@
-+ADD
-diff --git a/testing2 b/testing2
-old mode 100644
-new mode 100755
diff --git a/reviewboard/scmtools/testdata/git_filemode2.diff b/reviewboard/scmtools/testdata/git_filemode2.diff
deleted file mode 100644
index 7c02b10e1c8c7ba66e27cc6c81f5d1f585e5330a..0000000000000000000000000000000000000000
--- a/reviewboard/scmtools/testdata/git_filemode2.diff
+++ /dev/null
@@ -1,24 +0,0 @@
-diff --git a/testing b/testing
-old mode 100755
-new mode 100644
-index e69de29..bcae657
---- a/testing
-+++ b/testing
-@@ -0,0 +1 @@
-+ADD
-diff --git a/testing2 b/testing2
-old mode 100644
-new mode 100755
-diff --git a/cfg/testcase.ini b/cfg/testcase.ini
-index cc18ec8..5e70b73 100644
---- a/cfg/testcase.ini
-+++ b/cfg/testcase.ini
-@@ -1,6 +1,7 @@
-+blah blah blah
- [mysql]
- host = localhost
- port = 3306
- user = user
- pass = pass
--db = pyunit
-+db = pyunit
diff --git a/reviewboard/scmtools/testdata/git_newfile.diff b/reviewboard/scmtools/testdata/git_newfile.diff
deleted file mode 100644
index 24c19005ef632f876ee75231fc89a5b1889f6c90..0000000000000000000000000000000000000000
--- a/reviewboard/scmtools/testdata/git_newfile.diff
+++ /dev/null
@@ -1,7 +0,0 @@
-diff --git a/IAMNEW b/IAMNEW
-new file mode 100644
-index 0000000..e69de29
---- /dev/null
-+++ b/IAMNEW
-@@ -0,0 +1,1 @@
-+Hello
diff --git a/reviewboard/scmtools/testdata/git_newfile_nocontent.diff b/reviewboard/scmtools/testdata/git_newfile_nocontent.diff
deleted file mode 100644
index b7c6b49c0a1c60b7750ec76b20040752d1f8032d..0000000000000000000000000000000000000000
--- a/reviewboard/scmtools/testdata/git_newfile_nocontent.diff
+++ /dev/null
@@ -1,3 +0,0 @@
-diff --git a/newfile b/newfile
-new file mode 100644
-index 0000000..e69de29
diff --git a/reviewboard/scmtools/testdata/git_newfile_nocontent2.diff b/reviewboard/scmtools/testdata/git_newfile_nocontent2.diff
deleted file mode 100644
index deb65826dd6706b7a3883d7749190aca081f8b30..0000000000000000000000000000000000000000
--- a/reviewboard/scmtools/testdata/git_newfile_nocontent2.diff
+++ /dev/null
@@ -1,16 +0,0 @@
-diff --git a/newfile b/newfile
-new file mode 100644
-index 0000000..e69de29
-diff --git a/cfg/testcase.ini b/cfg/testcase.ini
-index cc18ec8..5e70b73 100644
---- a/cfg/testcase.ini
-+++ b/cfg/testcase.ini
-@@ -1,6 +1,7 @@
-+blah blah blah
- [mysql]
- host = localhost
- port = 3306
- user = user
- pass = pass
--db = pyunit
-+db = pyunit
diff --git a/reviewboard/scmtools/testdata/git_readme.diff b/reviewboard/scmtools/testdata/git_readme.diff
deleted file mode 100644
index 0a8ff22270c03ac294c5adcf569d8bcf2272edf9..0000000000000000000000000000000000000000
--- a/reviewboard/scmtools/testdata/git_readme.diff
+++ /dev/null
@@ -1,8 +0,0 @@
-diff --git a/readme b/readme
-index d6613f5..5b50866 100644
---- a/readme
-+++ b/readme
-@@ -1 +1,3 @@
- Hello there
-+
-+Oh hi!
diff --git a/reviewboard/scmtools/testdata/git_simple.diff b/reviewboard/scmtools/testdata/git_simple.diff
deleted file mode 100644
index f0375e29b4fa038249352684d8e1ea83791e6afc..0000000000000000000000000000000000000000
--- a/reviewboard/scmtools/testdata/git_simple.diff
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/cfg/testcase.ini b/cfg/testcase.ini
-index cc18ec8..5e70b73 100644
---- a/cfg/testcase.ini
-+++ b/cfg/testcase.ini
-@@ -1,6 +1,7 @@
-+blah blah blah
- [mysql]
- host = localhost
- port = 3306
- user = user
- pass = pass
--db = pyunit
-+db = pyunit
diff --git a/reviewboard/scmtools/tests/test_git.py b/reviewboard/scmtools/tests/test_git.py
index b8b384c71aece8d78b66f26b3bcae4b0b0e4e0f7..667e2b9e3b63ae0c0970fc38d1ebd8351f2b4448 100644
--- a/reviewboard/scmtools/tests/test_git.py
+++ b/reviewboard/scmtools/tests/test_git.py
@@ -68,7 +68,19 @@ class GitTests(SpyAgency, SCMTestCase):
 
     def test_filemode_diff(self):
         """Testing parsing filemode changes Git diff"""
-        diff = self._read_fixture('git_filemode.diff')
+        diff = (
+            b'diff --git a/testing b/testing\n'
+            b'old mode 100755\n'
+            b'new mode 100644\n'
+            b'index e69de29..bcae657\n'
+            b'--- a/testing\n'
+            b'+++ b/testing\n'
+            b'@@ -0,0 +1 @@\n'
+            b'+ADD\n'
+            b'diff --git a/testing2 b/testing2\n'
+            b'old mode 100644\n'
+            b'new mode 100755\n'
+        )
 
         file = self._get_file_in_diff(diff)
         self.assertEqual(file.origFile, 'testing')
@@ -86,7 +98,32 @@ class GitTests(SpyAgency, SCMTestCase):
 
     def test_filemode_with_following_diff(self):
         """Testing parsing filemode changes with following Git diff"""
-        diff = self._read_fixture('git_filemode2.diff')
+        diff = (
+            b'diff --git a/testing b/testing\n'
+            b'old mode 100755\n'
+            b'new mode 100644\n'
+            b'index e69de29..bcae657\n'
+            b'--- a/testing\n'
+            b'+++ b/testing\n'
+            b'@@ -0,0 +1 @@\n'
+            b'+ADD\n'
+            b'diff --git a/testing2 b/testing2\n'
+            b'old mode 100644\n'
+            b'new mode 100755\n'
+            b'diff --git a/cfg/testcase.ini b/cfg/testcase.ini\n'
+            b'index cc18ec8..5e70b73 100644\n'
+            b'--- a/cfg/testcase.ini\n'
+            b'+++ b/cfg/testcase.ini\n'
+            b'@@ -1,6 +1,7 @@\n'
+            b'+blah blah blah\n'
+            b' [mysql]\n'
+            b' host = localhost\n'
+            b' port = 3306\n'
+            b' user = user\n'
+            b' pass = pass\n'
+            b'-db = pyunit\n'
+            b'+db = pyunit\n'
+        )
 
         file = self._get_file_in_diff(diff)
         self.assertEqual(file.origFile, 'testing')
@@ -115,7 +152,21 @@ class GitTests(SpyAgency, SCMTestCase):
 
     def test_simple_diff(self):
         """Testing parsing simple Git diff"""
-        diff = self._read_fixture('git_simple.diff')
+        diff = (
+            b'diff --git a/cfg/testcase.ini b/cfg/testcase.ini\n'
+            b'index cc18ec8..5e70b73 100644\n'
+            b'--- a/cfg/testcase.ini\n'
+            b'+++ b/cfg/testcase.ini\n'
+            b'@@ -1,6 +1,7 @@\n'
+            b'+blah blah blah\n'
+            b' [mysql]\n'
+            b' host = localhost\n'
+            b' port = 3306\n'
+            b' user = user\n'
+            b' pass = pass\n'
+            b'-db = pyunit\n'
+            b'+db = pyunit\n'
+        )
 
         file = self._get_file_in_diff(diff)
         self.assertEqual(file.origFile, 'cfg/testcase.ini')
@@ -175,7 +226,8 @@ class GitTests(SpyAgency, SCMTestCase):
             b'-blah blah\n'
             b'+blah\n'
             b'-\n'
-            b'1.7.1\n')
+            b'1.7.1\n'
+        )
 
         files = self.tool.get_parser(diff).parse()
         self.assertEqual(files[0].origFile, 'README')
@@ -190,7 +242,15 @@ class GitTests(SpyAgency, SCMTestCase):
 
     def test_new_file_diff(self):
         """Testing parsing Git diff with new file"""
-        diff = self._read_fixture('git_newfile.diff')
+        diff = (
+            b'diff --git a/IAMNEW b/IAMNEW\n'
+            b'new file mode 100644\n'
+            b'index 0000000..e69de29\n'
+            b'--- /dev/null\n'
+            b'+++ b/IAMNEW\n'
+            b'@@ -0,0 +1,1 @@\n'
+            b'+Hello\n'
+        )
 
         file = self._get_file_in_diff(diff)
         self.assertEqual(file.origFile, 'IAMNEW')
@@ -209,7 +269,12 @@ class GitTests(SpyAgency, SCMTestCase):
 
     def test_new_file_no_content_diff(self):
         """Testing parsing Git diff new file, no content"""
-        diff = self._read_fixture('git_newfile_nocontent.diff')
+        diff = (
+            b'diff --git a/newfile b/newfile\n'
+            b'new file mode 100644\n'
+            b'index 0000000..e69de29\n'
+        )
+
         files = self.tool.get_parser(diff).parse()
         self.assertEqual(len(files), 1)
 
@@ -229,7 +294,25 @@ class GitTests(SpyAgency, SCMTestCase):
 
     def test_new_file_no_content_with_following_diff(self):
         """Testing parsing Git diff new file, no content, with following"""
-        diff = self._read_fixture('git_newfile_nocontent2.diff')
+        diff = (
+            b'diff --git a/newfile b/newfile\n'
+            b'new file mode 100644\n'
+            b'index 0000000..e69de29\n'
+            b'diff --git a/cfg/testcase.ini b/cfg/testcase.ini\n'
+            b'index cc18ec8..5e70b73 100644\n'
+            b'--- a/cfg/testcase.ini\n'
+            b'+++ b/cfg/testcase.ini\n'
+            b'@@ -1,6 +1,7 @@\n'
+            b'+blah blah blah\n'
+            b' [mysql]\n'
+            b' host = localhost\n'
+            b' port = 3306\n'
+            b' user = user\n'
+            b' pass = pass\n'
+            b'-db = pyunit\n'
+            b'+db = pyunit\n'
+        )
+
         files = self.tool.get_parser(diff).parse()
         self.assertEqual(len(files), 2)
 
@@ -260,7 +343,15 @@ class GitTests(SpyAgency, SCMTestCase):
 
     def test_del_file_diff(self):
         """Testing parsing Git diff with deleted file"""
-        diff = self._read_fixture('git_delfile.diff')
+        diff = (
+            b'diff --git a/OLDFILE b/OLDFILE\n'
+            b'deleted file mode 100644\n'
+            b'index 8ebcb01..0000000\n'
+            b'--- a/OLDFILE\n'
+            b'+++ /dev/null\n'
+            b'@@ -1,1 +0,0 @@\n'
+            b'-Goodbye\n'
+        )
 
         file = self._get_file_in_diff(diff)
         self.assertEqual(file.origFile, 'OLDFILE')
@@ -283,6 +374,7 @@ class GitTests(SpyAgency, SCMTestCase):
                 b'deleted file mode 100644\n'
                 b'index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..'
                 b'0000000000000000000000000000000000000000\n')
+
         files = self.tool.get_parser(diff).parse()
         self.assertEqual(len(files), 1)
 
@@ -317,6 +409,7 @@ class GitTests(SpyAgency, SCMTestCase):
                 b'@@ -1 +1,2 @@\n'
                 b'+Hello!\n'
                 b'blah\n')
+
         files = self.tool.get_parser(diff).parse()
         self.assertEqual(len(files), 2)
 
@@ -353,7 +446,12 @@ class GitTests(SpyAgency, SCMTestCase):
 
     def test_binary_diff(self):
         """Testing parsing Git diff with binary"""
-        diff = self._read_fixture('git_binary.diff')
+        diff = (
+            b'diff --git a/pysvn-1.5.1.tar.gz b/pysvn-1.5.1.tar.gz\n'
+            b'new file mode 100644\n'
+            b'index 0000000..86b520c\n'
+            b'Binary files /dev/null and b/pysvn-1.5.1.tar.gz differ\n'
+        )
 
         file = self._get_file_in_diff(diff)
         self.assertEqual(file.origFile, 'pysvn-1.5.1.tar.gz')
@@ -375,6 +473,7 @@ class GitTests(SpyAgency, SCMTestCase):
     def test_complex_diff(self):
         """Testing parsing Git diff with existing and new files"""
         diff = self._read_fixture('git_complex.diff')
+
         files = self.tool.get_parser(diff).parse()
         self.assertEqual(len(files), 7)
         self.assertEqual(files[0].origFile, 'cfg/testcase.ini')
@@ -494,6 +593,7 @@ class GitTests(SpyAgency, SCMTestCase):
                 b'@ -1,1 +1,1 @@\n'
                 b'-blah blah\n'
                 b'+blah\n')
+
         files = self.tool.get_parser(diff).parse()
         self.assertEqual(len(files), 1)
         self.assertEqual(files[0].origFile, 'foo/bar')
@@ -513,6 +613,7 @@ class GitTests(SpyAgency, SCMTestCase):
                 b'diff --git a/bar.bin b/bar.bin\n'
                 b'deleted file mode 100644\n'
                 b'Binary file bar.bin has changed\n')
+
         files = self.tool.get_parser(diff).parse()
         self.assertEqual(len(files), 2)
         self.assertEqual(files[0].origFile, 'foo.bin')
@@ -620,6 +721,7 @@ class GitTests(SpyAgency, SCMTestCase):
                 b'@@ -1,1 +1,1 @@\n'
                 b'-blah blah\n'
                 b'+blah\n')
+
         files = self.tool.get_parser(diff).parse()
         self.assertEqual(len(files), 2)
 
@@ -662,6 +764,7 @@ class GitTests(SpyAgency, SCMTestCase):
                 b'@@ -1,1 +1,1 @@\n'
                 b'-blah blah\n'
                 b'+blah\n')
+
         files = self.tool.get_parser(diff).parse()
         self.assertEqual(len(files), 1)
 
@@ -827,6 +930,7 @@ class GitTests(SpyAgency, SCMTestCase):
                 b'\\ No newline at end of file\n'
                 b'+README.md\n'
                 b'\\ No newline at end of file\n')
+
         files = self.tool.get_parser(diff).parse()
         self.assertEqual(len(files), 1)
 
@@ -845,6 +949,7 @@ class GitTests(SpyAgency, SCMTestCase):
                 b'@@ -1 +0,0 @@\n'
                 b'-README.txt\n'
                 b'\\ No newline at end of file\n')
+
         files = self.tool.get_parser(diff).parse()
         self.assertEqual(len(files), 1)
 
diff --git a/reviewboard/testing/testcase.py b/reviewboard/testing/testcase.py
index 956b971326de9633c3f6da9c2532d7ffbdbd86eb..1d62c8e01c5fb4ede3481f595a3d6c70ad1988cc 100644
--- a/reviewboard/testing/testcase.py
+++ b/reviewboard/testing/testcase.py
@@ -54,7 +54,7 @@ class TestCase(FixturesCompilerMixin, DjbletsTestCase):
 
     ws_re = re.compile(r'\s+')
 
-    DEFAULT_FILEDIFF_DATA = (
+    DEFAULT_FILEDIFF_DATA_DIFF = (
         b'--- README\trevision 123\n'
         b'+++ README\trevision 123\n'
         b'@@ -1 +1 @@\n'
@@ -62,7 +62,7 @@ class TestCase(FixturesCompilerMixin, DjbletsTestCase):
         b'+Hello, everybody!\n'
     )
 
-    DEFAULT_GIT_FILEDIFF_DATA = (
+    DEFAULT_GIT_FILEDIFF_DATA_DIFF = (
         b'diff --git a/README b/README\n'
         b'index 94bdd3e..197009f 100644\n'
         b'--- README\n'
@@ -72,6 +72,48 @@ class TestCase(FixturesCompilerMixin, DjbletsTestCase):
         b'+blah!\n'
     )
 
+    DEFAULT_GIT_README_DIFF = (
+        b'diff --git a/readme b/readme\n'
+        b'index d6613f5..5b50866 100644\n'
+        b'--- a/readme\n'
+        b'+++ b/readme\n'
+        b'@@ -1 +1,3 @@\n'
+        b'Hello there\n'
+        b'+\n'
+        b'+Oh hi!\n'
+    )
+
+    DEFAULT_GIT_FILEMODE_DIFF = (
+        b'diff --git a/testing b/testing\n'
+        b'old mode 100755\n'
+        b'new mode 100644\n'
+        b'index e69de29..bcae657\n'
+        b'--- a/testing\n'
+        b'+++ b/testing\n'
+        b'@@ -0,0 +1 @@\n'
+        b'+ADD\n'
+        b'diff --git a/testing2 b/testing2\n'
+        b'old mode 100644\n'
+        b'new mode 100755\n'
+    )
+
+    DEFAULT_GIT_FILE_NOT_FOUND_DIFF = (
+        b'diff --git a/missing-file b/missing-file\n'
+        b'index d6613f0..5b50866 100644\n'
+        b'--- a/missing-file\n'
+        b'+++ b/missing-file\n'
+        b'@@ -1 +1,3 @@\n'
+        b'Hello there\n'
+        b'+\n'
+        b'+Oh hi!\n'
+    )
+
+    DEFAULT_GIT_BINARY_IMAGE_DIFF = (
+        b'diff --git a/logo.png b/logo.png\n'
+        b'index 86b520c..86b520d\n'
+        b'Binary files a/logo.png and b/logo.png differ\n'
+    )
+
     def setUp(self):
         super(TestCase, self).setUp()
 
@@ -473,7 +515,7 @@ class TestCase(FixturesCompilerMixin, DjbletsTestCase):
     def create_filediff(self, diffset, source_file='/test-file',
                         dest_file='/test-file', source_revision='123',
                         dest_detail='124', status=FileDiff.MODIFIED,
-                        diff=DEFAULT_FILEDIFF_DATA, save=True):
+                        diff=DEFAULT_FILEDIFF_DATA_DIFF, save=True):
         """Create a FileDiff for testing.
 
         The FileDiff is tied to the given DiffSet. It's populated with
diff --git a/reviewboard/webapi/tests/test_diff.py b/reviewboard/webapi/tests/test_diff.py
index 2369c6f07b553b68a83d4b16837facce4178e03d..a1eee5bc7d98363cbfabcc65199cd43e18c7f056 100644
--- a/reviewboard/webapi/tests/test_diff.py
+++ b/reviewboard/webapi/tests/test_diff.py
@@ -1,12 +1,10 @@
 from __future__ import unicode_literals
 
-import os
-
+from django.core.files.uploadedfile import SimpleUploadedFile
 from django.utils import six
 from djblets.webapi.errors import (INVALID_ATTRIBUTE, INVALID_FORM_DATA,
                                    PERMISSION_DENIED)
 
-from reviewboard import scmtools
 from reviewboard.diffviewer.models import DiffSet
 from reviewboard.webapi.errors import DIFF_TOO_BIG
 from reviewboard.webapi.resources import resources
@@ -74,11 +72,12 @@ class ResourceListTests(ExtraDataListMixin, ReviewRequestChildListMixin,
             repository=repository,
             submitter=user)
 
+        diff = SimpleUploadedFile('diff', self.DEFAULT_GIT_README_DIFF,
+                                  content_type='type/x-patch')
+
         if post_valid_data:
-            diff_filename = os.path.join(os.path.dirname(scmtools.__file__),
-                                         'testdata', 'git_readme.diff')
             post_data = {
-                'path': open(diff_filename, 'r'),
+                'path': diff,
                 'basedir': '/trunk',
                 'base_commit_id': '1234',
             }
@@ -124,13 +123,13 @@ class ResourceListTests(ExtraDataListMixin, ReviewRequestChildListMixin,
             repository=repository,
             submitter=self.user)
 
-        diff_filename = os.path.join(os.path.dirname(scmtools.__file__),
-                                     'testdata', 'git_readme.diff')
-        with open(diff_filename, "r") as f:
-            rsp = self.api_post(
-                get_diff_list_url(review_request),
-                {'path': f},
-                expected_status=400)
+        diff = SimpleUploadedFile('diff', self.DEFAULT_GIT_README_DIFF,
+                                  content_type='type/x-patch')
+
+        rsp = self.api_post(
+            get_diff_list_url(review_request),
+            {'path': diff},
+            expected_status=400)
 
         self.assertEqual(rsp['stat'], 'fail')
         self.assertEqual(rsp['err']['code'], INVALID_FORM_DATA.code)
@@ -149,16 +148,16 @@ class ResourceListTests(ExtraDataListMixin, ReviewRequestChildListMixin,
             repository=repository,
             submitter=self.user)
 
-        diff_filename = os.path.join(os.path.dirname(scmtools.__file__),
-                                     'testdata', 'git_readme.diff')
-        with open(diff_filename, "r") as f:
-            rsp = self.api_post(
-                get_diff_list_url(review_request),
-                {
-                    'path': f,
-                    'basedir': "/trunk",
-                },
-                expected_status=400)
+        diff = SimpleUploadedFile('diff', self.DEFAULT_GIT_README_DIFF,
+                                  content_type='type/x-patch')
+
+        rsp = self.api_post(
+            get_diff_list_url(review_request),
+            {
+                'path': diff,
+                'basedir': "/trunk",
+            },
+            expected_status=400)
 
         self.assertEqual(rsp['stat'], 'fail')
         self.assertEqual(rsp['err']['code'], DIFF_TOO_BIG.code)
@@ -174,16 +173,16 @@ class ResourceListTests(ExtraDataListMixin, ReviewRequestChildListMixin,
         repository = self.create_repository(tool_name='Test')
         review_request = self.create_review_request(repository=repository)
 
-        diff_filename = os.path.join(os.path.dirname(scmtools.__file__),
-                                     'testdata', 'git_readme.diff')
-        with open(diff_filename, 'r') as f:
-            rsp = self.api_post(
-                get_diff_list_url(review_request),
-                {
-                    'path': f,
-                    'basedir': '/trunk',
-                },
-                expected_status=403)
+        diff = SimpleUploadedFile('diff', self.DEFAULT_GIT_README_DIFF,
+                                  content_type='type/x-patch')
+
+        rsp = self.api_post(
+            get_diff_list_url(review_request),
+            {
+                'path': diff,
+                'basedir': '/trunk',
+            },
+            expected_status=403)
 
         self.assertEqual(rsp['stat'], 'fail')
         self.assertEqual(rsp['err']['code'], PERMISSION_DENIED.code)
@@ -194,16 +193,16 @@ class ResourceListTests(ExtraDataListMixin, ReviewRequestChildListMixin,
         """
         review_request = self.create_review_request(submitter=self.user)
 
-        diff_filename = os.path.join(os.path.dirname(scmtools.__file__),
-                                     'testdata', 'git_readme.diff')
-        with open(diff_filename, 'r') as f:
-            rsp = self.api_post(
-                get_diff_list_url(review_request),
-                {
-                    'path': f,
-                    'basedir': '/trunk',
-                },
-                expected_status=400)
+        diff = SimpleUploadedFile('diff', self.DEFAULT_GIT_README_DIFF,
+                                  content_type='type/x-patch')
+
+        rsp = self.api_post(
+            get_diff_list_url(review_request),
+            {
+                'path': diff,
+                'basedir': '/trunk',
+            },
+            expected_status=400)
 
         self.assertEqual(rsp['stat'], 'fail')
         self.assertEqual(rsp['err']['code'], INVALID_ATTRIBUTE.code)
diff --git a/reviewboard/webapi/tests/test_draft_diff.py b/reviewboard/webapi/tests/test_draft_diff.py
index 15fcc3d92ec69bd1193caffdeb568464272a6c8c..a6459353c9a4c1501842940706573f69aba80a50 100644
--- a/reviewboard/webapi/tests/test_draft_diff.py
+++ b/reviewboard/webapi/tests/test_draft_diff.py
@@ -1,11 +1,9 @@
 from __future__ import unicode_literals
 
-import os
-
+from django.core.files.uploadedfile import SimpleUploadedFile
 from django.utils import six
 from djblets.webapi.errors import INVALID_FORM_DATA
 
-from reviewboard import scmtools
 from reviewboard.diffviewer.models import DiffSet
 from reviewboard.webapi.errors import DIFF_TOO_BIG
 from reviewboard.webapi.resources import resources
@@ -79,10 +77,10 @@ class ResourceListTests(ExtraDataListMixin, BaseWebAPITestCase):
             submitter=user)
 
         if post_valid_data:
-            diff_filename = os.path.join(os.path.dirname(scmtools.__file__),
-                                         'testdata', 'git_readme.diff')
+            diff = SimpleUploadedFile('diff', self.DEFAULT_GIT_README_DIFF,
+                                      content_type='text/x-patch')
             post_data = {
-                'path': open(diff_filename, 'r'),
+                'path': diff,
                 'basedir': '/trunk',
                 'base_commit_id': '1234',
             }
@@ -126,14 +124,13 @@ class ResourceListTests(ExtraDataListMixin, BaseWebAPITestCase):
         review_request = self.create_review_request(repository=repository,
                                                     submitter=self.user)
 
-        diff_filename = os.path.join(os.path.dirname(scmtools.__file__),
-                                     'testdata', 'git_readme.diff')
+        diff = SimpleUploadedFile('diff', self.DEFAULT_GIT_README_DIFF,
+                                  content_type='text/x-patch')
 
-        with open(diff_filename, 'r') as f:
-            rsp = self.api_post(
-                get_draft_diff_list_url(review_request),
-                {'path': f},
-                expected_status=400)
+        rsp = self.api_post(
+            get_draft_diff_list_url(review_request),
+            {'path': diff},
+            expected_status=400)
 
         self.assertEqual(rsp['stat'], 'fail')
         self.assertEqual(rsp['err']['code'], INVALID_FORM_DATA.code)
@@ -151,17 +148,16 @@ class ResourceListTests(ExtraDataListMixin, BaseWebAPITestCase):
         review_request = self.create_review_request(repository=repository,
                                                     submitter=self.user)
 
-        diff_filename = os.path.join(os.path.dirname(scmtools.__file__),
-                                     'testdata', 'git_readme.diff')
-
-        with open(diff_filename, 'r') as f:
-            rsp = self.api_post(
-                get_draft_diff_list_url(review_request),
-                {
-                    'path': f,
-                    'basedir': "/trunk",
-                },
-                expected_status=400)
+        diff = SimpleUploadedFile('diff', self.DEFAULT_GIT_README_DIFF,
+                                  content_type='text/x-patch')
+
+        rsp = self.api_post(
+            get_draft_diff_list_url(review_request),
+            {
+                'path': diff,
+                'basedir': "/trunk",
+            },
+            expected_status=400)
 
         self.assertEqual(rsp['stat'], 'fail')
         self.assertEqual(rsp['err']['code'], DIFF_TOO_BIG.code)
diff --git a/reviewboard/webapi/tests/test_draft_filediff.py b/reviewboard/webapi/tests/test_draft_filediff.py
index de6c4541cd4ee473a10ea63feaab1de9d9974569..75547d902d1cd2219f0f34c8e781d4205ed530ae 100644
--- a/reviewboard/webapi/tests/test_draft_filediff.py
+++ b/reviewboard/webapi/tests/test_draft_filediff.py
@@ -2,6 +2,7 @@ from __future__ import unicode_literals
 
 import os
 
+from django.core.files.uploadedfile import SimpleUploadedFile
 from django.utils import six
 from djblets.webapi.errors import INVALID_FORM_DATA
 
@@ -210,18 +211,16 @@ class ResourceItemTests(ExtraDataItemMixin, BaseWebAPITestCase):
         review_request = self.create_review_request(create_repository=True,
                                                     submitter=self.user)
 
-        diff_filename = os.path.join(os.path.dirname(scmtools.__file__),
-                                     'testdata',
-                                     'git_binary_image_modified.diff')
-
-        with open(diff_filename, 'r') as f:
-            rsp = self.api_post(
-                get_diff_list_url(review_request),
-                {
-                    'path': f,
-                    'base_commit_id': '1234',
-                },
-                expected_mimetype=diff_item_mimetype)
+        diff = SimpleUploadedFile('git_binary_image_modified.diff',
+                                  self.DEFAULT_GIT_BINARY_IMAGE_DIFF,
+                                  content_type='text/x-patch')
+        rsp = self.api_post(
+            get_diff_list_url(review_request),
+            {
+                'path': diff,
+                'base_commit_id': '1234',
+            },
+            expected_mimetype=diff_item_mimetype)
 
         self.assertEqual(rsp['stat'], 'ok')
 
@@ -261,18 +260,17 @@ class ResourceItemTests(ExtraDataItemMixin, BaseWebAPITestCase):
         review_request = self.create_review_request(create_repository=True,
                                                     submitter=self.user)
 
-        diff_filename = os.path.join(os.path.dirname(scmtools.__file__),
-                                     'testdata',
-                                     'git_binary_image_modified.diff')
-
-        with open(diff_filename, 'r') as f:
-            rsp = self.api_post(
-                get_diff_list_url(review_request),
-                {
-                    'path': f,
-                    'base_commit_id': '1234',
-                },
-                expected_mimetype=diff_item_mimetype)
+        diff = SimpleUploadedFile('git_binary_image_modified.diff',
+                                  self.DEFAULT_GIT_BINARY_IMAGE_DIFF,
+                                  content_type='text/x-patch')
+
+        rsp = self.api_post(
+            get_diff_list_url(review_request),
+            {
+                'path': diff,
+                'base_commit_id': '1234',
+            },
+            expected_mimetype=diff_item_mimetype)
 
         diffset = DiffSet.objects.get(pk=rsp['diff']['id'])
         filediff = diffset.files.all()[0]
diff --git a/reviewboard/webapi/tests/test_validate_diff.py b/reviewboard/webapi/tests/test_validate_diff.py
index c81a011714c50f3fcb874b93fd74a3bafecdf436..4c52f0b0e46ab1cbe5b16e82f3eb223b28fdecc5 100644
--- a/reviewboard/webapi/tests/test_validate_diff.py
+++ b/reviewboard/webapi/tests/test_validate_diff.py
@@ -74,22 +74,19 @@ class ResourceTests(SpyAgency, BaseWebAPITestCase):
         """Testing the POST validation/diffs/ API"""
         repository = self.create_repository(tool_name='Test')
 
-        diff_filename = os.path.join(os.path.dirname(scmtools.__file__),
-                                     'testdata', 'git_readme.diff')
-        f = open(diff_filename, "r")
+        diff = SimpleUploadedFile('readme.diff', self.DEFAULT_GIT_README_DIFF,
+                                  content_type='text/x-patch')
 
         self.api_post(
             get_validate_diff_url(),
             {
                 'repository': repository.pk,
-                'path': f,
+                'path': diff,
                 'basedir': '/trunk',
             },
             expected_status=200,
             expected_mimetype=validate_diff_mimetype)
 
-        f.close()
-
     @add_fixtures(['test_site'])
     def test_post_with_site(self):
         """Testing the POST validation/diffs/ API
@@ -100,19 +97,17 @@ class ResourceTests(SpyAgency, BaseWebAPITestCase):
 
         self._login_user(local_site=True)
 
-        diff_filename = os.path.join(os.path.dirname(scmtools.__file__),
-                                     'testdata', 'git_readme.diff')
-
-        with open(diff_filename, 'r') as fp:
-            self.api_post(
-                get_validate_diff_url(self.local_site_name),
-                {
-                    'repository': repository.pk,
-                    'path': fp,
-                    'basedir': '/trunk',
-                },
-                expected_status=200,
-                expected_mimetype=validate_diff_mimetype)
+        diff = SimpleUploadedFile('readme.diff', self.DEFAULT_GIT_README_DIFF,
+                                  content_type='text/x-patch')
+        self.api_post(
+            get_validate_diff_url(self.local_site_name),
+            {
+                'repository': repository.pk,
+                'path': diff,
+                'basedir': '/trunk',
+            },
+            expected_status=200,
+            expected_mimetype=validate_diff_mimetype)
 
     @add_fixtures(['test_site'])
     def test_post_with_site_no_access(self):
@@ -122,18 +117,16 @@ class ResourceTests(SpyAgency, BaseWebAPITestCase):
         repository = self.create_repository(with_local_site=True,
                                             tool_name='Test')
 
-        diff_filename = os.path.join(os.path.dirname(scmtools.__file__),
-                                     'testdata', 'git_readme.diff')
-
-        with open(diff_filename, 'r') as fp:
-            self.api_post(
-                get_validate_diff_url(self.local_site_name),
-                {
-                    'repository': repository.pk,
-                    'path': fp,
-                    'basedir': '/trunk',
-                },
-                expected_status=403)
+        diff = SimpleUploadedFile('readme.diff', self.DEFAULT_GIT_README_DIFF,
+                                  content_type='text/x-patch')
+        self.api_post(
+            get_validate_diff_url(self.local_site_name),
+            {
+                'repository': repository.pk,
+                'path': diff,
+                'basedir': '/trunk',
+            },
+            expected_status=403)
 
     def test_post_with_base_commit_id(self):
         """Testing the POST validation/diffs/ API with base_commit_id"""
@@ -141,23 +134,20 @@ class ResourceTests(SpyAgency, BaseWebAPITestCase):
 
         repository = self.create_repository(tool_name='Test')
 
-        diff_filename = os.path.join(os.path.dirname(scmtools.__file__),
-                                     'testdata', 'git_readme.diff')
-        f = open(diff_filename, "r")
+        diff = SimpleUploadedFile('readme.diff', self.DEFAULT_GIT_README_DIFF,
+                                  content_type='text/x-patch')
 
         self.api_post(
             get_validate_diff_url(),
             {
                 'repository': repository.pk,
-                'path': f,
+                'path': diff,
                 'basedir': '/trunk',
                 'base_commit_id': '1234',
             },
             expected_status=200,
             expected_mimetype=validate_diff_mimetype)
 
-        f.close()
-
         last_call = DiffSet.objects.create_from_upload.last_call
         self.assertEqual(last_call.kwargs.get('base_commit_id'), '1234')
 
@@ -165,18 +155,15 @@ class ResourceTests(SpyAgency, BaseWebAPITestCase):
         """Testing the POST validations/diffs/ API with a missing basedir"""
         repository = self.create_repository(tool_name='Test')
 
-        diff_filename = os.path.join(os.path.dirname(scmtools.__file__),
-                                     'testdata', 'git_readme.diff')
-        f = open(diff_filename, 'r')
-
+        diff = SimpleUploadedFile('readme.diff', self.DEFAULT_GIT_README_DIFF,
+                                  content_type='text/x-patch')
         rsp = self.api_post(
             get_validate_diff_url(),
             {
                 'repository': repository.pk,
-                'path': f,
+                'path': diff,
             },
             expected_status=400)
-        f.close()
 
         self.assertEqual(rsp['stat'], 'fail')
         self.assertEqual(rsp['err']['code'], INVALID_FORM_DATA.code)
@@ -188,19 +175,17 @@ class ResourceTests(SpyAgency, BaseWebAPITestCase):
         """
         repository = self.create_repository(tool_name='Test')
 
-        diff_filename = os.path.join(os.path.dirname(scmtools.__file__),
-                                     'testdata', 'git_file_not_found.diff')
-        f = open(diff_filename, 'r')
-
+        diff = SimpleUploadedFile('readme.diff',
+                                  self.DEFAULT_GIT_FILE_NOT_FOUND_DIFF,
+                                  content_type='text/x-patch')
         rsp = self.api_post(
             get_validate_diff_url(),
             {
                 'repository': repository.pk,
-                'path': f,
+                'path': diff,
                 'basedir': '',
             },
             expected_status=400)
-        f.close()
 
         self.assertEqual(rsp['stat'], 'fail')
         self.assertEqual(rsp['err']['code'], REPO_FILE_NOT_FOUND.code)
@@ -240,12 +225,13 @@ class ResourceTests(SpyAgency, BaseWebAPITestCase):
                                path='blah',
                                mirror_path=repository.path)
 
+        diff = SimpleUploadedFile('readme.diff', self.VALID_GIT_DIFF,
+                                  content_type='text/x-patch')
         rsp = self.api_post(
             get_validate_diff_url(),
             {
                 'repository': repository.path,
-                'path': SimpleUploadedFile('readme.diff', self.VALID_GIT_DIFF,
-                                           content_type='text/x-patch'),
+                'path': diff,
                 'basedir': '/trunk',
             },
             expected_status=400)
