# Copyright 2018 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import errno import os import shutil import tempfile import unittest from py_utils import file_util class FileUtilTest(unittest.TestCase): def setUp(self): self._tempdir = tempfile.mkdtemp() def tearDown(self): shutil.rmtree(self._tempdir) def testCopySimple(self): source_path = os.path.join(self._tempdir, 'source') with open(source_path, 'w') as f: f.write('data') dest_path = os.path.join(self._tempdir, 'dest') self.assertFalse(os.path.exists(dest_path)) file_util.CopyFileWithIntermediateDirectories(source_path, dest_path) self.assertTrue(os.path.exists(dest_path)) self.assertEqual('data', open(dest_path, 'r').read()) def testCopyMakeDirectories(self): source_path = os.path.join(self._tempdir, 'source') with open(source_path, 'w') as f: f.write('data') dest_path = os.path.join(self._tempdir, 'path', 'to', 'dest') self.assertFalse(os.path.exists(dest_path)) file_util.CopyFileWithIntermediateDirectories(source_path, dest_path) self.assertTrue(os.path.exists(dest_path)) self.assertEqual('data', open(dest_path, 'r').read()) def testCopyOverwrites(self): source_path = os.path.join(self._tempdir, 'source') with open(source_path, 'w') as f: f.write('source_data') dest_path = os.path.join(self._tempdir, 'dest') with open(dest_path, 'w') as f: f.write('existing_data') file_util.CopyFileWithIntermediateDirectories(source_path, dest_path) self.assertEqual('source_data', open(dest_path, 'r').read()) def testRaisesError(self): source_path = os.path.join(self._tempdir, 'source') with open(source_path, 'w') as f: f.write('data') dest_path = "" with self.assertRaises(OSError) as cm: file_util.CopyFileWithIntermediateDirectories(source_path, dest_path) self.assertEqual(errno.ENOENT, cm.exception.error_code)