Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(32)

Unified Diff: native_client_sdk/src/tools/tests/oshelpers_test.py

Issue 12220085: [NaCl SDK] Print nice error if host build can't find gcc or cl.exe (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nits Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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()
« native_client_sdk/src/tools/common.mk ('K') | « native_client_sdk/src/tools/oshelpers.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698