1616"""Tests for metadata handling."""
1717
1818import os
19+ import shutil
20+ import tempfile
1921
20- from absl .testing import absltest
2122from perch_hoplite .agile import metadata
2223from perch_hoplite .db import interface as hoplite_interface
2324
25+ from absl .testing import absltest
26+
2427
2528class MetadataTest (absltest .TestCase ):
2629
2730 def setUp (self ):
2831 super ().setUp ()
29- self .temp_dir = self .create_tempdir ().full_path
32+ # `self.create_tempdir()` raises an UnparsedFlagAccessError, which is why
33+ # we use `tempdir` directly.
34+ self .tempdir = tempfile .mkdtemp ()
3035 self .desc_path = os .path .join (
31- self .temp_dir , 'hoplite_metadata_description.csv'
36+ self .tempdir , 'hoplite_metadata_description.csv'
3237 )
3338 self .dep_path = os .path .join (
34- self .temp_dir , 'hoplite_deployments_metadata.csv'
39+ self .tempdir , 'hoplite_deployments_metadata.csv'
3540 )
3641 self .rec_path = os .path .join (
37- self .temp_dir , 'hoplite_recordings_metadata.csv'
42+ self .tempdir , 'hoplite_recordings_metadata.csv'
3843 )
3944
4045 with open (self .desc_path , 'w' ) as f :
@@ -58,13 +63,17 @@ def setUp(self):
5863 with open (self .rec_path , 'w' ) as f :
5964 f .write ('recording,observer,temp_c\n rec_a,Buffy,\n rec_b,Willow,22.2\n ' )
6065
66+ def tearDown (self ):
67+ super ().tearDown ()
68+ shutil .rmtree (self .tempdir )
69+
6170 def test_metadata_loading (self ):
62- md = metadata .AgileMetadata .from_directory (self .temp_dir )
71+ md = metadata .AgileMetadata .from_directory (self .tempdir )
6372 self .assertLen (md .deployment_metadata , 2 )
6473 self .assertLen (md .recording_metadata , 2 )
6574
6675 def test_get_deployment_metadata (self ):
67- md = metadata .AgileMetadata .from_directory (self .temp_dir )
76+ md = metadata .AgileMetadata .from_directory (self .tempdir )
6877 print (md .recording_metadata )
6978 dep_a_md = md .get_deployment_metadata ('dep_a' )
7079 self .assertEqual (
@@ -79,54 +88,54 @@ def test_get_deployment_metadata(self):
7988 )
8089
8190 def test_get_recording_metadata (self ):
82- md = metadata .AgileMetadata .from_directory (self .temp_dir )
91+ md = metadata .AgileMetadata .from_directory (self .tempdir )
8392 rec_b_md = md .get_recording_metadata ('rec_b' )
8493 self .assertEqual (
8594 rec_b_md ,
8695 {'recording' : 'rec_b' , 'observer' : 'Willow' , 'temp_c' : 22.2 },
8796 )
8897
8998 def test_get_recording_metadata_missing_value (self ):
90- md = metadata .AgileMetadata .from_directory (self .temp_dir )
99+ md = metadata .AgileMetadata .from_directory (self .tempdir )
91100 rec_a_md = md .get_recording_metadata ('rec_a' )
92101 self .assertEqual (
93102 rec_a_md ,
94103 {'recording' : 'rec_a' , 'observer' : 'Buffy' , 'temp_c' : None },
95104 )
96105
97106 def test_get_unknown_metadata (self ):
98- md = metadata .AgileMetadata .from_directory (self .temp_dir )
107+ md = metadata .AgileMetadata .from_directory (self .tempdir )
99108 self .assertEqual ({}, md .get_deployment_metadata ('unknown' ))
100109 self .assertEqual ({}, md .get_recording_metadata ('unknown' ))
101110
102111 def test_missing_description_file (self ):
103112 os .remove (self .desc_path )
104- md = metadata .AgileMetadata .from_directory (self .temp_dir )
113+ md = metadata .AgileMetadata .from_directory (self .tempdir )
105114 self .assertEqual ({}, md .get_deployment_metadata ('dep_a' ))
106115 self .assertEqual ({}, md .get_recording_metadata ('rec_a' ))
107116
108117 def test_missing_deployment_file (self ):
109118 os .remove (self .dep_path )
110- md = metadata .AgileMetadata .from_directory (self .temp_dir )
119+ md = metadata .AgileMetadata .from_directory (self .tempdir )
111120 self .assertEqual ({}, md .get_deployment_metadata ('dep_a' ))
112121 self .assertLen (md .recording_metadata , 2 )
113122
114123 def test_missing_recording_file (self ):
115124 os .remove (self .rec_path )
116- md = metadata .AgileMetadata .from_directory (self .temp_dir )
125+ md = metadata .AgileMetadata .from_directory (self .tempdir )
117126 self .assertLen (md .deployment_metadata , 2 )
118127 self .assertEqual ({}, md .get_recording_metadata ('rec_a' ))
119128
120129 def test_get_annotations (self ):
121- ann_path = os .path .join (self .temp_dir , 'hoplite_annotations.csv' )
130+ ann_path = os .path .join (self .tempdir , 'hoplite_annotations.csv' )
122131 with open (ann_path , 'w' ) as f :
123132 f .write (
124133 'recording,label,start_offset_s,end_offset_s,label_type\n '
125134 'rec_a,species_a,0.5,1.5,positive\n '
126135 'rec_a,species_b,2.0,3.0,positive\n '
127136 'rec_b,species_a,1.0,2.0,negative\n '
128137 )
129- md = metadata .AgileMetadata .from_directory (self .temp_dir )
138+ md = metadata .AgileMetadata .from_directory (self .tempdir )
130139 rec_a_ann = md .get_recording_annotations ('rec_a' )
131140 self .assertEqual (
132141 rec_a_ann ,
@@ -168,7 +177,7 @@ def test_get_annotations(self):
168177
169178 with self .subTest ('no annotations' ):
170179 os .remove (ann_path )
171- md = metadata .AgileMetadata .from_directory (self .temp_dir )
180+ md = metadata .AgileMetadata .from_directory (self .tempdir )
172181 self .assertEqual ([], md .get_recording_annotations ('rec_a' ))
173182
174183
0 commit comments