| Index: bin/ctest_unittest.py
|
| diff --git a/bin/ctest_unittest.py b/bin/ctest_unittest.py
|
| index c384c1e209968230889cca73d467709dc867f5fe..cc00e329ce289af7f579fd846cf70e7bfdd00370 100755
|
| --- a/bin/ctest_unittest.py
|
| +++ b/bin/ctest_unittest.py
|
| @@ -6,12 +6,13 @@
|
|
|
| """Unit tests for ctest."""
|
|
|
| -import ctest
|
| import mox
|
| import os
|
| import unittest
|
| import urllib
|
|
|
| +import ctest
|
| +
|
| _TEST_BOOT_DESC = """
|
| --arch="x86"
|
| --output_dir="/home/chrome-bot/0.8.70.5-a1"
|
| @@ -35,6 +36,7 @@ class CrosTestTest(mox.MoxTestBase):
|
| self.image_url = '%s/%s/%s/%s/%s.zip' % (self.zipbase, self.channel,
|
| self.board, self.version,
|
| self.image_name)
|
| + self.test_regex = 'ChromeOS-\d+\.\d+\.\d+\.\d+-.*\.zip'
|
|
|
| def testModifyBootDesc(self):
|
| """Tests to make sure we correctly modify a boot desc."""
|
| @@ -76,6 +78,23 @@ class CrosTestTest(mox.MoxTestBase):
|
| self.image_url)
|
| self.mox.VerifyAll()
|
|
|
| + def testGetLatestZipFromBadUrl(self):
|
| + """Tests whether GetLatestZipUrl returns correct url given bad link."""
|
| + self.mox.StubOutWithMock(urllib, 'urlopen')
|
| + self.mox.StubOutWithMock(ctest, 'GetNewestLinkFromZipBase')
|
| + m_file = self.mox.CreateMock(file)
|
| +
|
| + urllib.urlopen('%s/%s/LATEST-%s' % (self.latestbase, self.channel,
|
| + self.board)).AndRaise(IOError('Cannot open url.'))
|
| + ctest.GetNewestLinkFromZipBase(self.board, self.channel,
|
| + self.zipbase).AndReturn(self.image_url)
|
| +
|
| + self.mox.ReplayAll()
|
| + self.assertEquals(ctest.GetLatestZipUrl(self.board, self.channel,
|
| + self.latestbase, self.zipbase),
|
| + self.image_url)
|
| + self.mox.VerifyAll()
|
| +
|
| def testGrabZipAndExtractImageUseCached(self):
|
| """Test case where cache holds our image."""
|
| self.mox.StubOutWithMock(os.path, 'exists')
|
| @@ -160,6 +179,50 @@ class CrosTestTest(mox.MoxTestBase):
|
|
|
| self.CommonDownloadAndExtractImage()
|
|
|
| + def testGetLatestLinkFromPage(self):
|
| + """Tests whether we get the latest link from a url given a regex."""
|
| + test_url = 'test_url'
|
| + test_html = """
|
| + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
| + <html>
|
| + <body>
|
| + <h1>Test Index</h1>
|
| + <a href="ZsomeCruft">Cruft</a>
|
| + <a href="YotherCruft">Cruft</a>
|
| + <a href="ChromeOS-0.9.12.4-blahblah.zip">testlink1/</a>
|
| + <a href="ChromeOS-0.9.12.4-blahblah.zip.other/">testlink2/</a>
|
| + <a href="ChromeOS-Factory-0.9.12.4-blahblah.zip/">testlink3/</a>
|
| + </body></html>
|
| + """
|
| + self.mox.StubOutWithMock(urllib, 'urlopen')
|
| + m_file = self.mox.CreateMock(file)
|
| +
|
| + urllib.urlopen(test_url).AndReturn(m_file)
|
| + m_file.read().AndReturn(test_html)
|
| + m_file.close()
|
| +
|
| + self.mox.ReplayAll()
|
| + latest_link = ctest.GetLatestLinkFromPage(test_url, regex=self.test_regex)
|
| + self.assertTrue(latest_link == 'ChromeOS-0.9.12.4-blahblah.zip')
|
| + self.mox.VerifyAll()
|
| +
|
| +
|
| +class HTMLDirectoryParserTest(unittest.TestCase):
|
| + """Test class for HTMLDirectoryParser."""
|
| +
|
| + def setUp(self):
|
| + self.test_regex = '\d+\.\d+\.\d+\.\d+/'
|
| +
|
| + def testHandleStarttagGood(self):
|
| + parser = ctest.HTMLDirectoryParser(regex=self.test_regex)
|
| + parser.handle_starttag('a', [('href', '0.9.74.1/')])
|
| + self.assertTrue('0.9.74.1' in parser.link_list)
|
| +
|
| + def testHandleStarttagBad(self):
|
| + parser = ctest.HTMLDirectoryParser(regex=self.test_regex)
|
| + parser.handle_starttag('a', [('href', 'ZsomeCruft/')])
|
| + self.assertTrue('ZsomeCruft' not in parser.link_list)
|
| +
|
|
|
| if __name__ == '__main__':
|
| unittest.main()
|
|
|