33
44
55import os
6- import shutil
76import datetime
87import io
98import lxml
1312import copy
1413
1514from http .cookies import SimpleCookie
15+ from pathlib import Path
1616from pyquery import PyQuery
1717from urllib .parse import urlparse , parse_qs
1818from tempfile import NamedTemporaryFile
@@ -523,19 +523,10 @@ class DocDraftTestCase(TestCase):
523523"""
524524
525525 def setUp (self ):
526- self .id_dir = self .tempdir ('id' )
527- self .saved_internet_draft_path = settings .INTERNET_DRAFT_PATH
528- settings .INTERNET_DRAFT_PATH = self .id_dir
529- self .saved_internet_all_drafts_archive_dir = settings .INTERNET_ALL_DRAFTS_ARCHIVE_DIR
530- settings .INTERNET_ALL_DRAFTS_ARCHIVE_DIR = self .id_dir
531- f = io .open (os .path .join (self .id_dir , 'draft-ietf-mars-test-01.txt' ), 'w' )
532- f .write (self .draft_text )
533- f .close ()
534-
535- def tearDown (self ):
536- settings .INTERNET_ALL_DRAFTS_ARCHIVE_DIR = self .saved_internet_all_drafts_archive_dir
537- settings .INTERNET_DRAFT_PATH = self .saved_internet_draft_path
538- shutil .rmtree (self .id_dir )
526+ super ().setUp ()
527+ for dir in [settings .INTERNET_ALL_DRAFTS_ARCHIVE_DIR , settings .INTERNET_DRAFT_PATH ]:
528+ with (Path (dir ) / 'draft-ietf-mars-test-01.txt' ).open ('w' ) as f :
529+ f .write (self .draft_text )
539530
540531 def test_document_draft (self ):
541532 draft = WgDraftFactory (name = 'draft-ietf-mars-test' ,rev = '01' )
@@ -694,6 +685,7 @@ def test_document_draft(self):
694685 self .assertEqual (r .status_code , 200 )
695686
696687 rfc = WgRfcFactory ()
688+ (Path (settings .RFC_PATH ) / rfc .get_base_name ()).touch ()
697689 r = self .client .get (urlreverse ("ietf.doc.views_doc.document_html" , kwargs = dict (name = rfc .canonical_name ())))
698690 self .assertEqual (r .status_code , 200 )
699691 r = self .client .get (urlreverse ("ietf.doc.views_doc.document_html" , kwargs = dict (name = rfc .rfc_number ())))
@@ -1895,6 +1887,7 @@ def test_references(self):
18951887
18961888class GenerateDraftAliasesTests (TestCase ):
18971889 def setUp (self ):
1890+ super ().setUp ()
18981891 self .doc_aliases_file = NamedTemporaryFile (delete = False , mode = 'w+' )
18991892 self .doc_aliases_file .close ()
19001893 self .doc_virtual_file = NamedTemporaryFile (delete = False , mode = 'w+' )
@@ -1909,6 +1902,7 @@ def tearDown(self):
19091902 settings .DRAFT_VIRTUAL_PATH = self .saved_draft_virtual_path
19101903 os .unlink (self .doc_aliases_file .name )
19111904 os .unlink (self .doc_virtual_file .name )
1905+ super ().tearDown ()
19121906
19131907 def testManagementCommand (self ):
19141908 a_month_ago = datetime .datetime .now () - datetime .timedelta (30 )
@@ -2013,6 +2007,7 @@ def testManagementCommand(self):
20132007class EmailAliasesTests (TestCase ):
20142008
20152009 def setUp (self ):
2010+ super ().setUp ()
20162011 WgDraftFactory (name = 'draft-ietf-mars-test' ,group__acronym = 'mars' )
20172012 WgDraftFactory (name = 'draft-ietf-ames-test' ,group__acronym = 'ames' )
20182013 RoleFactory (group__type_id = 'review' , group__acronym = 'yangdoctors' , name_id = 'secr' )
@@ -2044,6 +2039,7 @@ def setUp(self):
20442039 def tearDown (self ):
20452040 settings .DRAFT_VIRTUAL_PATH = self .saved_draft_virtual_path
20462041 os .unlink (self .doc_alias_file .name )
2042+ super ().tearDown ()
20472043
20482044 def testAliases (self ):
20492045 PersonFactory (user__username = 'plain' )
@@ -2068,6 +2064,7 @@ def testExpansions(self):
20682064class DocumentMeetingTests (TestCase ):
20692065
20702066 def setUp (self ):
2067+ super ().setUp ()
20712068 self .group = GroupFactory (type_id = 'wg' ,state_id = 'active' )
20722069 self .group_chair = PersonFactory ()
20732070 self .group .role_set .create (name_id = 'chair' ,person = self .group_chair ,email = self .group_chair .email ())
@@ -2384,53 +2381,42 @@ class _TestForm(Form):
23842381 )
23852382
23862383class MaterialsTests (TestCase ):
2387-
2384+ settings_temp_path_overrides = TestCase . settings_temp_path_overrides + [ 'AGENDA_PATH' ]
23882385 def setUp (self ):
2389- self .id_dir = self .tempdir ('id' )
2390- self .saved_agenda_path = settings .AGENDA_PATH
2391- settings .AGENDA_PATH = self .id_dir
2386+ super ().setUp ()
23922387
23932388 meeting_number = '111'
2394- meeting_dir = os . path . join ( f' { settings .AGENDA_PATH } ' , f' { meeting_number } ' )
2395- os .mkdir (meeting_dir )
2396- agenda_dir = os . path . join ( meeting_dir , 'agenda' )
2397- os .mkdir (agenda_dir )
2389+ meeting_dir = Path ( settings .AGENDA_PATH ) / meeting_number
2390+ meeting_dir .mkdir ()
2391+ agenda_dir = meeting_dir / 'agenda'
2392+ agenda_dir .mkdir ()
23982393
23992394 group_acronym = 'bogons'
24002395
24012396 # This is too much work - the factory should
24022397 # * build the DocumentHistory correctly
24032398 # * maybe do something by default with uploaded_filename
24042399 # and there should be a more usable unit to save bits to disk (handle_file_upload isn't quite right) that tests can leverage
2405- try :
2406- uploaded_filename_00 = f'agenda-{ meeting_number } -{ group_acronym } -00.txt'
2407- uploaded_filename_01 = f'agenda-{ meeting_number } -{ group_acronym } -01.md'
2408- f = io .open (os .path .join (agenda_dir , uploaded_filename_00 ), 'w' )
2409- f .write ('This is some unremarkable text' )
2410- f .close ()
2411- f = io .open (os .path .join (agenda_dir , uploaded_filename_01 ), 'w' )
2412- f .write ('This links to [an unusual place](https://unusual.example).' )
2413- f .close ()
2414-
2415- 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 )
2416- e = NewRevisionDocEventFactory (doc = self .doc ,rev = '00' )
2417- self .doc .save_with_history ([e ])
2418- self .doc .rev = '01'
2419- self .doc .uploaded_filename = uploaded_filename_01
2420- e = NewRevisionDocEventFactory (doc = self .doc , rev = '01' )
2421- self .doc .save_with_history ([e ])
2422-
2423- # This is necessary for the view to be able to find the document
2424- # 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
2425- SessionPresentationFactory (session__meeting__number = meeting_number , session__group = self .doc .group , document = self .doc )
2426-
2427- except :
2428- shutil .rmtree (self .id_dir )
2429- raise
2400+ uploaded_filename_00 = f'agenda-{ meeting_number } -{ group_acronym } -00.txt'
2401+ uploaded_filename_01 = f'agenda-{ meeting_number } -{ group_acronym } -01.md'
2402+ f = io .open (os .path .join (agenda_dir , uploaded_filename_00 ), 'w' )
2403+ f .write ('This is some unremarkable text' )
2404+ f .close ()
2405+ f = io .open (os .path .join (agenda_dir , uploaded_filename_01 ), 'w' )
2406+ f .write ('This links to [an unusual place](https://unusual.example).' )
2407+ f .close ()
24302408
2431- def tearDown (self ):
2432- settings .AGENDA_PATH = self .saved_agenda_path
2433- shutil .rmtree (self .id_dir )
2409+ 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 )
2410+ e = NewRevisionDocEventFactory (doc = self .doc ,rev = '00' )
2411+ self .doc .save_with_history ([e ])
2412+ self .doc .rev = '01'
2413+ self .doc .uploaded_filename = uploaded_filename_01
2414+ e = NewRevisionDocEventFactory (doc = self .doc , rev = '01' )
2415+ self .doc .save_with_history ([e ])
2416+
2417+ # This is necessary for the view to be able to find the document
2418+ # 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
2419+ SessionPresentationFactory (session__meeting__number = meeting_number , session__group = self .doc .group , document = self .doc )
24342420
24352421 def test_markdown_and_text (self ):
24362422 url = urlreverse ("ietf.doc.views_doc.document_main" , kwargs = dict (name = self .doc .name ,rev = '00' ))
@@ -2446,15 +2432,7 @@ def test_markdown_and_text(self):
24462432 self .assertEqual (q ('#materials-content .panel-body a' ).attr ['href' ],'https://unusual.example' )
24472433
24482434class Idnits2SupportTests (TestCase ):
2449-
2450- def setUp (self ):
2451- self .derived_dir = self .tempdir ('derived' )
2452- self .saved_derived_dir = settings .DERIVED_DIR
2453- settings .DERIVED_DIR = self .derived_dir
2454-
2455- def tearDown (self ):
2456- settings .DERIVED_DIR = self .saved_derived_dir
2457- shutil .rmtree (self .derived_dir )
2435+ settings_temp_path_overrides = TestCase .settings_temp_path_overrides + ['DERIVED_DIR' ]
24582436
24592437 def test_obsoleted (self ):
24602438 rfc = WgRfcFactory (alias2__name = 'rfc1001' )
@@ -2506,6 +2484,7 @@ def test_idnits2_state(self):
25062484class RfcdiffSupportTests (TestCase ):
25072485
25082486 def setUp (self ):
2487+ super ().setUp ()
25092488 self .target_view = 'ietf.doc.views_doc.rfcdiff_latest_json'
25102489
25112490 def getJson (self , view_args ):
0 commit comments