mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	tests: Update ZulipTestCase.tearDown to remove local uploads.
Previously, tests that exercised code paths that added local uploads did not always clean up `settings.LOCAL_UPLOADS_DIR` after the test was complete. Updates the `ZulipTestCase` class to remove any local uploads in the unique `settings.LOCAL_UPLOADS_DIR` in `tearDown` for all tests.
This commit is contained in:
		
				
					committed by
					
						
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							a6fd41e012
						
					
				
				
					commit
					7b225245c0
				
			@@ -159,6 +159,11 @@ class ZulipTestCase(TestCase):
 | 
			
		||||
        flush_per_request_caches()
 | 
			
		||||
        translation.activate(settings.LANGUAGE_CODE)
 | 
			
		||||
 | 
			
		||||
        # Clean up local uploads directory after tests:
 | 
			
		||||
        assert settings.LOCAL_UPLOADS_DIR is not None
 | 
			
		||||
        if os.path.exists(settings.LOCAL_UPLOADS_DIR):
 | 
			
		||||
            shutil.rmtree(settings.LOCAL_UPLOADS_DIR)
 | 
			
		||||
 | 
			
		||||
        # Clean up after using fakeldap in LDAP tests:
 | 
			
		||||
        if hasattr(self, "mock_ldap") and hasattr(self, "mock_initialize"):
 | 
			
		||||
            if self.mock_ldap is not None:
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,6 @@ import datetime
 | 
			
		||||
import io
 | 
			
		||||
import os
 | 
			
		||||
import re
 | 
			
		||||
import shutil
 | 
			
		||||
import time
 | 
			
		||||
import urllib
 | 
			
		||||
from io import StringIO
 | 
			
		||||
@@ -67,12 +66,6 @@ from zerver.models import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def destroy_uploads() -> None:
 | 
			
		||||
    assert settings.LOCAL_UPLOADS_DIR is not None
 | 
			
		||||
    if os.path.exists(settings.LOCAL_UPLOADS_DIR):
 | 
			
		||||
        shutil.rmtree(settings.LOCAL_UPLOADS_DIR)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class FileUploadTest(UploadSerializeMixin, ZulipTestCase):
 | 
			
		||||
    def test_rest_endpoint(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
@@ -347,7 +340,8 @@ class FileUploadTest(UploadSerializeMixin, ZulipTestCase):
 | 
			
		||||
        result = self.client_post("/json/user_uploads", {"file": fp})
 | 
			
		||||
        response_dict = self.assert_json_success(result)
 | 
			
		||||
 | 
			
		||||
        destroy_uploads()
 | 
			
		||||
        assert settings.LOCAL_UPLOADS_DIR is not None
 | 
			
		||||
        self.rm_tree(settings.LOCAL_UPLOADS_DIR)
 | 
			
		||||
 | 
			
		||||
        response = self.client_get(response_dict["uri"])
 | 
			
		||||
        self.assertEqual(response.status_code, 404)
 | 
			
		||||
@@ -960,10 +954,6 @@ class FileUploadTest(UploadSerializeMixin, ZulipTestCase):
 | 
			
		||||
        check_xsend_links("áéБД.pdf", "%C3%A1%C3%A9%D0%91%D0%94.pdf")
 | 
			
		||||
        check_xsend_links("zulip", "zulip", 'filename="zulip"')
 | 
			
		||||
 | 
			
		||||
    def tearDown(self) -> None:
 | 
			
		||||
        destroy_uploads()
 | 
			
		||||
        super().tearDown()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class AvatarTest(UploadSerializeMixin, ZulipTestCase):
 | 
			
		||||
    def test_get_avatar_field(self) -> None:
 | 
			
		||||
@@ -1406,10 +1396,6 @@ class AvatarTest(UploadSerializeMixin, ZulipTestCase):
 | 
			
		||||
                result = self.client_post("/json/users/me/avatar", {"file": fp})
 | 
			
		||||
        self.assert_json_error(result, "Uploaded file is larger than the allowed limit of 0 MiB")
 | 
			
		||||
 | 
			
		||||
    def tearDown(self) -> None:
 | 
			
		||||
        destroy_uploads()
 | 
			
		||||
        super().tearDown()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class EmojiTest(UploadSerializeMixin, ZulipTestCase):
 | 
			
		||||
    # While testing GIF resizing, we can't test if the final GIF has the same
 | 
			
		||||
@@ -1475,10 +1461,6 @@ class EmojiTest(UploadSerializeMixin, ZulipTestCase):
 | 
			
		||||
        self.assertFalse(is_animated)
 | 
			
		||||
        assert no_still_data is None
 | 
			
		||||
 | 
			
		||||
    def tearDown(self) -> None:
 | 
			
		||||
        destroy_uploads()
 | 
			
		||||
        super().tearDown()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class RealmIconTest(UploadSerializeMixin, ZulipTestCase):
 | 
			
		||||
    def test_multiple_upload_failure(self) -> None:
 | 
			
		||||
@@ -1617,10 +1599,6 @@ class RealmIconTest(UploadSerializeMixin, ZulipTestCase):
 | 
			
		||||
                result = self.client_post("/json/realm/icon", {"file": fp})
 | 
			
		||||
        self.assert_json_error(result, "Uploaded file is larger than the allowed limit of 0 MiB")
 | 
			
		||||
 | 
			
		||||
    def tearDown(self) -> None:
 | 
			
		||||
        destroy_uploads()
 | 
			
		||||
        super().tearDown()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class RealmLogoTest(UploadSerializeMixin, ZulipTestCase):
 | 
			
		||||
    night = False
 | 
			
		||||
@@ -1820,10 +1798,6 @@ class RealmLogoTest(UploadSerializeMixin, ZulipTestCase):
 | 
			
		||||
                )
 | 
			
		||||
        self.assert_json_error(result, "Uploaded file is larger than the allowed limit of 0 MiB")
 | 
			
		||||
 | 
			
		||||
    def tearDown(self) -> None:
 | 
			
		||||
        destroy_uploads()
 | 
			
		||||
        super().tearDown()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class RealmNightLogoTest(RealmLogoTest):
 | 
			
		||||
    # Run the same tests as for RealmLogoTest, just with dark theme enabled
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
import os
 | 
			
		||||
import re
 | 
			
		||||
import shutil
 | 
			
		||||
import urllib
 | 
			
		||||
from io import StringIO
 | 
			
		||||
from urllib.parse import urlparse
 | 
			
		||||
@@ -39,12 +38,6 @@ from zerver.models import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def destroy_uploads() -> None:
 | 
			
		||||
    assert settings.LOCAL_UPLOADS_DIR is not None
 | 
			
		||||
    if os.path.exists(settings.LOCAL_UPLOADS_DIR):
 | 
			
		||||
        shutil.rmtree(settings.LOCAL_UPLOADS_DIR)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class LocalStorageTest(UploadSerializeMixin, ZulipTestCase):
 | 
			
		||||
    def test_upload_message_attachment(self) -> None:
 | 
			
		||||
        user_profile = self.example_user("hamlet")
 | 
			
		||||
@@ -269,7 +262,3 @@ class LocalStorageTest(UploadSerializeMixin, ZulipTestCase):
 | 
			
		||||
        )
 | 
			
		||||
        path_id = urllib.parse.urlparse(uri).path
 | 
			
		||||
        self.assertEqual(delete_export_tarball(path_id), path_id)
 | 
			
		||||
 | 
			
		||||
    def tearDown(self) -> None:
 | 
			
		||||
        destroy_uploads()
 | 
			
		||||
        super().tearDown()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user