| # This Source Code Form is subject to the terms of the Mozilla Public |
| # License, v. 2.0. If a copy of the MPL was not distributed with this |
| # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
| |
| import os |
| import posixpath |
| import shutil |
| import tempfile |
| |
| from mozdevice.devicemanager import DMError |
| from dmunit import DeviceManagerTestCase |
| |
| class GetDirectoryTestCase(DeviceManagerTestCase): |
| |
| def _setUp(self): |
| self.localsrcdir = tempfile.mkdtemp() |
| os.makedirs(os.path.join(self.localsrcdir, 'push1', 'sub.1', 'sub.2')) |
| path = os.path.join(self.localsrcdir, |
| 'push1', 'sub.1', 'sub.2', 'testfile') |
| file(path, 'w').close() |
| os.makedirs(os.path.join(self.localsrcdir, 'push1', 'emptysub')) |
| self.localdestdir = tempfile.mkdtemp() |
| self.expected_filelist = ['emptysub', 'sub.1'] |
| |
| def tearDown(self): |
| shutil.rmtree(self.localsrcdir) |
| shutil.rmtree(self.localdestdir) |
| |
| def runTest(self): |
| """This tests the getDirectory() function. |
| """ |
| testroot = posixpath.join(self.dm.deviceRoot, 'infratest') |
| self.dm.removeDir(testroot) |
| self.dm.mkDir(testroot) |
| self.dm.pushDir( |
| os.path.join(self.localsrcdir, 'push1'), |
| posixpath.join(testroot, 'push1')) |
| # pushDir doesn't copy over empty directories, but we want to make sure |
| # that they are retrieved correctly. |
| self.dm.mkDir(posixpath.join(testroot, 'push1', 'emptysub')) |
| self.dm.getDirectory(posixpath.join(testroot, 'push1'), |
| os.path.join(self.localdestdir, 'push1')) |
| self.assertTrue(os.path.exists( |
| os.path.join(self.localdestdir, |
| 'push1', 'sub.1', 'sub.2', 'testfile'))) |
| self.assertTrue(os.path.exists( |
| os.path.join(self.localdestdir, 'push1', 'emptysub'))) |
| self.assertRaises(DMError, self.dm.getDirectory, |
| '/dummy', os.path.join(self.localdestdir, '/none')) |
| self.assertFalse(os.path.exists(self.localdestdir + '/none')) |