Home | History | Annotate | Download | only in tests
      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