| Index: native_client_sdk/src/tools/tests/oshelpers_test.py
|
| diff --git a/native_client_sdk/src/tools/tests/oshelpers_test.py b/native_client_sdk/src/tools/tests/oshelpers_test.py
|
| index e73f97871531fad4d23c335e8e988833e248475f..cb826c89d21e6585a9f97852c04a42c5e2c19e31 100755
|
| --- a/native_client_sdk/src/tools/tests/oshelpers_test.py
|
| +++ b/native_client_sdk/src/tools/tests/oshelpers_test.py
|
| @@ -18,7 +18,7 @@ sys.path.append(PARENT_DIR)
|
|
|
| import oshelpers
|
|
|
| -class RunZipError(subprocess.CalledProcessError):
|
| +class RunError(subprocess.CalledProcessError):
|
| def __init__(self, retcode, command, output, error_output):
|
| subprocess.CalledProcessError.__init__(self, retcode, command)
|
| self.output = output
|
| @@ -31,17 +31,19 @@ class RunZipError(subprocess.CalledProcessError):
|
| return msg
|
|
|
|
|
| -def RunZip(args, cwd):
|
| - command = [sys.executable, 'oshelpers.py', 'zip'] + args
|
| +def RunCmd(cmd, args, cwd, env=None):
|
| + env = env or os.environ
|
| + command = [sys.executable, 'oshelpers.py', cmd] + args
|
| process = subprocess.Popen(stdout=subprocess.PIPE,
|
| stderr=subprocess.PIPE,
|
| args=command,
|
| - cwd=cwd)
|
| + cwd=cwd,
|
| + env=env)
|
| output, error_output = process.communicate()
|
| retcode = process.returncode
|
|
|
| if retcode:
|
| - raise RunZipError(retcode, command, output, error_output)
|
| + raise RunError(retcode, command, output, error_output)
|
| return output, error_output
|
|
|
|
|
| @@ -68,7 +70,7 @@ class TestZip(unittest.TestCase):
|
| return rel_path
|
|
|
| def RunZip(self, *args):
|
| - return RunZip(*args, cwd=self.tempdir)
|
| + return RunCmd('zip', list(args), cwd=self.tempdir)
|
|
|
| def OpenZipFile(self):
|
| self.zipfile = zipfile.ZipFile(self.GetTempPath(self.zipname), 'r')
|
| @@ -83,13 +85,13 @@ class TestZip(unittest.TestCase):
|
|
|
| def testNothingToDo(self):
|
| self.assertRaises(subprocess.CalledProcessError, self.RunZip,
|
| - [self.zipname, 'nonexistent_file'])
|
| + self.zipname, 'nonexistent_file')
|
| self.assertFalse(os.path.exists(self.zipname))
|
|
|
| def testAddSomeFiles(self):
|
| file1 = self.MakeFile('file1', 1024)
|
| file2 = self.MakeFile('file2', 3354)
|
| - self.RunZip([self.zipname, file1, file2])
|
| + self.RunZip(self.zipname, file1, file2)
|
| self.OpenZipFile()
|
| self.assertEqual(len(self.zipfile.namelist()), 2)
|
| self.assertEqual(self.GetZipInfo(file1).file_size, 1024)
|
| @@ -100,13 +102,13 @@ class TestZip(unittest.TestCase):
|
| def testAddFilesWithGlob(self):
|
| self.MakeFile('file1', 1024)
|
| self.MakeFile('file2', 3354)
|
| - self.RunZip([self.zipname, 'file*'])
|
| + self.RunZip(self.zipname, 'file*')
|
| self.OpenZipFile()
|
| self.assertEqual(len(self.zipfile.namelist()), 2)
|
|
|
| def testAddDir(self):
|
| os.mkdir(self.GetTempPath('dir1'))
|
| - self.RunZip([self.zipname, 'dir1'])
|
| + self.RunZip(self.zipname, 'dir1')
|
| self.OpenZipFile()
|
| self.assertEqual(len(self.zipfile.namelist()), 1)
|
| self.assertRaises(KeyError, self.zipfile.getinfo, 'dir1')
|
| @@ -117,18 +119,18 @@ class TestZip(unittest.TestCase):
|
| self.MakeFile(os.path.join('dir1', 'file1'), 256)
|
| os.mkdir(self.GetTempPath(os.path.join('dir1', 'dir2')))
|
| self.MakeFile(os.path.join('dir1', 'dir2', 'file2'), 1234)
|
| - self.RunZip([self.zipname, '-r', 'dir1'])
|
| + self.RunZip(self.zipname, '-r', 'dir1')
|
| self.OpenZipFile()
|
| self.assertEqual(len(self.zipfile.namelist()), 4)
|
|
|
| def testUpdate(self):
|
| file1 = self.MakeFile('file1', 1223)
|
| - self.RunZip([self.zipname, file1])
|
| + self.RunZip(self.zipname, file1)
|
| self.OpenZipFile()
|
| self.assertEqual(self.GetZipInfo(file1).file_size, 1223)
|
|
|
| file1 = self.MakeFile('file1', 2334)
|
| - self.RunZip([self.zipname, file1])
|
| + self.RunZip(self.zipname, file1)
|
| self.OpenZipFile()
|
| self.assertEqual(len(self.zipfile.namelist()), 1)
|
| self.assertEqual(self.GetZipInfo(file1).file_size, 2334)
|
| @@ -138,13 +140,13 @@ class TestZip(unittest.TestCase):
|
| file2 = self.MakeFile('file2', 256)
|
| file3 = self.MakeFile('file3', 512)
|
| file4 = self.MakeFile('file4', 1024)
|
| - self.RunZip([self.zipname, file1, file2, file3, file4])
|
| + self.RunZip(self.zipname, file1, file2, file3, file4)
|
| self.OpenZipFile()
|
| self.assertEqual(len(self.zipfile.namelist()), 4)
|
| self.CloseZipFile()
|
|
|
| file3 = self.MakeFile('file3', 768)
|
| - self.RunZip([self.zipname, file3])
|
| + self.RunZip(self.zipname, file3)
|
| self.OpenZipFile()
|
| self.assertEqual(len(self.zipfile.namelist()), 4)
|
| self.assertEqual(self.zipfile.namelist()[0], file1)
|
| @@ -161,14 +163,14 @@ class TestZip(unittest.TestCase):
|
| file1 = self.MakeFile(os.path.join('dir1', 'file1'), 256)
|
| os.mkdir(self.GetTempPath(os.path.join('dir1', 'dir2')))
|
| self.MakeFile(os.path.join('dir1', 'dir2', 'file2'), 1234)
|
| - self.RunZip([self.zipname, '-r', 'dir1'])
|
| + self.RunZip(self.zipname, '-r', 'dir1')
|
| self.OpenZipFile()
|
| self.assertEqual(len(self.zipfile.namelist()), 4)
|
| self.assertEqual(self.GetZipInfo(file1).file_size, 256)
|
| self.CloseZipFile()
|
|
|
| self.MakeFile(file1, 2560)
|
| - self.RunZip([self.zipname, file1])
|
| + self.RunZip(self.zipname, file1)
|
| self.OpenZipFile()
|
| self.assertEqual(len(self.zipfile.namelist()), 4)
|
| self.assertEqual(self.GetZipInfo(file1).file_size, 2560)
|
| @@ -176,16 +178,80 @@ class TestZip(unittest.TestCase):
|
| def testAppend(self):
|
| file1 = self.MakeFile('file1', 128)
|
| file2 = self.MakeFile('file2', 256)
|
| - self.RunZip([self.zipname, file1, file2])
|
| + self.RunZip(self.zipname, file1, file2)
|
| self.OpenZipFile()
|
| self.assertEqual(len(self.zipfile.namelist()), 2)
|
| self.CloseZipFile()
|
|
|
| file3 = self.MakeFile('file3', 768)
|
| - self.RunZip([self.zipname, file3])
|
| + self.RunZip(self.zipname, file3)
|
| self.OpenZipFile()
|
| self.assertEqual(len(self.zipfile.namelist()), 3)
|
|
|
|
|
| +class TestWhich(unittest.TestCase):
|
| + def setUp(self):
|
| + self.path_list = []
|
| + self.tempdir = tempfile.mkdtemp()
|
| + shutil.copy(os.path.join(PARENT_DIR, 'oshelpers.py'),
|
| + self.tempdir)
|
| +
|
| + def tearDown(self):
|
| + shutil.rmtree(self.tempdir)
|
| +
|
| + def Mkdir(self, path):
|
| + os.mkdir(os.path.join(self.tempdir, path))
|
| +
|
| + def MakeExecutableFile(self, *path_components):
|
| + path = os.path.join(self.tempdir, *path_components)
|
| + if sys.platform == 'win32':
|
| + path += '.exe'
|
| +
|
| + with open(path, 'w') as f:
|
| + f.write('')
|
| + os.chmod(path, 0755)
|
| +
|
| + return path
|
| +
|
| + def RunWhich(self, *args):
|
| + paths = os.pathsep.join(os.path.join(self.tempdir, p)
|
| + for p in self.path_list)
|
| + env = {'PATH': paths}
|
| + return RunCmd('which', list(args), cwd=self.tempdir, env=env)
|
| +
|
| + def testNothing(self):
|
| + self.assertRaises(RunError, self.RunWhich, 'foo')
|
| +
|
| + def testBasic(self):
|
| + self.Mkdir('bin')
|
| + bin_cp = self.MakeExecutableFile('bin', 'cp')
|
| + cp = os.path.basename(bin_cp)
|
| +
|
| + self.path_list.append('bin')
|
| + output, _ = self.RunWhich(cp)
|
| + self.assertTrue(os.path.join(self.tempdir, 'bin', cp) in output)
|
| +
|
| + def testMulti(self):
|
| + self.Mkdir('bin')
|
| + bin_cp = self.MakeExecutableFile('bin', 'cp')
|
| + bin_ls = self.MakeExecutableFile('bin', 'ls')
|
| + cp = os.path.basename(bin_cp)
|
| + ls = os.path.basename(bin_ls)
|
| +
|
| + self.path_list.append('bin')
|
| + output, _ = self.RunWhich(cp, ls)
|
| + self.assertTrue(os.path.join(self.tempdir, 'bin', cp) in output)
|
| + self.assertTrue(os.path.join(self.tempdir, 'bin', ls) in output)
|
| +
|
| + def testNonPath(self):
|
| + self.Mkdir('bin')
|
| + bin_cp = self.MakeExecutableFile('bin', 'cp')
|
| + cp = os.path.basename(bin_cp)
|
| +
|
| + # Note, "bin" not added to PATH.
|
| + output, _ = self.RunWhich(bin_cp)
|
| + self.assertTrue(os.path.join('bin', cp) in output)
|
| +
|
| +
|
| if __name__ == '__main__':
|
| unittest.main()
|
|
|