1#!/usr/bin/python
2
3"""
4Copyright 2014 Google Inc.
5
6Use of this source code is governed by a BSD-style license that can be
7found in the LICENSE file.
8
9Test url_utils.py
10"""
11
12# System-level imports
13import os
14import shutil
15import tempfile
16import unittest
17import urllib
18
19# Imports from within Skia
20import url_utils
21
22
23class UrlUtilsTest(unittest.TestCase):
24
25  def test_create_filepath_url(self):
26    """Tests create_filepath_url(). """
27    with self.assertRaises(Exception):
28      url_utils.create_filepath_url('http://1.2.3.4/path')
29    # Pass absolute filepath.
30    self.assertEquals(
31        url_utils.create_filepath_url(
32            '%sdir%sfile' % (os.path.sep, os.path.sep)),
33        'file:///dir/file')
34    # Pass relative filepath.
35    self.assertEquals(
36        url_utils.create_filepath_url(os.path.join('dir', 'file')),
37        'file://%s/dir/file' % urllib.pathname2url(os.getcwd()))
38
39  def test_copy_contents(self):
40    """Tests copy_contents(). """
41    contents = 'these are the contents'
42    tempdir_path = tempfile.mkdtemp()
43    try:
44      source_path = os.path.join(tempdir_path, 'source')
45      source_url = url_utils.create_filepath_url(source_path)
46      with open(source_path, 'w') as source_handle:
47        source_handle.write(contents)
48      dest_path = os.path.join(tempdir_path, 'new_subdir', 'dest')
49      # Destination subdir does not exist, so copy_contents() should fail
50      # if create_subdirs_if_needed is False.
51      with self.assertRaises(Exception):
52        url_utils.copy_contents(source_url=source_url,
53                                dest_path=dest_path,
54                                create_subdirs_if_needed=False)
55      # If create_subdirs_if_needed is True, it should work.
56      url_utils.copy_contents(source_url=source_url,
57                              dest_path=dest_path,
58                              create_subdirs_if_needed=True)
59      self.assertEquals(open(dest_path).read(), contents)
60    finally:
61      shutil.rmtree(tempdir_path)
62