Changed the creation of temporary test dirs to use names which include the test class name, in order to make it possible to run test cases in parallel. Disabled coverage testing when running in parallel (those classes cannot be pickled and distributed to the test runner threads, and also won't pass coverage data back). Tweaked the TestCase.tempdir() method.
- Legacy-Id: 13157
This commit is contained in:
parent
6110b15de1
commit
14c748df98
|
@ -422,9 +422,7 @@ Man Expires September 22, 2015 [Page 3]
|
|||
"""
|
||||
|
||||
def setUp(self):
|
||||
self.id_dir = os.path.abspath("tmp-id-dir")
|
||||
if not os.path.exists(self.id_dir):
|
||||
os.mkdir(self.id_dir)
|
||||
self.id_dir = self.tempdir('id')
|
||||
self.saved_internet_draft_path = settings.INTERNET_DRAFT_PATH
|
||||
settings.INTERNET_DRAFT_PATH = self.id_dir
|
||||
self.saved_internet_all_drafts_archive_dir = settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR
|
||||
|
|
|
@ -25,8 +25,7 @@ from ietf.utils.test_utils import login_testing_unauthorized
|
|||
|
||||
class EditCharterTests(TestCase):
|
||||
def setUp(self):
|
||||
self.charter_dir = os.path.abspath("tmp-charter-dir")
|
||||
os.mkdir(self.charter_dir)
|
||||
self.charter_dir = self.tempdir('charter')
|
||||
self.saved_charter_path = settings.CHARTER_PATH
|
||||
settings.CHARTER_PATH = self.charter_dir
|
||||
|
||||
|
|
|
@ -388,8 +388,7 @@ class ConflictReviewSubmitTests(TestCase):
|
|||
|
||||
def setUp(self):
|
||||
make_test_data()
|
||||
self.test_dir = os.path.abspath("tmp-conflict-review-testdir")
|
||||
os.mkdir(self.test_dir)
|
||||
self.test_dir = self.tempdir('conflict-review')
|
||||
self.saved_conflict_review_path = settings.CONFLICT_REVIEW_PATH
|
||||
settings.CONFLICT_REVIEW_PATH = self.test_dir
|
||||
|
||||
|
|
|
@ -549,12 +549,8 @@ class ExpireIDsTests(TestCase):
|
|||
def setUp(self):
|
||||
self.saved_id_dir = settings.INTERNET_DRAFT_PATH
|
||||
self.saved_archive_dir = settings.INTERNET_DRAFT_ARCHIVE_DIR
|
||||
self.id_dir = os.path.abspath("tmp-id-dir")
|
||||
self.archive_dir = os.path.abspath("tmp-id-archive")
|
||||
if not os.path.exists(self.id_dir):
|
||||
os.mkdir(self.id_dir)
|
||||
if not os.path.exists(self.archive_dir):
|
||||
os.mkdir(self.archive_dir)
|
||||
self.id_dir = self.tempdir('id')
|
||||
self.archive_dir = self.tempdir('id-archive')
|
||||
os.mkdir(os.path.join(self.archive_dir, "unknown_ids"))
|
||||
os.mkdir(os.path.join(self.archive_dir, "deleted_tombstones"))
|
||||
os.mkdir(os.path.join(self.archive_dir, "expired_without_tombstone"))
|
||||
|
|
|
@ -22,15 +22,17 @@ from ietf.utils.test_data import make_test_data
|
|||
|
||||
class GroupMaterialTests(TestCase):
|
||||
def setUp(self):
|
||||
self.materials_dir = os.path.abspath("tmp-document-dir")
|
||||
if not os.path.exists(self.materials_dir):
|
||||
os.makedirs(os.path.join(self.materials_dir, "slides"))
|
||||
self.materials_dir = self.tempdir("materials")
|
||||
self.slides_dir = os.path.join(self.materials_dir, "slides")
|
||||
if not os.path.exists(self.slides_dir):
|
||||
os.mkdir(self.slides_dir)
|
||||
self.saved_document_path_pattern = settings.DOCUMENT_PATH_PATTERN
|
||||
settings.DOCUMENT_PATH_PATTERN = self.materials_dir + "/{doc.type_id}/"
|
||||
|
||||
self.agenda_dir = os.path.abspath("tmp-agenda-dir")
|
||||
if not os.path.exists(self.agenda_dir):
|
||||
os.makedirs(os.path.join(self.agenda_dir, "42", "slides"))
|
||||
self.agenda_dir = self.tempdir("agenda")
|
||||
self.meeting_slides_dir = os.path.join(self.agenda_dir, "42", "slides")
|
||||
if not os.path.exists(self.meeting_slides_dir):
|
||||
os.makedirs(self.meeting_slides_dir)
|
||||
self.saved_agenda_path = settings.AGENDA_PATH
|
||||
settings.AGENDA_PATH = self.agenda_dir
|
||||
|
||||
|
|
|
@ -30,10 +30,7 @@ from ietf.person.factories import PersonFactory
|
|||
|
||||
class ReviewTests(TestCase):
|
||||
def setUp(self):
|
||||
self.review_dir = os.path.abspath("tmp-review-dir")
|
||||
if not os.path.exists(self.review_dir):
|
||||
os.mkdir(self.review_dir)
|
||||
|
||||
self.review_dir = self.tempdir('review')
|
||||
self.old_document_path_pattern = settings.DOCUMENT_PATH_PATTERN
|
||||
settings.DOCUMENT_PATH_PATTERN = self.review_dir + "/{doc.type_id}/"
|
||||
|
||||
|
|
|
@ -479,9 +479,7 @@ class StatusChangeSubmitTests(TestCase):
|
|||
|
||||
def setUp(self):
|
||||
make_test_data()
|
||||
self.test_dir = os.path.abspath("tmp-status-change-testdir")
|
||||
if not os.path.exists(self.test_dir):
|
||||
os.mkdir(self.test_dir)
|
||||
self.test_dir = self.tempdir('status-change')
|
||||
self.saved_status_change_path = settings.STATUS_CHANGE_PATH
|
||||
settings.STATUS_CHANGE_PATH = self.test_dir
|
||||
|
||||
|
|
|
@ -42,8 +42,7 @@ def group_urlreverse_list(group, viewname):
|
|||
|
||||
class GroupPagesTests(TestCase):
|
||||
def setUp(self):
|
||||
self.charter_dir = os.path.abspath("tmp-charter-dir")
|
||||
os.mkdir(self.charter_dir)
|
||||
self.charter_dir = self.tempdir('charter')
|
||||
self.saved_charter_path = settings.CHARTER_PATH
|
||||
settings.CHARTER_PATH = self.charter_dir
|
||||
|
||||
|
@ -418,8 +417,7 @@ class GroupPagesTests(TestCase):
|
|||
|
||||
class GroupEditTests(TestCase):
|
||||
def setUp(self):
|
||||
self.charter_dir = os.path.abspath("tmp-charter-dir")
|
||||
os.mkdir(self.charter_dir)
|
||||
self.charter_dir = self.tempdir('charter')
|
||||
self.saved_charter_path = settings.CHARTER_PATH
|
||||
settings.CHARTER_PATH = self.charter_dir
|
||||
|
||||
|
|
|
@ -12,9 +12,7 @@ from ietf.utils.test_data import make_test_data
|
|||
|
||||
class IndexTests(TestCase):
|
||||
def setUp(self):
|
||||
self.id_dir = os.path.abspath("tmp-id-dir")
|
||||
if not os.path.exists(self.id_dir):
|
||||
os.mkdir(self.id_dir)
|
||||
self.id_dir = self.tempdir('id')
|
||||
self.saved_internet_draft_path = settings.INTERNET_DRAFT_PATH
|
||||
settings.INTERNET_DRAFT_PATH = self.id_dir
|
||||
|
||||
|
|
|
@ -95,9 +95,7 @@ class IESGAgendaTests(TestCase):
|
|||
by = Person.objects.get(name="Areað Irector")
|
||||
date = get_agenda_date()
|
||||
|
||||
self.draft_dir = os.path.abspath("tmp-agenda-draft-dir")
|
||||
if not os.path.exists(self.draft_dir):
|
||||
os.mkdir(self.draft_dir)
|
||||
self.draft_dir = self.tempdir('agenda-draft')
|
||||
self.saved_internet_draft_path = settings.INTERNET_DRAFT_PATH
|
||||
settings.INTERNET_DRAFT_PATH = self.draft_dir
|
||||
|
||||
|
|
|
@ -41,8 +41,7 @@ class IetfAuthTests(TestCase):
|
|||
settings.USE_PYTHON_HTDIGEST = True
|
||||
|
||||
self.saved_htpasswd_file = settings.HTPASSWD_FILE
|
||||
self.htpasswd_dir = os.path.abspath("tmp-htpasswd-dir")
|
||||
os.mkdir(self.htpasswd_dir)
|
||||
self.htpasswd_dir = self.tempdir('htpasswd')
|
||||
settings.HTPASSWD_FILE = os.path.join(self.htpasswd_dir, "htpasswd")
|
||||
open(settings.HTPASSWD_FILE, 'a').close() # create empty file
|
||||
|
||||
|
|
|
@ -321,9 +321,7 @@ class ManagementCommandTests(TestCase):
|
|||
class LiaisonManagementTests(TestCase):
|
||||
def setUp(self):
|
||||
self.saved_liaison_attach_path = settings.LIAISON_ATTACH_PATH
|
||||
self.liaison_dir = os.path.abspath("tmp-liaison-dir")
|
||||
if not os.path.exists(self.liaison_dir):
|
||||
os.mkdir(self.liaison_dir)
|
||||
self.liaison_dir = self.tempdir('liaison')
|
||||
settings.LIAISON_ATTACH_PATH = self.liaison_dir
|
||||
|
||||
def tearDown(self):
|
||||
|
|
|
@ -38,9 +38,7 @@ from ietf.doc.factories import DocumentFactory
|
|||
|
||||
class MeetingTests(TestCase):
|
||||
def setUp(self):
|
||||
self.materials_dir = os.path.abspath(settings.TEST_MATERIALS_DIR)
|
||||
if not os.path.exists(self.materials_dir):
|
||||
os.mkdir(self.materials_dir)
|
||||
self.materials_dir = self.tempdir('materials')
|
||||
self.saved_agenda_path = settings.AGENDA_PATH
|
||||
settings.AGENDA_PATH = self.materials_dir
|
||||
|
||||
|
@ -620,9 +618,7 @@ class EditScheduleListTests(TestCase):
|
|||
|
||||
class InterimTests(TestCase):
|
||||
def setUp(self):
|
||||
self.materials_dir = os.path.abspath(settings.TEST_MATERIALS_DIR)
|
||||
if not os.path.exists(self.materials_dir):
|
||||
os.mkdir(self.materials_dir)
|
||||
self.materials_dir = self.tempdir('materials')
|
||||
self.saved_agenda_path = settings.AGENDA_PATH
|
||||
settings.AGENDA_PATH = self.materials_dir
|
||||
|
||||
|
@ -1440,7 +1436,7 @@ class FinalizeProceedingsTests(TestCase):
|
|||
class MaterialsTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.materials_dir = os.path.abspath(settings.TEST_MATERIALS_DIR)
|
||||
self.materials_dir = self.tempdir('materials')
|
||||
if not os.path.exists(self.materials_dir):
|
||||
os.mkdir(self.materials_dir)
|
||||
self.saved_agenda_path = settings.AGENDA_PATH
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#import tempfile
|
||||
import datetime
|
||||
import os
|
||||
import shutil
|
||||
import urlparse
|
||||
from pyquery import PyQuery
|
||||
|
@ -52,9 +51,7 @@ def get_cert_files():
|
|||
|
||||
def build_test_public_keys_dir(obj):
|
||||
obj.saved_nomcom_public_keys_dir = settings.NOMCOM_PUBLIC_KEYS_DIR
|
||||
obj.nomcom_public_keys_dir = os.path.abspath("tmp-nomcom-public-keys-dir")
|
||||
if not os.path.exists(obj.nomcom_public_keys_dir):
|
||||
os.mkdir(obj.nomcom_public_keys_dir)
|
||||
obj.nomcom_public_keys_dir = obj.tempdir('nomcom-public-keys')
|
||||
settings.NOMCOM_PUBLIC_KEYS_DIR = obj.nomcom_public_keys_dir
|
||||
|
||||
def clean_test_public_keys_dir(obj):
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import os
|
||||
import shutil
|
||||
|
||||
from StringIO import StringIO
|
||||
|
@ -21,18 +20,15 @@ SECR_USER='secretary'
|
|||
class SecrDraftsTestCase(TestCase):
|
||||
def setUp(self):
|
||||
self.saved_internet_draft_path = settings.INTERNET_DRAFT_PATH
|
||||
self.repository_dir = os.path.abspath("tmp-submit-repository-dir")
|
||||
os.mkdir(self.repository_dir)
|
||||
self.repository_dir = self.tempdir('submit-repository')
|
||||
settings.INTERNET_DRAFT_PATH = self.repository_dir
|
||||
|
||||
self.saved_internet_draft_archive_dir = settings.INTERNET_DRAFT_ARCHIVE_DIR
|
||||
self.archive_dir = os.path.abspath("tmp-submit-archive-dir")
|
||||
os.mkdir(self.archive_dir)
|
||||
self.archive_dir = self.tempdir('submit-archive')
|
||||
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.archive_dir
|
||||
|
||||
self.saved_idsubmit_manual_staging_dir = settings.IDSUBMIT_MANUAL_STAGING_DIR
|
||||
self.manual_dir = os.path.abspath("tmp-submit-manual-dir")
|
||||
os.mkdir(self.manual_dir)
|
||||
self.manual_dir = self.tempdir('submit-manual')
|
||||
settings.IDSUBMIT_MANUAL_STAGING_DIR = self.manual_dir
|
||||
|
||||
def tearDown(self):
|
||||
|
|
|
@ -20,24 +20,18 @@ from ietf.utils.test_utils import TestCase
|
|||
|
||||
class SecrMeetingTestCase(TestCase):
|
||||
def setUp(self):
|
||||
self.proceedings_dir = os.path.abspath("tmp-proceedings-dir")
|
||||
if not os.path.exists(self.proceedings_dir):
|
||||
os.mkdir(self.proceedings_dir)
|
||||
self.proceedings_dir = self.tempdir('proceedings')
|
||||
self.saved_secr_proceedings_dir = settings.SECR_PROCEEDINGS_DIR
|
||||
settings.SECR_PROCEEDINGS_DIR = self.proceedings_dir
|
||||
self.saved_agenda_path = settings.AGENDA_PATH
|
||||
settings.AGENDA_PATH = self.proceedings_dir
|
||||
|
||||
self.bluesheet_dir = os.path.abspath(settings.TEST_BLUESHEET_DIR)
|
||||
self.bluesheet_dir = self.tempdir('bluesheet')
|
||||
self.bluesheet_path = os.path.join(self.bluesheet_dir,'blue_sheet.rtf')
|
||||
if not os.path.exists(self.bluesheet_dir):
|
||||
os.mkdir(self.bluesheet_dir)
|
||||
self.saved_secr_blue_sheet_path = settings.SECR_BLUE_SHEET_PATH
|
||||
settings.SECR_BLUE_SHEET_PATH = self.bluesheet_path
|
||||
|
||||
self.materials_dir = os.path.abspath(settings.TEST_MATERIALS_DIR)
|
||||
if not os.path.exists(self.materials_dir):
|
||||
os.mkdir(self.materials_dir)
|
||||
self.materials_dir = self.tempdir('materials')
|
||||
|
||||
def tearDown(self):
|
||||
settings.SECR_PROCEEDINGS_DIR = self.saved_secr_proceedings_dir
|
||||
|
|
|
@ -39,11 +39,9 @@ class ProceedingsTestCase(TestCase):
|
|||
|
||||
class RecordingTestCase(TestCase):
|
||||
def setUp(self):
|
||||
self.meeting_recordings_dir = os.path.abspath("tmp-meeting-recordings-dir")
|
||||
self.meeting_recordings_dir = self.tempdir('meeting-recordings')
|
||||
self.saved_meeting_recordings_dir = settings.MEETING_RECORDINGS_DIR
|
||||
settings.MEETING_RECORDINGS_DIR = self.meeting_recordings_dir
|
||||
if not os.path.exists(self.meeting_recordings_dir):
|
||||
os.makedirs(self.meeting_recordings_dir)
|
||||
|
||||
def tearDown(self):
|
||||
shutil.rmtree(self.meeting_recordings_dir)
|
||||
|
@ -182,7 +180,7 @@ class OldProceedingsTestCase(TestCase):
|
|||
''' Ensure coverage of fragments of old proceedings generation until those are removed '''
|
||||
def setUp(self):
|
||||
self.session = SessionFactory(meeting__type_id='ietf')
|
||||
self.proceedings_dir = os.path.abspath("tmp-proceedings-dir")
|
||||
self.proceedings_dir = self.tempdir('proceedings')
|
||||
|
||||
# This unintuitive bit is a consequence of the surprising implementation of meeting.get_materials_path
|
||||
self.saved_agenda_path = settings.AGENDA_PATH
|
||||
|
|
|
@ -461,10 +461,6 @@ TEST_DIFF_FAILURE_DIR = "/tmp/test/failure/"
|
|||
|
||||
TEST_GHOSTDRIVER_LOG_PATH = "ghostdriver.log"
|
||||
|
||||
TEST_MATERIALS_DIR = "tmp-meeting-materials-dir"
|
||||
|
||||
TEST_BLUESHEET_DIR = "tmp-bluesheet-dir"
|
||||
|
||||
# These are regexes
|
||||
TEST_URL_COVERAGE_EXCLUDE = [
|
||||
r"^\^admin/",
|
||||
|
|
|
@ -56,34 +56,28 @@ def submission_file(name, rev, group, format, templatename, author=None):
|
|||
class SubmitTests(TestCase):
|
||||
def setUp(self):
|
||||
self.saved_idsubmit_staging_path = settings.IDSUBMIT_STAGING_PATH
|
||||
self.staging_dir = os.path.abspath("tmp-submit-staging-dir")
|
||||
os.mkdir(self.staging_dir)
|
||||
self.staging_dir = self.tempdir('submit-staging')
|
||||
settings.IDSUBMIT_STAGING_PATH = self.staging_dir
|
||||
|
||||
self.saved_internet_draft_path = settings.INTERNET_DRAFT_PATH
|
||||
self.saved_idsubmit_repository_path = settings.IDSUBMIT_REPOSITORY_PATH
|
||||
self.repository_dir = os.path.abspath("tmp-submit-repository-dir")
|
||||
os.mkdir(self.repository_dir)
|
||||
self.repository_dir = self.tempdir('submit-repository')
|
||||
settings.INTERNET_DRAFT_PATH = settings.IDSUBMIT_REPOSITORY_PATH = self.repository_dir
|
||||
|
||||
self.saved_archive_dir = settings.INTERNET_DRAFT_ARCHIVE_DIR
|
||||
self.archive_dir = os.path.abspath("tmp-submit-archive-dir")
|
||||
os.mkdir(self.archive_dir)
|
||||
self.archive_dir = self.tempdir('submit-archive')
|
||||
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.archive_dir
|
||||
|
||||
self.saved_yang_rfc_model_dir = settings.YANG_RFC_MODEL_DIR
|
||||
self.yang_rfc_model_dir = os.path.abspath("tmp-yang-rfc-model-dir")
|
||||
os.mkdir(self.yang_rfc_model_dir)
|
||||
self.yang_rfc_model_dir = self.tempdir('yang-rfc-model')
|
||||
settings.YANG_RFC_MODEL_DIR = self.yang_rfc_model_dir
|
||||
|
||||
self.saved_yang_draft_model_dir = settings.YANG_DRAFT_MODEL_DIR
|
||||
self.yang_draft_model_dir = os.path.abspath("tmp-yang-draft-model-dir")
|
||||
os.mkdir(self.yang_draft_model_dir)
|
||||
self.yang_draft_model_dir = self.tempdir('yang-draft-model')
|
||||
settings.YANG_DRAFT_MODEL_DIR = self.yang_draft_model_dir
|
||||
|
||||
self.saved_yang_inval_model_dir = settings.YANG_INVAL_MODEL_DIR
|
||||
self.yang_inval_model_dir = os.path.abspath("tmp-yang-inval-model-dir")
|
||||
os.mkdir(self.yang_inval_model_dir)
|
||||
self.yang_inval_model_dir = self.tempdir('yang-inval-model')
|
||||
settings.YANG_INVAL_MODEL_DIR = self.yang_inval_model_dir
|
||||
|
||||
def tearDown(self):
|
||||
|
|
|
@ -211,12 +211,8 @@ class RFCSyncTests(TestCase):
|
|||
def setUp(self):
|
||||
self.save_id_dir = settings.INTERNET_DRAFT_PATH
|
||||
self.save_archive_dir = settings.INTERNET_DRAFT_ARCHIVE_DIR
|
||||
self.id_dir = os.path.abspath("tmp-id-dir")
|
||||
self.archive_dir = os.path.abspath("tmp-id-archive")
|
||||
if not os.path.exists(self.id_dir):
|
||||
os.mkdir(self.id_dir)
|
||||
if not os.path.exists(self.archive_dir):
|
||||
os.mkdir(self.archive_dir)
|
||||
self.id_dir = self.tempdir('id')
|
||||
self.archive_dir = self.tempdir('id-archive')
|
||||
settings.INTERNET_DRAFT_PATH = self.id_dir
|
||||
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.archive_dir
|
||||
|
||||
|
|
|
@ -107,7 +107,6 @@ def safe_destroy_test_db(*args, **kwargs):
|
|||
global test_database_name, old_destroy
|
||||
keepdb = kwargs.get('keepdb', False)
|
||||
if not keepdb:
|
||||
print " Checking that it's safe to destroy test database..."
|
||||
if settings.DATABASES["default"]["NAME"] != test_database_name:
|
||||
print ' NOT SAFE; Changing settings.DATABASES["default"]["NAME"] from %s to %s' % (settings.DATABASES["default"]["NAME"], test_database_name)
|
||||
settings.DATABASES["default"]["NAME"] = test_database_name
|
||||
|
@ -366,6 +365,8 @@ class IetfTestRunner(DiscoverRunner):
|
|||
self.root_dir = os.path.dirname(settings.BASE_DIR)
|
||||
self.coverage_file = os.path.join(self.root_dir, settings.TEST_COVERAGE_MASTER_FILE)
|
||||
super(IetfTestRunner, self).__init__(**kwargs)
|
||||
if self.parallel:
|
||||
self.check_coverage = False
|
||||
|
||||
def setup_test_environment(self, **kwargs):
|
||||
global template_coverage_collection
|
||||
|
|
|
@ -101,8 +101,8 @@ class TestCase(django.test.TestCase):
|
|||
self.assertValidHTML(resp.content)
|
||||
|
||||
def tempdir(self, label):
|
||||
slug = slugify(self.__class__.replace('.','-'))
|
||||
dirname = "tmp-{label}-{slug}".format(**locals())
|
||||
slug = slugify(self.__class__.__name__.replace('.','-'))
|
||||
dirname = "tmp-{label}-{slug}-dir".format(**locals())
|
||||
path = os.path.abspath(dirname)
|
||||
if not os.path.exists(path):
|
||||
os.mkdir(path)
|
||||
|
@ -110,3 +110,5 @@ class TestCase(django.test.TestCase):
|
|||
|
||||
def __str__(self):
|
||||
return "%s (%s.%s)" % (self._testMethodName, strclass(self.__class__),self._testMethodName)
|
||||
|
||||
|
Loading…
Reference in a new issue