Home | History | Annotate | Download | only in mojom_tests
      1 # Copyright 2015 The Chromium Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 import imp
      6 import os.path
      7 import shutil
      8 import sys
      9 import tempfile
     10 import unittest
     11 
     12 def _GetDirAbove(dirname):
     13   """Returns the directory "above" this file containing |dirname| (which must
     14   also be "above" this file)."""
     15   path = os.path.abspath(__file__)
     16   while True:
     17     path, tail = os.path.split(path)
     18     assert tail
     19     if tail == dirname:
     20       return path
     21 
     22 try:
     23   imp.find_module("mojom")
     24 except ImportError:
     25   sys.path.append(os.path.join(_GetDirAbove("pylib"), "pylib"))
     26 from mojom import fileutil
     27 
     28 
     29 class FileUtilTest(unittest.TestCase):
     30 
     31   def testEnsureDirectoryExists(self):
     32     """Test that EnsureDirectoryExists fuctions correctly."""
     33 
     34     temp_dir = tempfile.mkdtemp()
     35     try:
     36       self.assertTrue(os.path.exists(temp_dir))
     37 
     38       # Directory does not exist, yet.
     39       full = os.path.join(temp_dir, "foo", "bar")
     40       self.assertFalse(os.path.exists(full))
     41 
     42       # Create the directory.
     43       fileutil.EnsureDirectoryExists(full)
     44       self.assertTrue(os.path.exists(full))
     45 
     46       # Trying to create it again does not cause an error.
     47       fileutil.EnsureDirectoryExists(full)
     48       self.assertTrue(os.path.exists(full))
     49 
     50       # Bypass check for directory existence to tickle error handling that
     51       # occurs in response to a race.
     52       fileutil.EnsureDirectoryExists(full, always_try_to_create=True)
     53       self.assertTrue(os.path.exists(full))
     54     finally:
     55       shutil.rmtree(temp_dir)
     56