1 #!/usr/bin/env python3 2 3 import os 4 import unittest 5 6 from sourcedr.map import ( 7 link_build_dep_and_review_data, load_build_dep_file_from_path, 8 load_build_dep_ninja, load_review_data) 9 10 11 TESTDATA_DIR = os.path.join(os.path.dirname(__file__), 'testdata') 12 13 14 class MapTest(unittest.TestCase): 15 MAP_TESTDATA_DIR = os.path.join(TESTDATA_DIR, 'map') 16 DEP_PATH = os.path.join(MAP_TESTDATA_DIR, 'build_dep.json') 17 REVIEW_DB_PATH = os.path.join(MAP_TESTDATA_DIR, 'data.json') 18 NINJA_PATH = os.path.join(MAP_TESTDATA_DIR, 'build.ninja') 19 NINJA_DEP_PATH = os.path.join(MAP_TESTDATA_DIR, 'ninja_deps') 20 21 22 def test_load_build_dep_file(self): 23 dep = load_build_dep_file_from_path(self.DEP_PATH) 24 25 self.assertIn('liba.so', dep) 26 self.assertIn('libb.so', dep) 27 self.assertIn('libc.so', dep) 28 29 self.assertSetEqual({'a.h', 'a1.c', 'a1.o', 'a2.c', 'a2.o'}, 30 dep['liba.so']) 31 self.assertSetEqual({'a.h', 'b.c', 'b.o'}, dep['libb.so']) 32 self.assertSetEqual({'c.c', 'c.o'}, dep['libc.so']) 33 34 35 def test_load_build_dep_ninja(self): 36 dep = load_build_dep_ninja(self.NINJA_PATH, self.MAP_TESTDATA_DIR, 37 self.NINJA_DEP_PATH) 38 39 self.assertIn('liba.so', dep) 40 self.assertIn('libb.so', dep) 41 self.assertIn('libc.so', dep) 42 43 self.assertSetEqual({'a.h', 'a1.c', 'a1.o', 'a2.c', 'a2.o'}, 44 dep['liba.so']) 45 self.assertSetEqual({'a.h', 'b.c', 'b.o'}, dep['libb.so']) 46 self.assertSetEqual({'c.c', 'c.o'}, dep['libc.so']) 47 48 49 def test_load_review_data(self): 50 data = load_review_data(self.REVIEW_DB_PATH) 51 self.assertIn('a.h', data) 52 self.assertEqual(['libx.so'], data['a.h']) 53 54 55 def test_link_build_dep_and_review_data(self): 56 dep = load_build_dep_file_from_path(self.DEP_PATH) 57 data = load_review_data(self.REVIEW_DB_PATH) 58 result = link_build_dep_and_review_data(dep, data) 59 60 self.assertIn('liba.so', result) 61 self.assertIn('libb.so', result) 62 self.assertIn('libc.so', result) 63 64 self.assertEqual(['libx.so'], result['liba.so']) 65 self.assertEqual(['libx.so'], result['libb.so']) 66 67 68 if __name__ == '__main__': 69 unittest.main() 70