Use temporary directories instead of "real" filesystem for tests. Fixes #3414. Commit ready for merge.

- Legacy-Id: 19555
This commit is contained in:
Jennifer Richards 2021-11-05 19:45:57 +00:00
parent 968b775315
commit 81d9234d54
35 changed files with 278 additions and 419 deletions

View file

@ -5,7 +5,6 @@
import json
import html
import os
import shutil
import sys
from importlib import import_module
@ -38,14 +37,7 @@ OMITTED_APPS = (
)
class CustomApiTests(TestCase):
def setUp(self):
self.agenda_path = self.tempdir('materials')
self.saved_agenda_path = settings.AGENDA_PATH
settings.AGENDA_PATH = self.agenda_path
def tearDown(self):
shutil.rmtree(self.agenda_path)
settings.AGENDA_PATH = self.saved_agenda_path
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['AGENDA_PATH']
# Using mock to patch the import functions in ietf.meeting.views, where
# api_import_recordings() are using them:

View file

@ -3,7 +3,6 @@
import os
import shutil
import datetime
import io
import lxml
@ -13,6 +12,7 @@ import json
import copy
from http.cookies import SimpleCookie
from pathlib import Path
from pyquery import PyQuery
from urllib.parse import urlparse, parse_qs
from tempfile import NamedTemporaryFile
@ -523,19 +523,10 @@ Man Expires September 22, 2015 [Page 3]
"""
def setUp(self):
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
settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR = self.id_dir
f = io.open(os.path.join(self.id_dir, 'draft-ietf-mars-test-01.txt'), 'w')
f.write(self.draft_text)
f.close()
def tearDown(self):
settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR = self.saved_internet_all_drafts_archive_dir
settings.INTERNET_DRAFT_PATH = self.saved_internet_draft_path
shutil.rmtree(self.id_dir)
super().setUp()
for dir in [settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR, settings.INTERNET_DRAFT_PATH]:
with (Path(dir) / 'draft-ietf-mars-test-01.txt').open('w') as f:
f.write(self.draft_text)
def test_document_draft(self):
draft = WgDraftFactory(name='draft-ietf-mars-test',rev='01')
@ -694,6 +685,7 @@ Man Expires September 22, 2015 [Page 3]
self.assertEqual(r.status_code, 200)
rfc = WgRfcFactory()
(Path(settings.RFC_PATH) / rfc.get_base_name()).touch()
r = self.client.get(urlreverse("ietf.doc.views_doc.document_html", kwargs=dict(name=rfc.canonical_name())))
self.assertEqual(r.status_code, 200)
r = self.client.get(urlreverse("ietf.doc.views_doc.document_html", kwargs=dict(name=rfc.rfc_number())))
@ -1895,6 +1887,7 @@ class ReferencesTest(TestCase):
class GenerateDraftAliasesTests(TestCase):
def setUp(self):
super().setUp()
self.doc_aliases_file = NamedTemporaryFile(delete=False, mode='w+')
self.doc_aliases_file.close()
self.doc_virtual_file = NamedTemporaryFile(delete=False, mode='w+')
@ -1909,6 +1902,7 @@ class GenerateDraftAliasesTests(TestCase):
settings.DRAFT_VIRTUAL_PATH = self.saved_draft_virtual_path
os.unlink(self.doc_aliases_file.name)
os.unlink(self.doc_virtual_file.name)
super().tearDown()
def testManagementCommand(self):
a_month_ago = datetime.datetime.now() - datetime.timedelta(30)
@ -2013,6 +2007,7 @@ class GenerateDraftAliasesTests(TestCase):
class EmailAliasesTests(TestCase):
def setUp(self):
super().setUp()
WgDraftFactory(name='draft-ietf-mars-test',group__acronym='mars')
WgDraftFactory(name='draft-ietf-ames-test',group__acronym='ames')
RoleFactory(group__type_id='review', group__acronym='yangdoctors', name_id='secr')
@ -2044,6 +2039,7 @@ expand-draft-ietf-ames-test.all@virtual.ietf.org ames-author@example.ames, ames
def tearDown(self):
settings.DRAFT_VIRTUAL_PATH = self.saved_draft_virtual_path
os.unlink(self.doc_alias_file.name)
super().tearDown()
def testAliases(self):
PersonFactory(user__username='plain')
@ -2068,6 +2064,7 @@ expand-draft-ietf-ames-test.all@virtual.ietf.org ames-author@example.ames, ames
class DocumentMeetingTests(TestCase):
def setUp(self):
super().setUp()
self.group = GroupFactory(type_id='wg',state_id='active')
self.group_chair = PersonFactory()
self.group.role_set.create(name_id='chair',person=self.group_chair,email=self.group_chair.email())
@ -2384,17 +2381,15 @@ class FieldTests(TestCase):
)
class MaterialsTests(TestCase):
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['AGENDA_PATH']
def setUp(self):
self.id_dir = self.tempdir('id')
self.saved_agenda_path = settings.AGENDA_PATH
settings.AGENDA_PATH = self.id_dir
super().setUp()
meeting_number='111'
meeting_dir = os.path.join(f'{settings.AGENDA_PATH}',f'{meeting_number}')
os.mkdir(meeting_dir)
agenda_dir = os.path.join(meeting_dir,'agenda')
os.mkdir(agenda_dir)
meeting_dir = Path(settings.AGENDA_PATH) / meeting_number
meeting_dir.mkdir()
agenda_dir = meeting_dir / 'agenda'
agenda_dir.mkdir()
group_acronym='bogons'
@ -2402,35 +2397,26 @@ class MaterialsTests(TestCase):
# * build the DocumentHistory correctly
# * maybe do something by default with uploaded_filename
# and there should be a more usable unit to save bits to disk (handle_file_upload isn't quite right) that tests can leverage
try:
uploaded_filename_00 = f'agenda-{meeting_number}-{group_acronym}-00.txt'
uploaded_filename_01 = f'agenda-{meeting_number}-{group_acronym}-01.md'
f = io.open(os.path.join(agenda_dir, uploaded_filename_00), 'w')
f.write('This is some unremarkable text')
f.close()
f = io.open(os.path.join(agenda_dir, uploaded_filename_01), 'w')
f.write('This links to [an unusual place](https://unusual.example).')
f.close()
uploaded_filename_00 = f'agenda-{meeting_number}-{group_acronym}-00.txt'
uploaded_filename_01 = f'agenda-{meeting_number}-{group_acronym}-01.md'
f = io.open(os.path.join(agenda_dir, uploaded_filename_00), 'w')
f.write('This is some unremarkable text')
f.close()
f = io.open(os.path.join(agenda_dir, uploaded_filename_01), 'w')
f.write('This links to [an unusual place](https://unusual.example).')
f.close()
self.doc = DocumentFactory(type_id='agenda',rev='00',group__acronym=group_acronym, newrevisiondocevent=None, name=f'agenda-{meeting_number}-{group_acronym}', uploaded_filename=uploaded_filename_00)
e = NewRevisionDocEventFactory(doc=self.doc,rev='00')
self.doc.save_with_history([e])
self.doc.rev = '01'
self.doc.uploaded_filename = uploaded_filename_01
e = NewRevisionDocEventFactory(doc=self.doc, rev='01')
self.doc.save_with_history([e])
self.doc = DocumentFactory(type_id='agenda',rev='00',group__acronym=group_acronym, newrevisiondocevent=None, name=f'agenda-{meeting_number}-{group_acronym}', uploaded_filename=uploaded_filename_00)
e = NewRevisionDocEventFactory(doc=self.doc,rev='00')
self.doc.save_with_history([e])
self.doc.rev = '01'
self.doc.uploaded_filename = uploaded_filename_01
e = NewRevisionDocEventFactory(doc=self.doc, rev='01')
self.doc.save_with_history([e])
# This is necessary for the view to be able to find the document
# which hints that the view has an issue : if a materials document is taken out of all SessionPresentations, it is no longer accessable by this view
SessionPresentationFactory(session__meeting__number=meeting_number, session__group=self.doc.group, document=self.doc)
except:
shutil.rmtree(self.id_dir)
raise
def tearDown(self):
settings.AGENDA_PATH = self.saved_agenda_path
shutil.rmtree(self.id_dir)
# This is necessary for the view to be able to find the document
# which hints that the view has an issue : if a materials document is taken out of all SessionPresentations, it is no longer accessable by this view
SessionPresentationFactory(session__meeting__number=meeting_number, session__group=self.doc.group, document=self.doc)
def test_markdown_and_text(self):
url = urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=self.doc.name,rev='00'))
@ -2446,15 +2432,7 @@ class MaterialsTests(TestCase):
self.assertEqual(q('#materials-content .panel-body a').attr['href'],'https://unusual.example')
class Idnits2SupportTests(TestCase):
def setUp(self):
self.derived_dir = self.tempdir('derived')
self.saved_derived_dir = settings.DERIVED_DIR
settings.DERIVED_DIR = self.derived_dir
def tearDown(self):
settings.DERIVED_DIR = self.saved_derived_dir
shutil.rmtree(self.derived_dir)
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['DERIVED_DIR']
def test_obsoleted(self):
rfc = WgRfcFactory(alias2__name='rfc1001')
@ -2506,6 +2484,7 @@ class Idnits2SupportTests(TestCase):
class RfcdiffSupportTests(TestCase):
def setUp(self):
super().setUp()
self.target_view = 'ietf.doc.views_doc.rfcdiff_latest_json'
def getJson(self, view_args):

View file

@ -1056,6 +1056,7 @@ class DeferUndeferTestCase(TestCase):
# when charters support being deferred, be sure to test them here
def setUp(self):
super().setUp()
IndividualDraftFactory(name='draft-ietf-mars-test',states=[('draft','active'),('draft-iesg','iesg-eva')],
ad=Person.objects.get(user__username='ad'))
DocumentFactory(type_id='statchg',name='status-change-imaginary-mid-review',states=[('statchg','iesgeval')])

View file

@ -2,10 +2,9 @@
import datetime
import debug # pyflakes:ignore
import io
import os
import shutil
from pathlib import Path
from pyquery import PyQuery
from random import randint
from tempfile import NamedTemporaryFile
@ -24,19 +23,11 @@ from ietf.utils.test_utils import TestCase, reload_db_objects, unicontent, login
class BofreqTests(TestCase):
def setUp(self):
self.bofreq_dir = self.tempdir('bofreq')
self.saved_bofreq_path = settings.BOFREQ_PATH
settings.BOFREQ_PATH = self.bofreq_dir
def tearDown(self):
settings.BOFREQ_PATH = self.saved_bofreq_path
shutil.rmtree(self.bofreq_dir)
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['BOFREQ_PATH']
def write_bofreq_file(self, bofreq):
fname = os.path.join(self.bofreq_dir, "%s-%s.md" % (bofreq.canonical_name(), bofreq.rev))
with io.open(fname, "w") as f:
fname = Path(settings.BOFREQ_PATH) / ("%s-%s.md" % (bofreq.canonical_name(), bofreq.rev))
with fname.open("w") as f:
f.write(f"""# This is a test bofreq.
Version: {bofreq.rev}

View file

@ -4,9 +4,8 @@
import datetime
import io
import os
import shutil
from pathlib import Path
from pyquery import PyQuery
from django.conf import settings
@ -84,17 +83,12 @@ class ViewCharterTests(TestCase):
class EditCharterTests(TestCase):
def setUp(self):
self.charter_dir = self.tempdir('charter')
self.saved_charter_path = settings.CHARTER_PATH
settings.CHARTER_PATH = self.charter_dir
def tearDown(self):
settings.CHARTER_PATH = self.saved_charter_path
shutil.rmtree(self.charter_dir)
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['CHARTER_PATH']
def write_charter_file(self, charter):
with io.open(os.path.join(self.charter_dir, "%s-%s.txt" % (charter.canonical_name(), charter.rev)), "w") as f:
with (Path(settings.CHARTER_PATH) /
("%s-%s.txt" % (charter.canonical_name(), charter.rev))
).open("w") as f:
f.write("This is a charter.")
def test_startstop_process(self):
@ -513,7 +507,7 @@ class EditCharterTests(TestCase):
self.assertEqual(charter.rev, next_revision(prev_rev))
self.assertTrue("new_revision" in charter.latest_event().type)
with io.open(os.path.join(self.charter_dir, charter.canonical_name() + "-" + charter.rev + ".txt"), encoding='utf-8') as f:
with (Path(settings.CHARTER_PATH) / (charter.canonical_name() + "-" + charter.rev + ".txt")).open(encoding='utf-8') as f:
self.assertEqual(f.read(), "Windows line\nMac line\nUnix line\n" + utf_8_snippet.decode('utf-8'))
def test_submit_initial_charter(self):
@ -792,7 +786,9 @@ class EditCharterTests(TestCase):
self.assertTrue(not charter.ballot_open("approve"))
self.assertEqual(charter.rev, "01")
self.assertTrue(os.path.exists(os.path.join(self.charter_dir, "charter-ietf-%s-%s.txt" % (group.acronym, charter.rev))))
self.assertTrue(
(Path(settings.CHARTER_PATH) / ("charter-ietf-%s-%s.txt" % (group.acronym, charter.rev))).exists()
)
self.assertEqual(len(outbox), 2)
#

View file

@ -4,7 +4,6 @@
import io
import os
import shutil
from pyquery import PyQuery
from textwrap import wrap
@ -367,11 +366,13 @@ class ConflictReviewTests(TestCase):
self.assertEqual(len(outbox), 0)
def setUp(self):
super().setUp()
IndividualDraftFactory(name='draft-imaginary-independent-submission')
ConflictReviewFactory(name='conflict-review-imaginary-irtf-submission',review_of=IndividualDraftFactory(name='draft-imaginary-irtf-submission',stream_id='irtf'),notify='notifyme@example.net')
class ConflictReviewSubmitTests(TestCase):
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['CONFLICT_REVIEW_PATH']
def test_initial_submission(self):
doc = Document.objects.get(name='conflict-review-imaginary-irtf-submission')
url = urlreverse('ietf.doc.views_conflict_review.submit',kwargs=dict(name=doc.name))
@ -447,11 +448,5 @@ class ConflictReviewSubmitTests(TestCase):
self.assertTrue(q('textarea')[0].text.strip().startswith("[Edit this page"))
def setUp(self):
super().setUp()
ConflictReviewFactory(name='conflict-review-imaginary-irtf-submission',review_of=IndividualDraftFactory(name='draft-imaginary-irtf-submission',stream_id='irtf'),notify='notifyme@example.net')
self.test_dir = self.tempdir('conflict-review')
self.saved_conflict_review_path = settings.CONFLICT_REVIEW_PATH
settings.CONFLICT_REVIEW_PATH = self.test_dir
def tearDown(self):
settings.CONFLICT_REVIEW_PATH = self.saved_conflict_review_path
shutil.rmtree(self.test_dir)

View file

@ -16,6 +16,7 @@ from ietf.utils.test_utils import login_testing_unauthorized
class Downref(TestCase):
def setUp(self):
super().setUp()
PersonFactory(name='Plain Man',user__username='plain')
self.draft = WgDraftFactory(name='draft-ietf-mars-test')
self.draftalias = self.draft.docalias.get(name='draft-ietf-mars-test')

View file

@ -3,12 +3,12 @@
import os
import shutil
import datetime
import io
import mock
from collections import Counter
from pathlib import Path
from pyquery import PyQuery
from django.urls import reverse as urlreverse
@ -547,27 +547,14 @@ class EditInfoTests(TestCase):
class DraftFileMixin():
'''A mixin to setup temporary draft directories and files'''
def setUp(self):
self.saved_id_dir = settings.INTERNET_DRAFT_PATH
self.saved_archive_dir = settings.INTERNET_DRAFT_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"))
settings.INTERNET_DRAFT_PATH = self.id_dir
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.archive_dir
def tearDown(self):
shutil.rmtree(self.id_dir)
shutil.rmtree(self.archive_dir)
settings.INTERNET_DRAFT_PATH = self.saved_id_dir
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.saved_archive_dir
super().setUp()
(Path(settings.INTERNET_DRAFT_ARCHIVE_DIR) / "unknown_ids").mkdir()
(Path(settings.INTERNET_DRAFT_ARCHIVE_DIR) / "deleted_tombstones").mkdir()
(Path(settings.INTERNET_DRAFT_ARCHIVE_DIR) / "expired_without_tombstone").mkdir()
def write_draft_file(self, name, size):
f = io.open(os.path.join(self.id_dir, name), 'w')
f.write("a" * size)
f.close()
with (Path(settings.INTERNET_DRAFT_PATH) / name).open('w') as f:
f.write("a" * size)
class ResurrectTests(DraftFileMixin, TestCase):
@ -638,8 +625,8 @@ class ResurrectTests(DraftFileMixin, TestCase):
self.assertTrue('aread' in outbox[-1]['To'])
# ensure file restored from archive directory
self.assertTrue(os.path.exists(os.path.join(self.id_dir, txt)))
self.assertTrue(not os.path.exists(os.path.join(self.archive_dir, txt)))
self.assertTrue(os.path.exists(os.path.join(settings.INTERNET_DRAFT_PATH, txt)))
self.assertTrue(not os.path.exists(os.path.join(settings.INTERNET_DRAFT_ARCHIVE_DIR, txt)))
class ExpireIDsTests(DraftFileMixin, TestCase):
@ -749,8 +736,8 @@ class ExpireIDsTests(DraftFileMixin, TestCase):
self.assertTrue(draft.latest_event(type="expired_document"))
self.assertCountEqual(draft.action_holders.all(), [])
self.assertIn('Removed all action holders', draft.latest_event(type='changed_action_holders').desc)
self.assertTrue(not os.path.exists(os.path.join(self.id_dir, txt)))
self.assertTrue(os.path.exists(os.path.join(self.archive_dir, txt)))
self.assertTrue(not os.path.exists(os.path.join(settings.INTERNET_DRAFT_PATH, txt)))
self.assertTrue(os.path.exists(os.path.join(settings.INTERNET_DRAFT_ARCHIVE_DIR, txt)))
draft.delete()
@ -772,8 +759,8 @@ class ExpireIDsTests(DraftFileMixin, TestCase):
clean_up_draft_files()
self.assertTrue(not os.path.exists(os.path.join(self.id_dir, unknown)))
self.assertTrue(os.path.exists(os.path.join(self.archive_dir, "unknown_ids", unknown)))
self.assertTrue(not os.path.exists(os.path.join(settings.INTERNET_DRAFT_PATH, unknown)))
self.assertTrue(os.path.exists(os.path.join(settings.INTERNET_DRAFT_ARCHIVE_DIR, "unknown_ids", unknown)))
# put file with malformed name (no revision)
@ -782,8 +769,8 @@ class ExpireIDsTests(DraftFileMixin, TestCase):
clean_up_draft_files()
self.assertTrue(not os.path.exists(os.path.join(self.id_dir, malformed)))
self.assertTrue(os.path.exists(os.path.join(self.archive_dir, "unknown_ids", malformed)))
self.assertTrue(not os.path.exists(os.path.join(settings.INTERNET_DRAFT_PATH, malformed)))
self.assertTrue(os.path.exists(os.path.join(settings.INTERNET_DRAFT_ARCHIVE_DIR, "unknown_ids", malformed)))
# RFC draft
@ -796,11 +783,11 @@ class ExpireIDsTests(DraftFileMixin, TestCase):
clean_up_draft_files()
self.assertTrue(not os.path.exists(os.path.join(self.id_dir, txt)))
self.assertTrue(os.path.exists(os.path.join(self.archive_dir, txt)))
self.assertTrue(not os.path.exists(os.path.join(settings.INTERNET_DRAFT_PATH, txt)))
self.assertTrue(os.path.exists(os.path.join(settings.INTERNET_DRAFT_ARCHIVE_DIR, txt)))
self.assertTrue(not os.path.exists(os.path.join(self.id_dir, pdf)))
self.assertTrue(os.path.exists(os.path.join(self.archive_dir, pdf)))
self.assertTrue(not os.path.exists(os.path.join(settings.INTERNET_DRAFT_PATH, pdf)))
self.assertTrue(os.path.exists(os.path.join(settings.INTERNET_DRAFT_ARCHIVE_DIR, pdf)))
# expire draft
draft.set_state(State.objects.get(used=True, type="draft", slug="expired"))
@ -817,8 +804,8 @@ class ExpireIDsTests(DraftFileMixin, TestCase):
clean_up_draft_files()
self.assertTrue(not os.path.exists(os.path.join(self.id_dir, txt)))
self.assertTrue(os.path.exists(os.path.join(self.archive_dir, txt)))
self.assertTrue(not os.path.exists(os.path.join(settings.INTERNET_DRAFT_PATH, txt)))
self.assertTrue(os.path.exists(os.path.join(settings.INTERNET_DRAFT_ARCHIVE_DIR, txt)))
class ExpireLastCallTests(TestCase):
@ -898,6 +885,7 @@ class ExpireLastCallTests(TestCase):
class IndividualInfoFormsTests(TestCase):
def setUp(self):
super().setUp()
doc = WgDraftFactory(group__acronym='mars',shepherd=PersonFactory(user__username='plain',name='Plain Man').email_set.first())
self.docname = doc.name
@ -1373,6 +1361,7 @@ class IndividualInfoFormsTests(TestCase):
class SubmitToIesgTests(TestCase):
def setUp(self):
super().setUp()
role=RoleFactory(group__acronym='mars',name_id='chair',person=PersonFactory(user__username='marschairman'))
doc=WgDraftFactory(
name='draft-ietf-mars-test',
@ -1798,7 +1787,7 @@ class ChangeStreamStateTests(TestCase):
class ChangeReplacesTests(TestCase):
def setUp(self):
super().setUp()
role = RoleFactory(name_id='chair',group__acronym='mars',group__list_email='mars-wg@ietf.org',person__user__username='marschairman',person__name='WG Cháir Man')
RoleFactory(name_id='delegate',group=role.group,person__user__email='marsdelegate@ietf.org')
#draft = WgDraftFactory(group=role.group)

View file

@ -424,12 +424,14 @@ class BaseManipulationTests():
class IRTFChairTests(BaseManipulationTests, TestCase):
def setUp(self):
super().setUp()
self.username = 'irtf-chair'
self.balloter = ''
class SecretariatTests(BaseManipulationTests, TestCase):
def setUp(self):
super().setUp()
self.username = 'secretary'
self.balloter = '?balloter={}'.format(Person.objects.get(user__username='irtf-chair').pk)
@ -437,6 +439,7 @@ class SecretariatTests(BaseManipulationTests, TestCase):
class IRSGMemberTests(TestCase):
def setUp(self):
super().setUp()
self.username = get_active_irsg()[0].user.username
def test_cant_issue_irsg_ballot(self):

View file

@ -7,6 +7,7 @@ import shutil
import datetime
import io
from pathlib import Path
from pyquery import PyQuery
import debug # pyflakes:ignore
@ -25,26 +26,24 @@ from ietf.utils.test_utils import TestCase, login_testing_unauthorized
class GroupMaterialTests(TestCase):
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['AGENDA_PATH']
def setUp(self):
super().setUp()
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.slides_dir = Path(self.materials_dir) / "slides"
if not self.slides_dir.exists():
self.slides_dir.mkdir()
self.saved_document_path_pattern = settings.DOCUMENT_PATH_PATTERN
settings.DOCUMENT_PATH_PATTERN = self.materials_dir + "/{doc.type_id}/"
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
self.meeting_slides_dir = Path(settings.AGENDA_PATH) / "42" / "slides"
if not self.meeting_slides_dir.exists():
self.meeting_slides_dir.mkdir(parents=True)
def tearDown(self):
settings.DOCUMENT_PATH_PATTERN = self.saved_document_path_pattern
shutil.rmtree(self.materials_dir)
settings.AGENDA_PATH = self.saved_agenda_path
shutil.rmtree(self.agenda_dir)
super().tearDown()
def create_slides(self):

View file

@ -41,6 +41,7 @@ from ietf.utils.text import strip_prefix, xslugify
class ReviewTests(TestCase):
def setUp(self):
super().setUp()
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}/"
@ -52,6 +53,7 @@ class ReviewTests(TestCase):
def tearDown(self):
shutil.rmtree(self.review_dir)
settings.DOCUMENT_PATH_PATTERN = self.old_document_path_pattern
super().tearDown()
def test_request_review(self):
doc = WgDraftFactory(group__acronym='mars',rev='01')

View file

@ -4,7 +4,6 @@
import io
import os
import shutil
import debug # pyflakes:ignore
@ -441,12 +440,14 @@ class StatusChangeTests(TestCase):
self.assertTrue(doc.latest_event(DocEvent,type="added_comment").desc.startswith('Affected RFC list changed.'))
def setUp(self):
super().setUp()
IndividualRfcFactory(alias2__name='rfc14',name='draft-was-never-issued',std_level_id='unkn')
WgRfcFactory(alias2__name='rfc9999',name='draft-ietf-random-thing',std_level_id='ps')
WgRfcFactory(alias2__name='rfc9998',name='draft-ietf-random-other-thing',std_level_id='inf')
DocumentFactory(type_id='statchg',name='status-change-imaginary-mid-review',notify='notify@example.org')
class StatusChangeSubmitTests(TestCase):
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['STATUS_CHANGE_PATH']
def test_initial_submission(self):
doc = Document.objects.get(name='status-change-imaginary-mid-review')
url = urlreverse('ietf.doc.views_status_change.submit',kwargs=dict(name=doc.name))
@ -532,11 +533,5 @@ class StatusChangeSubmitTests(TestCase):
self.assertContains(r, "This is the old proposal.")
def setUp(self):
super().setUp()
DocumentFactory(type_id='statchg',name='status-change-imaginary-mid-review',notify='notify@example.org')
self.test_dir = self.tempdir('status-change')
self.saved_status_change_path = settings.STATUS_CHANGE_PATH
settings.STATUS_CHANGE_PATH = self.test_dir
def tearDown(self):
settings.STATUS_CHANGE_PATH = self.saved_status_change_path
shutil.rmtree(self.test_dir)

View file

@ -17,6 +17,7 @@ class ActionHoldersTests(TestCase):
def setUp(self):
"""Set up helper for the update_action_holders tests"""
super().setUp()
self.authors = PersonFactory.create_batch(3)
self.ad = Person.objects.get(user__username='ad')
self.group = GroupFactory()

View file

@ -76,6 +76,7 @@ class StreamTests(TestCase):
class GroupDocDependencyGraphTests(TestCase):
def setUp(self):
super().setUp()
set_coverage_checking(False)
a = WgDraftFactory()
b = WgDraftFactory()
@ -83,6 +84,7 @@ class GroupDocDependencyGraphTests(TestCase):
def tearDown(self):
set_coverage_checking(True)
super().tearDown()
def test_group_document_dependency_dotfile(self):
for group in Group.objects.filter(Q(type="wg") | Q(type="rg")):
@ -123,6 +125,7 @@ class GroupDocDependencyGraphTests(TestCase):
class GenerateGroupAliasesTests(TestCase):
def setUp(self):
super().setUp()
self.doc_aliases_file = NamedTemporaryFile(delete=False, mode='w+')
self.doc_aliases_file.close()
self.doc_virtual_file = NamedTemporaryFile(delete=False, mode='w+')
@ -137,6 +140,7 @@ class GenerateGroupAliasesTests(TestCase):
settings.GROUP_VIRTUAL_PATH = self.saved_draft_virtual_path
os.unlink(self.doc_aliases_file.name)
os.unlink(self.doc_virtual_file.name)
super().tearDown()
def testManagementCommand(self):
a_month_ago = datetime.datetime.now() - datetime.timedelta(30)
@ -237,6 +241,7 @@ class GenerateGroupAliasesTests(TestCase):
class GroupRoleEmailTests(TestCase):
def setUp(self):
super().setUp()
# make_immutable_base_data makes two areas, and puts a group in one of them
# the tests below assume all areas have groups
for area in Group.objects.filter(type_id='area'):

View file

@ -3,12 +3,12 @@
import os
import shutil
import calendar
import datetime
import io
import bleach
from pathlib import Path
from pyquery import PyQuery
from tempfile import NamedTemporaryFile
@ -52,14 +52,7 @@ def pklist(docs):
return [ str(doc.pk) for doc in docs.all() ]
class GroupPagesTests(TestCase):
def setUp(self):
self.charter_dir = self.tempdir('charter')
self.saved_charter_path = settings.CHARTER_PATH
settings.CHARTER_PATH = self.charter_dir
def tearDown(self):
settings.CHARTER_PATH = self.saved_charter_path
shutil.rmtree(self.charter_dir)
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['CHARTER_PATH']
def test_active_groups(self):
area = GroupFactory.create(type_id='area')
@ -120,7 +113,7 @@ class GroupPagesTests(TestCase):
chair = Email.objects.filter(role__group=group, role__name="chair")[0]
with io.open(os.path.join(self.charter_dir, "%s-%s.txt" % (group.charter.canonical_name(), group.charter.rev)), "w") as f:
with (Path(settings.CHARTER_PATH) / ("%s-%s.txt" % (group.charter.canonical_name(), group.charter.rev))).open("w") as f:
f.write("This is a charter.")
url = urlreverse('ietf.group.views.wg_summary_area', kwargs=dict(group_type="wg"))
@ -252,7 +245,7 @@ class GroupPagesTests(TestCase):
group = CharterFactory().group
draft = WgDraftFactory(group=group)
with io.open(os.path.join(self.charter_dir, "%s-%s.txt" % (group.charter.canonical_name(), group.charter.rev)), "w") as f:
with (Path(settings.CHARTER_PATH) / ("%s-%s.txt" % (group.charter.canonical_name(), group.charter.rev))).open("w") as f:
f.write("This is a charter.")
milestone = GroupMilestone.objects.create(
@ -465,14 +458,7 @@ class GroupPagesTests(TestCase):
class GroupEditTests(TestCase):
def setUp(self):
self.charter_dir = self.tempdir('charter')
self.saved_charter_path = settings.CHARTER_PATH
settings.CHARTER_PATH = self.charter_dir
def tearDown(self):
settings.CHARTER_PATH = self.saved_charter_path
shutil.rmtree(self.charter_dir)
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['CHARTER_PATH']
def test_create(self):
@ -632,7 +618,7 @@ class GroupEditTests(TestCase):
self.assertTrue(len(q('form .has-error')) > 0)
# edit info
with io.open(os.path.join(self.charter_dir, "%s-%s.txt" % (group.charter.canonical_name(), group.charter.rev)), "w") as f:
with (Path(settings.CHARTER_PATH) / ("%s-%s.txt" % (group.charter.canonical_name(), group.charter.rev))).open("w") as f:
f.write("This is a charter.")
area = group.parent
ad = Person.objects.get(name="Areað Irector")
@ -673,7 +659,7 @@ class GroupEditTests(TestCase):
self.assertEqual(group.list_subscribe, "subscribe.mars")
self.assertEqual(group.list_archive, "archive.mars")
self.assertTrue(os.path.exists(os.path.join(self.charter_dir, "%s-%s.txt" % (group.charter.canonical_name(), group.charter.rev))))
self.assertTrue((Path(settings.CHARTER_PATH) / ("%s-%s.txt" % (group.charter.canonical_name(), group.charter.rev))).exists())
self.assertEqual(len(outbox), 2)
self.assertTrue('Personnel change' in outbox[0]['Subject'])
for prefix in ['ad1','ad2','aread','marschairman','marsdelegate']:
@ -1558,6 +1544,7 @@ class CustomizeWorkflowTests(TestCase):
class EmailAliasesTests(TestCase):
def setUp(self):
super().setUp()
PersonFactory(user__username='plain')
GroupFactory(acronym='mars',parent=GroupFactory(type_id='area'))
GroupFactory(acronym='ames',parent=GroupFactory(type_id='area'))
@ -1580,6 +1567,7 @@ expand-ames-chairs@virtual.ietf.org mars_chair@ietf
def tearDown(self):
settings.GROUP_VIRTUAL_PATH = self.saved_group_virtual_path
os.unlink(self.group_alias_file.name)
super().tearDown()
def testAliases(self):
url = urlreverse('ietf.group.urls_info_details.redirect.email', kwargs=dict(acronym="mars"))
@ -1644,6 +1632,7 @@ class AjaxTests(TestCase):
class MeetingInfoTests(TestCase):
def setUp(self):
super().setUp()
self.group = GroupFactory.create(type_id='wg')
today = datetime.date.today()
SessionFactory.create(meeting__type_id='ietf',group=self.group,meeting__date=today-datetime.timedelta(days=14))

View file

@ -3,9 +3,8 @@
import datetime
import io
import os
import shutil
from pathlib import Path
from django.conf import settings
@ -20,17 +19,8 @@ from ietf.person.factories import PersonFactory, EmailFactory
from ietf.utils.test_utils import TestCase
class IndexTests(TestCase):
def setUp(self):
self.id_dir = self.tempdir('id')
self.saved_internet_draft_path = settings.INTERNET_DRAFT_PATH
settings.INTERNET_DRAFT_PATH = self.id_dir
def tearDown(self):
settings.INTERNET_DRAFT_PATH = self.saved_internet_draft_path
shutil.rmtree(self.id_dir)
def write_draft_file(self, name, size):
with io.open(os.path.join(self.id_dir, name), 'w') as f:
with (Path(settings.INTERNET_DRAFT_PATH) / name).open('w') as f:
f.write("a" * size)
def test_all_id_txt(self):

View file

@ -4,10 +4,9 @@
import datetime
import io
import os
import shutil
import tarfile
from pathlib import Path
from pyquery import PyQuery
from django.conf import settings
@ -98,6 +97,7 @@ class IESGTests(TestCase):
class IESGAgendaTests(TestCase):
def setUp(self):
super().setUp()
mars = GroupFactory(acronym='mars',parent=Group.objects.get(acronym='farfut'))
wgdraft = WgDraftFactory(name='draft-ietf-mars-test', group=mars, intended_std_level_id='ps')
rfc = IndividualRfcFactory.create(stream_id='irtf', other_aliases=['rfc6666',], states=[('draft','rfc'),('draft-iesg','pub')], std_level_id='inf', )
@ -122,10 +122,6 @@ class IESGAgendaTests(TestCase):
by = Person.objects.get(name="Areað Irector")
date = get_agenda_date()
self.draft_dir = self.tempdir('agenda-draft')
self.saved_internet_draft_path = settings.INTERNET_DRAFT_PATH
settings.INTERNET_DRAFT_PATH = self.draft_dir
for d in list(self.telechat_docs.values()):
TelechatDocEvent.objects.create(type="scheduled_for_telechat",
doc=d,
@ -138,10 +134,6 @@ class IESGAgendaTests(TestCase):
for i in range(0, 10):
self.mgmt_items.append(IESGMgmtItemFactory())
def tearDown(self):
settings.INTERNET_DRAFT_PATH = self.saved_internet_draft_path
shutil.rmtree(self.draft_dir)
def test_fill_in_agenda_docs(self):
draft = self.telechat_docs["ietf_draft"]
statchg = self.telechat_docs["statchg"]
@ -479,7 +471,7 @@ class IESGAgendaTests(TestCase):
d1_filename = "%s-%s.txt" % (d1.name, d1.rev)
d2_filename = "%s-%s.txt" % (d2.name, d2.rev)
with io.open(os.path.join(self.draft_dir, d1_filename), "w") as f:
with (Path(settings.INTERNET_DRAFT_PATH) / d1_filename).open("w") as f:
f.write("test content")
url = urlreverse("ietf.iesg.views.telechat_docs_tarfile", kwargs=dict(date=get_agenda_date().isoformat()))

View file

@ -58,6 +58,7 @@ else:
class IetfAuthTests(TestCase):
def setUp(self):
super().setUp()
self.saved_use_python_htdigest = getattr(settings, "USE_PYTHON_HTDIGEST", None)
settings.USE_PYTHON_HTDIGEST = True
@ -74,6 +75,7 @@ class IetfAuthTests(TestCase):
settings.USE_PYTHON_HTDIGEST = self.saved_use_python_htdigest
settings.HTPASSWD_FILE = self.saved_htpasswd_file
settings.HTDIGEST_REALM = self.saved_htdigest_realm
super().tearDown()
def test_index(self):
self.assertEqual(self.client.get(urlreverse(ietf.ietfauth.views.index)).status_code, 200)

View file

@ -44,12 +44,6 @@ def make_data_from_content(content):
return data
class IprTests(TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def test_get_genitive(self):
self.assertEqual(get_genitive("Cisco"),"Cisco's")
self.assertEqual(get_genitive("Ross"),"Ross'")

View file

@ -4,11 +4,11 @@
import datetime
import io
import os
import shutil
import debug # pyflakes:ignore
from pathlib import Path
from django.conf import settings
from django.contrib.auth.models import User
from django.urls import reverse as urlreverse
@ -260,14 +260,7 @@ class ManagementCommandTests(TestCase):
class LiaisonManagementTests(TestCase):
def setUp(self):
self.saved_liaison_attach_path = settings.LIAISON_ATTACH_PATH
self.liaison_dir = self.tempdir('liaison')
settings.LIAISON_ATTACH_PATH = self.liaison_dir
def tearDown(self):
settings.LIAISON_ATTACH_PATH = self.saved_liaison_attach_path
shutil.rmtree(self.liaison_dir)
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['LIAISON_ATTACH_PATH']
def test_add_restrictions(self):
# incoming restrictions
@ -443,7 +436,7 @@ class LiaisonManagementTests(TestCase):
self.assertEqual(new_liaison.attachments.count(), attachments_before + 1)
attachment = new_liaison.attachments.order_by("-name")[0]
self.assertEqual(attachment.title, "attachment")
with io.open(os.path.join(self.liaison_dir, attachment.uploaded_filename)) as f:
with (Path(settings.LIAISON_ATTACH_PATH) / attachment.uploaded_filename).open() as f:
written_content = f.read()
test_file.seek(0)
@ -747,7 +740,7 @@ class LiaisonManagementTests(TestCase):
self.assertEqual(l.attachments.count(), 1)
attachment = l.attachments.all()[0]
self.assertEqual(attachment.title, "attachment")
with io.open(os.path.join(self.liaison_dir, attachment.uploaded_filename)) as f:
with (Path(settings.LIAISON_ATTACH_PATH) / attachment.uploaded_filename).open() as f:
written_content = f.read()
test_file.seek(0)
@ -826,7 +819,7 @@ class LiaisonManagementTests(TestCase):
self.assertEqual(l.attachments.count(), 1)
attachment = l.attachments.all()[0]
self.assertEqual(attachment.title, "attachment")
with io.open(os.path.join(self.liaison_dir, attachment.uploaded_filename)) as f:
with (Path(settings.LIAISON_ATTACH_PATH) / attachment.uploaded_filename).open() as f:
written_content = f.read()
test_file.seek(0)

View file

@ -10,6 +10,7 @@ from ietf.utils.test_utils import TestCase
class GatherAddressListsTests(TestCase):
def setUp(self):
super().setUp()
self.doc = WgDraftFactory(group__acronym='mars', rev='01')
self.author_address = self.doc.name + '@ietf.org'

View file

@ -18,6 +18,7 @@ import debug # pyflakes:ignore
class ScheduleGeneratorTest(TestCase):
def setUp(self):
super().setUp()
# Create a meeting of 2 days, 5 sessions per day, in 2 rooms. There are 3 days
# actually created, but sundays are ignored.
# Two rooms is a fairly low level of simultaneous schedules, this is needed

View file

@ -82,23 +82,19 @@ class BaseMeetingTestCase(TestCase):
superclass methods.
"""
def setUp(self):
super().setUp()
self.materials_dir = self.tempdir('materials')
self.id_dir = self.tempdir('id')
self.archive_dir = self.tempdir('id-archive')
self.storage_dir = self.tempdir('storage')
#
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"))
archive_dir = Path(settings.INTERNET_DRAFT_ARCHIVE_DIR)
(archive_dir / "unknown_ids").mkdir()
(archive_dir / "deleted_tombstones").mkdir()
(archive_dir / "expired_without_tombstone").mkdir()
#
self.saved_agenda_path = settings.AGENDA_PATH
self.saved_id_dir = settings.INTERNET_DRAFT_PATH
self.saved_archive_dir = settings.INTERNET_DRAFT_ARCHIVE_DIR
self.saved_meetinghost_logo_path = settings.MEETINGHOST_LOGO_PATH
#
settings.AGENDA_PATH = self.materials_dir
settings.INTERNET_DRAFT_PATH = self.id_dir
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.archive_dir
settings.MEETINGHOST_LOGO_PATH = self.storage_dir
# The FileSystemStorage has already set its location before
@ -116,14 +112,11 @@ class BaseMeetingTestCase(TestCase):
self.patcher.stop()
#
shutil.rmtree(self.storage_dir)
shutil.rmtree(self.id_dir)
shutil.rmtree(self.archive_dir)
shutil.rmtree(self.materials_dir)
#
settings.AGENDA_PATH = self.saved_agenda_path
settings.INTERNET_DRAFT_PATH = self.saved_id_dir
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.saved_archive_dir
settings.MEETINGHOST_LOGO_PATH = self.saved_meetinghost_logo_path
super().tearDown()
def write_materials_file(self, meeting, doc, content):
path = os.path.join(self.materials_dir, "%s/%s/%s" % (meeting.number, doc.type_id, doc.uploaded_filename))
@ -2006,6 +1999,7 @@ class ReorderSlidesTests(TestCase):
class EditTests(TestCase):
def setUp(self):
super().setUp()
# make sure we have the colors of the area
from ietf.group.colors import fg_group_colors, bg_group_colors
area_upper = "FARFUT"
@ -2803,6 +2797,7 @@ class SessionDetailsTests(TestCase):
class EditScheduleListTests(TestCase):
def setUp(self):
super().setUp()
self.mtg = MeetingFactory(type_id='ietf')
ScheduleFactory(meeting=self.mtg, name='secretary1')
@ -2921,14 +2916,7 @@ class EditScheduleListTests(TestCase):
# -------------------------------------------------
class InterimTests(TestCase):
def setUp(self):
self.materials_dir = self.tempdir('materials')
self.saved_agenda_path = settings.AGENDA_PATH
settings.AGENDA_PATH = self.materials_dir
def tearDown(self):
settings.AGENDA_PATH = self.saved_agenda_path
shutil.rmtree(self.materials_dir)
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['AGENDA_PATH']
# test_interim_announce subsumed by test_appears_on_announce
@ -4299,12 +4287,6 @@ class AjaxTests(TestCase):
self.assertEqual(data['utc'], '20:00')
class FloorPlanTests(TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def test_floor_plan_page(self):
make_meeting_test_data()
meeting = Meeting.objects.filter(type_id='ietf').order_by('id').last()
@ -4319,12 +4301,6 @@ class FloorPlanTests(TestCase):
self.assertEqual(r.status_code, 200)
class IphoneAppJsonTests(TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def test_iphone_app_json_interim(self):
make_interim_test_data()
meeting = Meeting.objects.filter(type_id='interim').order_by('id').last()
@ -4383,22 +4359,19 @@ class FinalizeProceedingsTests(TestCase):
self.assertEqual(meeting.session_set.filter(group__acronym="mars").first().sessionpresentation_set.filter(document__type="draft").first().rev,'00')
class MaterialsTests(TestCase):
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + [
'AGENDA_PATH',
'SLIDE_STAGING_PATH'
]
def setUp(self):
super().setUp()
self.materials_dir = self.tempdir('materials')
self.staging_dir = self.tempdir('staging')
if not os.path.exists(self.materials_dir):
os.mkdir(self.materials_dir)
self.saved_agenda_path = settings.AGENDA_PATH
settings.AGENDA_PATH = self.materials_dir
self.saved_staging_path = settings.SLIDE_STAGING_PATH
settings.SLIDE_STAGING_PATH = self.staging_dir
def tearDown(self):
settings.AGENDA_PATH = self.saved_agenda_path
settings.SLIDE_STAGING_PATH = self.saved_staging_path
shutil.rmtree(self.materials_dir)
shutil.rmtree(self.staging_dir)
super().tearDown()
def crawl_materials(self, url, top):
seen = set()
@ -4926,17 +4899,7 @@ class SessionTests(TestCase):
self.assertEqual(len(outbox),1)
class HasMeetingsTests(TestCase):
def setUp(self):
self.materials_dir = self.tempdir('materials')
#
self.saved_agenda_path = settings.AGENDA_PATH
#
settings.AGENDA_PATH = self.materials_dir
def tearDown(self):
shutil.rmtree(self.materials_dir)
#
settings.AGENDA_PATH = self.saved_agenda_path
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['AGENDA_PATH']
def do_request_interim(self, url, group, user, meeting_count):
login_testing_unauthorized(self,user.username, url)

View file

@ -15,6 +15,7 @@ from ietf.utils.test_utils import TestCase, name_of_file_containing
@override_settings(ADMINS=(('Some Admin', 'admin@example.com'),))
class FeedbackEmailTests(TestCase):
def setUp(self):
super().setUp()
self.year = 2021
self.nomcom = NomComFactory(group__acronym=f'nomcom{self.year}')

View file

@ -76,6 +76,7 @@ class NomcomViewsTest(TestCase):
return response
def setUp(self):
super().setUp()
setup_test_public_keys_dir(self)
nomcom_test_data()
self.cert_file, self.privatekey_file = get_cert_files()
@ -107,6 +108,7 @@ class NomcomViewsTest(TestCase):
def tearDown(self):
teardown_test_public_keys_dir(self)
super().tearDown()
def access_member_url(self, url):
login_testing_unauthorized(self, COMMUNITY_USER, url)
@ -954,12 +956,14 @@ class NomineePositionStateSaveTest(TestCase):
"""Tests for the NomineePosition save override method"""
def setUp(self):
super().setUp()
setup_test_public_keys_dir(self)
nomcom_test_data()
self.nominee = Nominee.objects.get(email__person__user__username=COMMUNITY_USER)
def tearDown(self):
teardown_test_public_keys_dir(self)
super().tearDown()
def test_state_autoset(self):
"""Verify state is autoset correctly"""
@ -989,6 +993,7 @@ class NomineePositionStateSaveTest(TestCase):
class FeedbackTest(TestCase):
def setUp(self):
super().setUp()
setup_test_public_keys_dir(self)
nomcom_test_data()
@ -996,6 +1001,7 @@ class FeedbackTest(TestCase):
def tearDown(self):
teardown_test_public_keys_dir(self)
super().tearDown()
def test_encrypted_comments(self):
@ -1022,6 +1028,7 @@ class FeedbackTest(TestCase):
class ReminderTest(TestCase):
def setUp(self):
super().setUp()
setup_test_public_keys_dir(self)
nomcom_test_data()
self.nomcom = get_nomcom_by_year(NOMCOM_YEAR)
@ -1065,6 +1072,7 @@ class ReminderTest(TestCase):
def tearDown(self):
teardown_test_public_keys_dir(self)
super().tearDown()
def test_is_time_to_send(self):
self.nomcom.reminder_interval = 4
@ -1120,6 +1128,7 @@ class ReminderTest(TestCase):
class InactiveNomcomTests(TestCase):
def setUp(self):
super().setUp()
setup_test_public_keys_dir(self)
self.nc = NomComFactory.create(**nomcom_kwargs_for_year(group__state_id='conclude'))
self.plain_person = PersonFactory.create()
@ -1128,6 +1137,7 @@ class InactiveNomcomTests(TestCase):
def tearDown(self):
teardown_test_public_keys_dir(self)
super().tearDown()
def test_feedback_closed(self):
for view in ['ietf.nomcom.views.public_feedback', 'ietf.nomcom.views.private_feedback']:
@ -1314,6 +1324,7 @@ class InactiveNomcomTests(TestCase):
class FeedbackLastSeenTests(TestCase):
def setUp(self):
super().setUp()
setup_test_public_keys_dir(self)
self.nc = NomComFactory.create(**nomcom_kwargs_for_year())
self.author = PersonFactory.create().email_set.first().address
@ -1334,6 +1345,7 @@ class FeedbackLastSeenTests(TestCase):
def tearDown(self):
teardown_test_public_keys_dir(self)
super().tearDown()
def test_feedback_index_badges(self):
url = reverse('ietf.nomcom.views.view_feedback',kwargs={'year':self.nc.year()})
@ -1420,6 +1432,7 @@ class FeedbackLastSeenTests(TestCase):
class NewActiveNomComTests(TestCase):
def setUp(self):
super().setUp()
setup_test_public_keys_dir(self)
self.nc = NomComFactory.create(**nomcom_kwargs_for_year())
self.chair = self.nc.group.role_set.filter(name='chair').first().person
@ -1428,6 +1441,7 @@ class NewActiveNomComTests(TestCase):
def tearDown(self):
teardown_test_public_keys_dir(self)
settings.DAYS_TO_EXPIRE_NOMINATION_LINK = self.saved_days_to_expire_nomination_link
super().tearDown()
def test_help(self):
url = reverse('ietf.nomcom.views.configuration_help',kwargs={'year':self.nc.year()})
@ -1875,6 +1889,7 @@ Junk body for testing
class NomComIndexTests(TestCase):
def setUp(self):
super().setUp()
for year in range(2000,2014):
NomComFactory.create(**nomcom_kwargs_for_year(year=year,populate_positions=False,populate_personnel=False))
@ -1885,6 +1900,7 @@ class NomComIndexTests(TestCase):
class NoPublicKeyTests(TestCase):
def setUp(self):
super().setUp()
self.nc = NomComFactory.create(**nomcom_kwargs_for_year(public_key=None))
self.chair = self.nc.group.role_set.filter(name='chair').first().person
@ -1914,6 +1930,7 @@ class NoPublicKeyTests(TestCase):
class AcceptingTests(TestCase):
def setUp(self):
super().setUp()
setup_test_public_keys_dir(self)
self.nc = NomComFactory(**nomcom_kwargs_for_year())
self.plain_person = PersonFactory.create()
@ -1921,6 +1938,7 @@ class AcceptingTests(TestCase):
def tearDown(self):
teardown_test_public_keys_dir(self)
super().tearDown()
def test_public_accepting_nominations(self):
url = reverse('ietf.nomcom.views.public_nominate',kwargs={'year':self.nc.year()})
@ -2021,12 +2039,14 @@ class AcceptingTests(TestCase):
class ShowNomineeTests(TestCase):
def setUp(self):
super().setUp()
setup_test_public_keys_dir(self)
self.nc = NomComFactory(**nomcom_kwargs_for_year())
self.plain_person = PersonFactory.create()
def tearDown(self):
teardown_test_public_keys_dir(self)
super().tearDown()
def test_feedback_pictures(self):
url = reverse('ietf.nomcom.views.public_nominate',kwargs={'year':self.nc.year()})
@ -2042,6 +2062,7 @@ class ShowNomineeTests(TestCase):
class TopicTests(TestCase):
def setUp(self):
super().setUp()
setup_test_public_keys_dir(self)
self.nc = NomComFactory(**nomcom_kwargs_for_year(populate_topics=False))
self.plain_person = PersonFactory.create()
@ -2049,7 +2070,8 @@ class TopicTests(TestCase):
def tearDown(self):
teardown_test_public_keys_dir(self)
super().tearDown()
def testAddEditListRemoveTopic(self):
self.assertFalse(self.nc.topic_set.exists())
@ -2192,6 +2214,7 @@ class EligibilityUnitTests(TestCase):
class rfc8713EligibilityTests(TestCase):
def setUp(self):
super().setUp()
self.nomcom = NomComFactory(group__acronym='nomcom2019', populate_personnel=False, first_call_for_volunteers=datetime.date(2019,5,1))
meetings = [ MeetingFactory(date=date,type_id='ietf') for date in (
@ -2249,6 +2272,7 @@ class rfc8713EligibilityTests(TestCase):
class rfc8788EligibilityTests(TestCase):
def setUp(self):
super().setUp()
self.nomcom = NomComFactory(group__acronym='nomcom2020', populate_personnel=False, first_call_for_volunteers=datetime.date(2020,5,1))
meetings = [MeetingFactory(number=number, date=date, type_id='ietf') for number,date in [
@ -2286,6 +2310,7 @@ class rfc8788EligibilityTests(TestCase):
class rfc8989EligibilityTests(TestCase):
def setUp(self):
super().setUp()
self.nomcom = NomComFactory(group__acronym='nomcom2021', populate_personnel=False, first_call_for_volunteers=datetime.date(2021,5,15))
# make_immutable_test_data makes things this test does not want
Role.objects.filter(name_id__in=('chair','secr')).delete()

View file

@ -76,7 +76,8 @@ class _Wrapper(TestCase):
reviewer_queue_policy_id = ''
def setUp(self):
self.team = ReviewTeamFactory(acronym="rotationteam",
super().setUp()
self.team = ReviewTeamFactory(acronym="rotationteam",
name="Review Team",
list_email="rotationteam@ietf.org",
parent=Group.objects.get(acronym="farfut"))

View file

@ -23,6 +23,7 @@ AD_USER=''
class SecrAnnouncementTestCase(TestCase):
def setUp(self):
super().setUp()
chair = RoleName.objects.get(slug='chair')
secr = RoleName.objects.get(slug='secr')
ietf = Group.objects.get(acronym='ietf')

View file

@ -5,6 +5,8 @@
import datetime
import os
import shutil
from pathlib import Path
from pyquery import PyQuery
from io import StringIO
@ -25,27 +27,25 @@ from ietf.utils.test_utils import TestCase
class SecrMeetingTestCase(TestCase):
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['AGENDA_PATH']
def setUp(self):
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
super().setUp()
self.bluesheet_dir = self.tempdir('bluesheet')
self.bluesheet_path = os.path.join(self.bluesheet_dir,'blue_sheet.rtf')
self.saved_secr_blue_sheet_path = settings.SECR_BLUE_SHEET_PATH
settings.SECR_BLUE_SHEET_PATH = self.bluesheet_path
self.materials_dir = self.tempdir('materials')
# n.b., the bluesheet upload relies on SECR_PROCEEDINGS_DIR being the same
# as AGENDA_PATH. This is probably a bug, but may not be worth fixing if
# the secr app is on the way out.
self.saved_secr_proceedings_dir = settings.SECR_PROCEEDINGS_DIR
settings.SECR_PROCEEDINGS_DIR = settings.AGENDA_PATH
def tearDown(self):
settings.SECR_PROCEEDINGS_DIR = self.saved_secr_proceedings_dir
settings.AGENDA_PATH = self.saved_agenda_path
settings.SECR_BLUE_SHEET_PATH = self.saved_secr_blue_sheet_path
shutil.rmtree(self.proceedings_dir)
shutil.rmtree(self.bluesheet_dir)
shutil.rmtree(self.materials_dir)
super().tearDown()
def test_main(self):
"Main Test"
@ -170,8 +170,8 @@ class SecrMeetingTestCase(TestCase):
def test_blue_sheets_upload(self):
"Test Bluesheets"
meeting = make_meeting_test_data()
os.makedirs(os.path.join(self.proceedings_dir,str(meeting.number),'bluesheets'))
(Path(settings.SECR_PROCEEDINGS_DIR) / str(meeting.number) / 'bluesheets').mkdir(parents=True)
url = reverse('ietf.secr.meetings.views.blue_sheet',kwargs={'meeting_id':meeting.number})
self.client.login(username="secretary", password="secretary+password")
response = self.client.get(url)

View file

@ -6,7 +6,6 @@ import debug # pyflakes:ignore
import io
import json
import os
import shutil
from django.conf import settings
from django.urls import reverse
@ -65,14 +64,7 @@ class VideoRecordingTestCase(TestCase):
self.assertEqual(urls[0]['url'],'https://www.youtube.com/watch?v=lhYWB5FFkg4&list=PLC86T-6ZTP5jo6kIuqdyeYYhsKv9sUwG1')
class RecordingTestCase(TestCase):
def setUp(self):
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
def tearDown(self):
shutil.rmtree(self.meeting_recordings_dir)
settings.MEETING_RECORDINGS_DIR = self.saved_meeting_recordings_dir
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['MEETING_RECORDINGS_DIR']
def test_page(self):
meeting = MeetingFactory(type_id='ietf')

View file

@ -15,6 +15,7 @@ SECR_USER='secretary'
class SecrRolesMainTestCase(TestCase):
def setUp(self):
super().setUp()
GroupFactory(type_id='sdo') # need this for the RoleForm initialization
def test_main(self):

View file

@ -456,6 +456,7 @@ class SubmitRequestCase(TestCase):
class LockAppTestCase(TestCase):
def setUp(self):
super().setUp()
self.meeting = MeetingFactory(type_id='ietf', date=datetime.date.today(),session_request_lock_message='locked')
self.group = GroupFactory(acronym='mars')
RoleFactory(name_id='chair', group=self.group, person__user__username='marschairman')
@ -531,6 +532,7 @@ class RetrievePreviousCase(TestCase):
class SessionFormTest(TestCase):
def setUp(self):
super().setUp()
self.meeting = MeetingFactory(type_id='ietf')
self.group1 = GroupFactory()
self.group2 = GroupFactory()

View file

@ -7,7 +7,6 @@ import email
import io
import os
import re
import shutil
import sys
import mock
@ -43,6 +42,40 @@ from ietf.utils.models import VersionInfo
from ietf.utils.test_utils import login_testing_unauthorized, TestCase
from ietf.utils.draft import Draft
class BaseSubmitTestCase(TestCase):
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + [
'IDSUBMIT_STAGING_PATH',
'SUBMIT_YANG_RFC_MODEL_DIR',
'SUBMIT_YANG_DRAFT_MODEL_DIR',
'SUBMIT_YANG_IANA_MODEL_DIR',
'SUBMIT_YANG_CATALOG_DIR',
]
def setUp(self):
super().setUp()
# The system apparently relies on these paths being equal. If they are not,
# old drafts may not be moved out of the way properly.
self.saved_repository_path = settings.IDSUBMIT_REPOSITORY_PATH
settings.IDSUBMIT_REPOSITORY_PATH = settings.INTERNET_DRAFT_PATH
def tearDown(self):
settings.IDSUBMIT_REPOSITORY_PATH = self.saved_repository_path
super().tearDown()
@property
def staging_dir(self):
return settings.IDSUBMIT_STAGING_PATH
@property
def repository_dir(self):
return settings.IDSUBMIT_REPOSITORY_PATH
@property
def archive_dir(self):
return settings.INTERNET_DRAFT_ARCHIVE_DIR
def submission_file(name, rev, group, format, templatename, author=None, email=None, title=None, year=None, ascii=True):
# construct appropriate text draft
f = io.open(os.path.join(settings.BASE_DIR, "submit", templatename))
@ -112,58 +145,12 @@ def create_draft_submission_with_rev_mismatch(rev='01'):
return draft, sub
class SubmitTests(TestCase):
class SubmitTests(BaseSubmitTestCase):
def setUp(self):
self.saved_idsubmit_staging_path = settings.IDSUBMIT_STAGING_PATH
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 = 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 = self.tempdir('submit-archive')
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.archive_dir
self.saved_yang_rfc_model_dir = settings.SUBMIT_YANG_RFC_MODEL_DIR
self.yang_rfc_model_dir = self.tempdir('yang-rfc-model')
settings.SUBMIT_YANG_RFC_MODEL_DIR = self.yang_rfc_model_dir
self.saved_yang_draft_model_dir = settings.SUBMIT_YANG_DRAFT_MODEL_DIR
self.yang_draft_model_dir = self.tempdir('yang-draft-model')
settings.SUBMIT_YANG_DRAFT_MODEL_DIR = self.yang_draft_model_dir
self.saved_yang_iana_model_dir = settings.SUBMIT_YANG_IANA_MODEL_DIR
self.yang_iana_model_dir = self.tempdir('yang-iana-model')
settings.SUBMIT_YANG_IANA_MODEL_DIR = self.yang_iana_model_dir
self.saved_yang_catalog_model_dir = settings.SUBMIT_YANG_CATALOG_MODEL_DIR
self.yang_catalog_model_dir = self.tempdir('yang-catalog-model')
settings.SUBMIT_YANG_CATALOG_MODEL_DIR = self.yang_catalog_model_dir
super().setUp()
# Submit views assume there is a "next" IETF to look for cutoff dates against
MeetingFactory(type_id='ietf', date=datetime.date.today()+datetime.timedelta(days=180))
def tearDown(self):
shutil.rmtree(self.staging_dir)
shutil.rmtree(self.repository_dir)
shutil.rmtree(self.archive_dir)
shutil.rmtree(self.yang_rfc_model_dir)
shutil.rmtree(self.yang_draft_model_dir)
shutil.rmtree(self.yang_iana_model_dir)
shutil.rmtree(self.yang_catalog_model_dir)
settings.IDSUBMIT_STAGING_PATH = self.saved_idsubmit_staging_path
settings.INTERNET_DRAFT_PATH = self.saved_internet_draft_path
settings.IDSUBMIT_REPOSITORY_PATH = self.saved_idsubmit_repository_path
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.saved_archive_dir
settings.SUBMIT_YANG_RFC_MODEL_DIR = self.saved_yang_rfc_model_dir
settings.SUBMIT_YANG_DRAFT_MODEL_DIR = self.saved_yang_draft_model_dir
settings.SUBMIT_YANG_IANA_MODEL_DIR = self.saved_yang_iana_model_dir
settings.SUBMIT_YANG_CATALOG_MODEL_DIR = self.saved_yang_catalog_model_dir
def create_and_post_submission(self, name, rev, author, group=None, formats=("txt",), base_filename=None):
"""Helper to create and post a submission
@ -2107,7 +2094,7 @@ class SubmitTests(TestCase):
self.assertEqual(len(kept_div('span.label:contains("Removed")')), 0)
self.assertEqual(len(kept_div('span.label:contains("New")')), 0)
class ApprovalsTestCase(TestCase):
class ApprovalsTestCase(BaseSubmitTestCase):
def test_approvals(self):
RoleFactory(name_id='chair',
group__acronym='mars',
@ -2278,7 +2265,7 @@ class ApprovalsTestCase(TestCase):
self.assertEqual(len(Preapproval.objects.filter(name=preapproval.name)), 0)
class ManualPostsTestCase(TestCase):
class ManualPostsTestCase(BaseSubmitTestCase):
def test_manual_posts(self):
GroupFactory(acronym='mars')
@ -2723,60 +2710,13 @@ Subject: test
return r
class ApiSubmitTests(TestCase):
class ApiSubmitTests(BaseSubmitTestCase):
def setUp(self):
super().setUp()
# break early in case of missing configuration
self.assertTrue(os.path.exists(settings.IDSUBMIT_IDNITS_BINARY))
self.saved_idsubmit_staging_path = settings.IDSUBMIT_STAGING_PATH
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 = 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 = self.tempdir('submit-archive')
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.archive_dir
self.saved_yang_rfc_model_dir = settings.SUBMIT_YANG_RFC_MODEL_DIR
self.rfc_model_dir = self.tempdir('yang-rfcmod')
settings.SUBMIT_YANG_RFC_MODEL_DIR = self.rfc_model_dir
self.saved_yang_draft_model_dir = settings.SUBMIT_YANG_DRAFT_MODEL_DIR
self.draft_model_dir = self.tempdir('yang-draftmod')
settings.SUBMIT_YANG_DRAFT_MODEL_DIR = self.draft_model_dir
self.saved_yang_iana_model_dir = settings.SUBMIT_YANG_IANA_MODEL_DIR
self.iana_model_dir = self.tempdir('yang-ianamod')
settings.SUBMIT_YANG_IANA_MODEL_DIR = self.iana_model_dir
self.saved_yang_catalog_model_dir = settings.SUBMIT_YANG_CATALOG_MODEL_DIR
self.catalog_model_dir = self.tempdir('yang-catalogmod')
settings.SUBMIT_YANG_CATALOG_MODEL_DIR = self.catalog_model_dir
MeetingFactory(type_id='ietf', date=datetime.date.today()+datetime.timedelta(days=60))
def tearDown(self):
shutil.rmtree(self.staging_dir)
shutil.rmtree(self.repository_dir)
shutil.rmtree(self.archive_dir)
shutil.rmtree(self.rfc_model_dir)
shutil.rmtree(self.draft_model_dir)
shutil.rmtree(self.iana_model_dir)
shutil.rmtree(self.catalog_model_dir)
settings.IDSUBMIT_STAGING_PATH = self.saved_idsubmit_staging_path
settings.INTERNET_DRAFT_PATH = self.saved_internet_draft_path
settings.IDSUBMIT_REPOSITORY_PATH = self.saved_idsubmit_repository_path
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.saved_archive_dir
settings.SUBMIT_YANG_RFC_MODEL_DIR = self.saved_yang_rfc_model_dir
settings.SUBMIT_YANG_DRAFT_MODEL_DIR = self.saved_yang_draft_model_dir
settings.SUBMIT_YANG_IANA_MODEL_DIR = self.saved_yang_iana_model_dir
settings.SUBMIT_YANG_CATALOG_MODEL_DIR = self.saved_yang_catalog_model_dir
def do_post_submission(self, rev, author=None, name=None, group=None, email=None, title=None, year=None):
url = urlreverse('ietf.submit.views.api_submit')
if author is None:
@ -2904,7 +2844,7 @@ class ApiSubmitTests(TestCase):
)
class RefsTests(TestCase):
class RefsTests(BaseSubmitTestCase):
def test_draft_refs_identification(self):

View file

@ -7,7 +7,6 @@ import io
import json
import datetime
import quopri
import shutil
from django.conf import settings
from django.urls import reverse as urlreverse
@ -219,22 +218,8 @@ ICANN
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 = 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
def tearDown(self):
shutil.rmtree(self.id_dir)
shutil.rmtree(self.archive_dir)
settings.INTERNET_DRAFT_PATH = self.save_id_dir
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.save_archive_dir
def write_draft_file(self, name, size):
with io.open(os.path.join(self.id_dir, name), 'w') as f:
with io.open(os.path.join(settings.INTERNET_DRAFT_PATH, name), 'w') as f:
f.write("a" * size)
def test_rfc_index(self):
@ -382,8 +367,8 @@ class RFCSyncTests(TestCase):
self.assertEqual(doc.get_state_slug("draft-stream-ise"), "pub")
self.assertEqual(doc.std_level_id, "ps")
self.assertEqual(doc.pages, 42)
self.assertTrue(not os.path.exists(os.path.join(self.id_dir, draft_filename)))
self.assertTrue(os.path.exists(os.path.join(self.archive_dir, draft_filename)))
self.assertTrue(not os.path.exists(os.path.join(settings.INTERNET_DRAFT_PATH, draft_filename)))
self.assertTrue(os.path.exists(os.path.join(settings.INTERNET_DRAFT_ARCHIVE_DIR, draft_filename)))
# make sure we can apply it again with no changes
changed = list(rfceditor.update_docs_from_rfc_index(data, errata, today - datetime.timedelta(days=30)))

View file

@ -38,6 +38,7 @@ import os
import re
import email
import html5lib
import shutil
import sys
from urllib.parse import unquote
@ -151,9 +152,27 @@ class ReverseLazyTest(django.test.TestCase):
self.assertRedirects(response, "/ipr/", status_code=301)
class TestCase(django.test.TestCase):
"""IETF TestCase class
Based on django.test.TestCase, but adds a few things:
* asserts for html5 validation.
* tempdir() convenience method
* setUp() and tearDown() that override settings paths with temp directories
The setUp() and tearDown() methods create / remove temporary paths and override
Django's settings with the temp dir names. Subclasses of this class must
be sure to call the superclass methods if they are overridden. These are created
anew for each test to avoid risk of cross-talk between test cases. Overriding
the settings_temp_path_overrides class value will modify which path settings are
replaced with temp test dirs.
"""
Does basically the same as django.test.TestCase, but adds asserts for html5 validation.
"""
# These settings will be overridden with empty temporary directories
settings_temp_path_overrides = [
'RFC_PATH',
'INTERNET_ALL_DRAFTS_ARCHIVE_DIR',
'INTERNET_DRAFT_ARCHIVE_DIR',
'INTERNET_DRAFT_PATH',
]
parser = html5lib.HTMLParser(strict=True)
@ -238,4 +257,18 @@ class TestCase(django.test.TestCase):
def __str__(self):
return u"%s (%s.%s)" % (self._testMethodName, strclass(self.__class__),self._testMethodName)
def setUp(self):
# Replace settings paths with temporary directories.
super().setUp()
self._ietf_temp_dirs = {} # trashed during tearDown, DO NOT put paths you care about in this
for setting in self.settings_temp_path_overrides:
self._ietf_temp_dirs[setting] = self.tempdir(slugify(setting))
self._ietf_saved_context = django.test.utils.override_settings(**self._ietf_temp_dirs)
self._ietf_saved_context.enable()
def tearDown(self):
self._ietf_saved_context.disable()
for dir in self._ietf_temp_dirs.values():
shutil.rmtree(dir)
super().tearDown()

View file

@ -188,6 +188,7 @@ class TemplateChecksTestCase(TestCase):
templates = {} # type: Dict[str, Template]
def setUp(self):
super().setUp()
set_coverage_checking(False)
self.paths = list(get_template_paths())
self.paths.sort()
@ -199,7 +200,7 @@ class TemplateChecksTestCase(TestCase):
def tearDown(self):
set_coverage_checking(True)
pass
super().tearDown()
def test_parse_templates(self):
errors = []
@ -294,6 +295,7 @@ class TemplateChecksTestCase(TestCase):
class TestWikiGlueManagementCommand(TestCase):
def setUp(self):
super().setUp()
# We create temporary wiki and svn directories, and provide them to the management
# command through command line switches. We have to do it this way because the
# management command reads in its own copy of settings.py in its own python
@ -310,6 +312,7 @@ class TestWikiGlueManagementCommand(TestCase):
shutil.rmtree(os.path.dirname(self.wiki_dir_pattern))
shutil.rmtree(os.path.dirname(self.svn_dir_pattern))
set_coverage_checking(True)
super().tearDown()
def test_wiki_create_output(self):
for group_type in ['wg','rg','ag','area','rag']:
@ -423,6 +426,7 @@ class TestBowerStaticFiles(TestCase):
class DraftTests(TestCase):
def setUp(self):
super().setUp()
file,_ = submission_file(name='draft-test-draft-class',rev='00',format='txt',templatename='test_submission.txt',group=None)
self.draft = Draft(text=file.getvalue(),source='draft-test-draft-class-00.txt',name_from_source=False)