Index: bin/ctest_unittest.py |
diff --git a/bin/ctest_unittest.py b/bin/ctest_unittest.py |
deleted file mode 100755 |
index cc00e329ce289af7f579fd846cf70e7bfdd00370..0000000000000000000000000000000000000000 |
--- a/bin/ctest_unittest.py |
+++ /dev/null |
@@ -1,228 +0,0 @@ |
-#!/usr/bin/python |
-# |
-# Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-"""Unit tests for 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" |
- --espfs_mountpoint="/home/chrome-bot/0.8.70.5-a1/esp" |
- --enable_rootfs_verification |
-""" |
- |
-class CrosTestTest(mox.MoxTestBase): |
- """Test class for CTest.""" |
- |
- def setUp(self): |
- mox.MoxTestBase.setUp(self) |
- self.board = 'test-board' |
- self.channel = 'test-channel' |
- self.version = '1.2.3.4.5' |
- self.revision = '7ghfa9999-12345' |
- self.image_name = 'TestOS-%s-%s' % (self.version, self.revision) |
- self.download_folder = 'test_folder' |
- self.latestbase = 'http://test-latest/TestOS' |
- self.zipbase = 'http://test-zips/archive/TestOS' |
- 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.""" |
- in_chroot_path = ctest.ReinterpretPathForChroot(os.path.abspath( |
- self.download_folder)) |
- self.mox.StubOutWithMock(__builtins__, 'open') |
- self.mox.StubOutWithMock(ctest.fileinput, 'input') |
- m_file = self.mox.CreateMock(file) |
- |
- mock_file = _TEST_BOOT_DESC.splitlines(True) |
- ctest.fileinput.input('%s/%s' % (os.path.abspath(self.download_folder), |
- 'boot.desc'), |
- inplace=1).AndReturn(mock_file) |
- |
- m_file.write('\n') |
- m_file.write(' --arch="x86"\n') |
- m_file.write(' --output_dir="%s"\n' % in_chroot_path) |
- m_file.write(' --espfs_mountpoint="%s/%s"\n' % (in_chroot_path, 'esp')) |
- m_file.write(' --enable_rootfs_verification\n') |
- |
- self.mox.ReplayAll() |
- ctest.ModifyBootDesc(os.path.abspath(self.download_folder), m_file) |
- self.mox.VerifyAll() |
- |
- |
- def testGetLatestZipUrl(self): |
- """Test case that tests GetLatestZipUrl with test urls.""" |
- self.mox.StubOutWithMock(urllib, 'urlopen') |
- m_file = self.mox.CreateMock(file) |
- |
- urllib.urlopen('%s/%s/LATEST-%s' % (self.latestbase, self.channel, |
- self.board)).AndReturn(m_file) |
- m_file.read().AndReturn('%s.bin.gz' % self.image_name) |
- m_file.close() |
- |
- self.mox.ReplayAll() |
- self.assertEquals(ctest.GetLatestZipUrl(self.board, self.channel, |
- self.latestbase, self.zipbase), |
- 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') |
- self.mox.StubOutWithMock(__builtins__, 'open') |
- m_file = self.mox.CreateMock(file) |
- |
- os.path.exists('%s/%s' % ( |
- self.download_folder, 'download_url')).AndReturn(True) |
- |
- open('%s/%s' % (self.download_folder, 'download_url')).AndReturn(m_file) |
- m_file.read().AndReturn(self.image_url) |
- m_file.close() |
- |
- os.path.exists('%s/%s' % ( |
- self.download_folder, ctest._IMAGE_TO_EXTRACT)).AndReturn(True) |
- |
- self.mox.ReplayAll() |
- ctest.GrabZipAndExtractImage(self.image_url, self.download_folder, |
- ctest._IMAGE_TO_EXTRACT) |
- self.mox.VerifyAll() |
- |
- def CommonDownloadAndExtractImage(self): |
- """Common code to mock downloading image, unzipping it and setting url.""" |
- zip_path = os.path.join(self.download_folder, 'image.zip') |
- m_file = self.mox.CreateMock(file) |
- |
- ctest.RunCommand(['rm', '-rf', self.download_folder], print_cmd=False) |
- os.mkdir(self.download_folder) |
- urllib.urlretrieve(self.image_url, zip_path) |
- ctest.RunCommand(['unzip', '-d', self.download_folder, zip_path], |
- print_cmd=False, error_message=mox.IgnoreArg()) |
- |
- ctest.ModifyBootDesc(self.download_folder) |
- |
- open('%s/%s' % (self.download_folder, 'download_url'), |
- 'w+').AndReturn(m_file) |
- m_file.write(self.image_url) |
- m_file.close() |
- |
- self.mox.ReplayAll() |
- ctest.GrabZipAndExtractImage(self.image_url, self.download_folder, |
- ctest._IMAGE_TO_EXTRACT) |
- self.mox.VerifyAll() |
- |
- def testGrabZipAndExtractImageNoCache(self): |
- """Test case where download_url doesn't exist.""" |
- self.mox.StubOutWithMock(os.path, 'exists') |
- self.mox.StubOutWithMock(os, 'mkdir') |
- self.mox.StubOutWithMock(__builtins__, 'open') |
- self.mox.StubOutWithMock(ctest, 'RunCommand') |
- self.mox.StubOutWithMock(urllib, 'urlretrieve') |
- self.mox.StubOutWithMock(ctest, 'ModifyBootDesc') |
- |
- m_file = self.mox.CreateMock(file) |
- |
- os.path.exists('%s/%s' % ( |
- self.download_folder, 'download_url')).AndReturn(False) |
- |
- self.CommonDownloadAndExtractImage() |
- |
- |
- def testGrabZipAndExtractImageWrongCache(self): |
- """Test case where download_url exists but doesn't match our url.""" |
- self.mox.StubOutWithMock(os.path, 'exists') |
- self.mox.StubOutWithMock(os, 'mkdir') |
- self.mox.StubOutWithMock(__builtins__, 'open') |
- self.mox.StubOutWithMock(ctest, 'RunCommand') |
- self.mox.StubOutWithMock(urllib, 'urlretrieve') |
- self.mox.StubOutWithMock(ctest, 'ModifyBootDesc') |
- |
- m_file = self.mox.CreateMock(file) |
- |
- os.path.exists('%s/%s' % ( |
- self.download_folder, 'download_url')).AndReturn(True) |
- |
- open('%s/%s' % (self.download_folder, 'download_url')).AndReturn(m_file) |
- m_file.read().AndReturn(self.image_url) |
- m_file.close() |
- |
- os.path.exists('%s/%s' % ( |
- self.download_folder, ctest._IMAGE_TO_EXTRACT)).AndReturn(False) |
- |
- 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() |