Home | History | Annotate | Download | only in unittests
      1 #!/usr/bin/env python
      2 # Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
      3 #
      4 # Use of this source code is governed by a BSD-style license
      5 # that can be found in the LICENSE file in the root of the source
      6 # tree. An additional intellectual property rights grant can be found
      7 # in the file PATENTS.  All contributing project authors may
      8 # be found in the AUTHORS file in the root of the source tree.
      9 
     10 import os
     11 import shutil
     12 import sys
     13 import tempfile
     14 import unittest
     15 
     16 
     17 SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
     18 PARENT_DIR = os.path.join(SCRIPT_DIR, os.pardir)
     19 sys.path.append(PARENT_DIR)
     20 from roll_chromium_revision import ParseDepsDict, UpdateDeps, \
     21     GetMatchingDepsEntries
     22 
     23 TEST_DATA_VARS = {
     24   'extra_gyp_flag': '-Dextra_gyp_flag=0',
     25   'chromium_git': 'https://chromium.googlesource.com',
     26   'chromium_revision': '1b9c098a08e40114e44b6c1ec33ddf95c40b901d',
     27 }
     28 
     29 DEPS_ENTRIES = {
     30   'src/build': 'https://build.com',
     31   'src/buildtools': 'https://buildtools.com',
     32   'src/testing/gtest': 'https://gtest.com',
     33   'src/testing/gmock': 'https://gmock.com',
     34 }
     35 
     36 
     37 class TestRollChromiumRevision(unittest.TestCase):
     38   def setUp(self):
     39     self._output_dir = tempfile.mkdtemp()
     40     shutil.copy(os.path.join(SCRIPT_DIR, 'DEPS'), self._output_dir)
     41     self._deps_filename = os.path.join(self._output_dir, 'DEPS')
     42 
     43   def tearDown(self):
     44     shutil.rmtree(self._output_dir, ignore_errors=True)
     45 
     46   def testUpdateDeps(self):
     47     new_rev = 'aaaaabbbbbcccccdddddeeeeefffff0000011111'
     48 
     49     current_rev = TEST_DATA_VARS['chromium_revision']
     50     UpdateDeps(self._deps_filename, current_rev, new_rev)
     51     with open(self._deps_filename) as deps_file:
     52       deps_contents = deps_file.read()
     53       self.assertTrue(new_rev in deps_contents,
     54                       'Failed to find %s in\n%s' % (new_rev, deps_contents))
     55 
     56   def testParseDepsDict(self):
     57     with open(self._deps_filename) as deps_file:
     58       deps_contents = deps_file.read()
     59     local_scope = ParseDepsDict(deps_contents)
     60     vars_dict = local_scope['vars']
     61 
     62     def assertVar(variable_name):
     63       self.assertEquals(vars_dict[variable_name], TEST_DATA_VARS[variable_name])
     64     assertVar('extra_gyp_flag')
     65     assertVar('chromium_git')
     66     assertVar('chromium_revision')
     67 
     68   def testGetMatchingDepsEntriesReturnsPathInSimpleCase(self):
     69     entries = GetMatchingDepsEntries(DEPS_ENTRIES, 'src/testing/gtest')
     70     self.assertEquals(len(entries), 1)
     71     self.assertEquals(entries[0], DEPS_ENTRIES['src/testing/gtest'])
     72 
     73   def testGetMatchingDepsEntriesHandlesSimilarStartingPaths(self):
     74     entries = GetMatchingDepsEntries(DEPS_ENTRIES, 'src/testing')
     75     self.assertEquals(len(entries), 2)
     76 
     77   def testGetMatchingDepsEntriesHandlesTwoPathsWithIdenticalFirstParts(self):
     78     entries = GetMatchingDepsEntries(DEPS_ENTRIES, 'src/build')
     79     self.assertEquals(len(entries), 1)
     80     self.assertEquals(entries[0], DEPS_ENTRIES['src/build'])
     81 
     82 if __name__ == '__main__':
     83   unittest.main()
     84