Index: cros_mark_as_stable_unittest.py |
diff --git a/cros_mark_as_stable_unittest.py b/cros_mark_as_stable_unittest.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..ade4c655d52874dd3489d312538c6d115b194c62 |
--- /dev/null |
+++ b/cros_mark_as_stable_unittest.py |
@@ -0,0 +1,203 @@ |
+#!/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 cros_mark_as_stable.py.""" |
+ |
+ |
+import mox |
+import os |
+import sys |
+import unittest |
+ |
+# Required to include '.' in the python path. |
+sys.path.append(os.path.dirname(__file__)) |
+import cros_mark_as_stable |
+ |
+class GitBranchTest(mox.MoxTestBase): |
+ |
+ def setUp(self): |
+ mox.MoxTestBase.setUp(self) |
+ # Always stub RunCommmand out as we use it in every method. |
+ self.mox.StubOutWithMock(cros_mark_as_stable, '_RunCommand') |
+ self._branch = 'test_branch' |
+ |
+ def testCreateBranchNoPrevious(self): |
+ # Test init with no previous branch existing. |
+ branch = cros_mark_as_stable._GitBranch(self._branch) |
+ self.mox.StubOutWithMock(branch, 'Exists') |
+ self.mox.StubOutWithMock(branch, '_Checkout') |
+ branch.Exists().AndReturn(False) |
+ branch._Checkout(self._branch) |
+ self.mox.ReplayAll() |
+ branch.CreateBranch() |
+ self.mox.VerifyAll() |
+ |
+ def testCreateBranchWithPrevious(self): |
+ # Test init with previous branch existing. |
+ branch = cros_mark_as_stable._GitBranch(self._branch) |
+ self.mox.StubOutWithMock(branch, 'Exists') |
+ self.mox.StubOutWithMock(branch, 'Delete') |
+ self.mox.StubOutWithMock(branch, '_Checkout') |
+ branch.Exists().AndReturn(True) |
+ branch.Delete() |
+ branch._Checkout(self._branch) |
+ self.mox.ReplayAll() |
+ branch.CreateBranch() |
+ self.mox.VerifyAll() |
+ |
+ def testCheckoutCreate(self): |
+ # Test init with no previous branch existing. |
+ cros_mark_as_stable._RunCommand('git checkout -b %s origin' % self._branch) |
+ self.mox.ReplayAll() |
+ branch = cros_mark_as_stable._GitBranch(self._branch) |
+ branch._Checkout(self._branch) |
+ self.mox.VerifyAll() |
+ |
+ def testCheckoutNoCreate(self): |
+ # Test init with previous branch existing. |
+ cros_mark_as_stable._RunCommand('git checkout master') |
+ self.mox.ReplayAll() |
+ branch = cros_mark_as_stable._GitBranch(self._branch) |
+ branch._Checkout('master', False) |
+ self.mox.VerifyAll() |
+ |
+ def testDelete(self): |
+ branch = cros_mark_as_stable._GitBranch(self._branch) |
+ self.mox.StubOutWithMock(branch, '_Checkout') |
+ branch._Checkout('master', create=False) |
+ cros_mark_as_stable._RunCommand('git branch -D ' + self._branch) |
+ self.mox.ReplayAll() |
+ branch.Delete() |
+ self.mox.VerifyAll() |
+ |
+ def testExists(self): |
+ branch = cros_mark_as_stable._GitBranch(self._branch) |
+ |
+ # Test if branch exists that is created |
+ cros_mark_as_stable._RunCommand('git branch').AndReturn( |
+ '%s %s' % (self._branch, 'master')) |
+ self.mox.ReplayAll() |
+ self.assertTrue(branch.Exists()) |
+ self.mox.VerifyAll() |
+ |
+ |
+class EBuildTest(mox.MoxTestBase): |
+ |
+ def setUp(self): |
+ mox.MoxTestBase.setUp(self) |
+ self.package = 'test_package' |
+ self.ebuild_path = '/path/test_package-0.0.1-r1.ebuild' |
+ self.ebuild_path_no_rev = '/path/test_package-0.0.1.ebuild' |
+ |
+ def testInit(self): |
+ self.mox.StubOutWithMock(cros_mark_as_stable._EBuild, '_FindEBuildPath') |
+ self.mox.StubOutWithMock(cros_mark_as_stable._EBuild, '_ParseEBuildPath') |
+ |
+ cros_mark_as_stable._EBuild._FindEBuildPath( |
+ self.package).AndReturn(self.ebuild_path) |
+ cros_mark_as_stable._EBuild._ParseEBuildPath( |
+ self.ebuild_path).AndReturn(['/path/test_package-0.0.1', |
+ '/path/test_package', |
+ 1]) |
+ self.mox.ReplayAll() |
+ ebuild = cros_mark_as_stable._EBuild(self.package, 'my_id') |
+ self.mox.VerifyAll() |
+ self.assertEquals(ebuild.package, self.package) |
+ self.assertEquals(ebuild.ebuild_path, self.ebuild_path) |
+ self.assertEquals(ebuild.ebuild_path_no_revision, |
+ '/path/test_package-0.0.1') |
+ self.assertEquals(ebuild.ebuild_path_no_version, '/path/test_package') |
+ self.assertEquals(ebuild.current_revision, 1) |
+ self.assertEquals(ebuild.commit_id, 'my_id') |
+ |
+ def testFindEBuildPath(self): |
+ self.mox.StubOutWithMock(cros_mark_as_stable, '_RunCommand') |
+ cros_mark_as_stable._RunCommand( |
+ 'equery-x86-generic which %s 2> /dev/null' % self.package).AndReturn( |
+ self.ebuild_path) |
+ self.mox.ReplayAll() |
+ path = cros_mark_as_stable._EBuild._FindEBuildPath(self.package) |
+ self.mox.VerifyAll() |
+ self.assertEquals(path, self.ebuild_path) |
+ |
+ def testParseEBuildPath(self): |
+ # Test with ebuild with revision number. |
+ no_rev, no_version, revision = cros_mark_as_stable._EBuild._ParseEBuildPath( |
+ self.ebuild_path) |
+ self.assertEquals(no_rev, '/path/test_package-0.0.1') |
+ self.assertEquals(no_version, '/path/test_package') |
+ self.assertEquals(revision, 1) |
+ |
+ def testParseEBuildPathNoRevisionNumber(self): |
+ # Test with ebuild without revision number. |
+ no_rev, no_version, revision = cros_mark_as_stable._EBuild._ParseEBuildPath( |
+ self.ebuild_path_no_rev) |
+ self.assertEquals(no_rev, '/path/test_package-0.0.1') |
+ self.assertEquals(no_version, '/path/test_package') |
+ self.assertEquals(revision, 0) |
+ |
+ |
+class EBuildStableMarkerTest(mox.MoxTestBase): |
+ |
+ def setUp(self): |
+ mox.MoxTestBase.setUp(self) |
+ self.mox.StubOutWithMock(cros_mark_as_stable, '_RunCommand') |
+ self.m_ebuild = self.mox.CreateMock(cros_mark_as_stable._EBuild) |
+ self.m_ebuild.package = 'test_package' |
+ self.m_ebuild.current_revision = 1 |
+ self.m_ebuild.ebuild_path_no_revision = '/path/test_package-0.0.1' |
+ self.m_ebuild.ebuild_path_no_version = '/path/test_package' |
+ self.m_ebuild.ebuild_path = '/path/test_package-0.0.1-r1.ebuild' |
+ self.revved_ebuild_path = '/path/test_package-0.0.1-r2.ebuild' |
+ |
+ def testRevEBuild(self): |
+ self.mox.StubOutWithMock(cros_mark_as_stable.fileinput, 'input') |
+ self.mox.StubOutWithMock(cros_mark_as_stable.shutil, 'copyfile') |
+ m_file = self.mox.CreateMock(file) |
+ |
+ # Prepare mock fileinput. This tests to make sure both the commit id |
+ # and keywords are changed correctly. |
+ mock_file = ['EAPI=2', 'EGIT_COMMIT=old_id', 'KEYWORDS=\"~x86 ~arm\"', |
+ 'src_unpack(){}'] |
+ |
+ cros_mark_as_stable.shutil.copyfile( |
+ self.m_ebuild.ebuild_path_no_version + '-9999.ebuild', |
+ self.revved_ebuild_path) |
+ cros_mark_as_stable.fileinput.input(self.revved_ebuild_path, |
+ inplace=1).AndReturn(mock_file) |
+ m_file.write('EAPI=2') |
+ m_file.write('EGIT_COMMIT="my_id"') |
+ m_file.write('KEYWORDS="x86 arm"') |
+ m_file.write('src_unpack(){}') |
+ cros_mark_as_stable._RunCommand('git add ' + self.revved_ebuild_path) |
+ cros_mark_as_stable._RunCommand('git rm ' + self.m_ebuild.ebuild_path) |
+ |
+ self.mox.ReplayAll() |
+ marker = cros_mark_as_stable.EBuildStableMarker(self.m_ebuild) |
+ marker.RevEBuild('my_id', redirect_file=m_file) |
+ self.mox.VerifyAll() |
+ |
+ |
+ def testCommitChange(self): |
+ mock_message = 'Commit me' |
+ cros_mark_as_stable._RunCommand( |
+ 'git commit -am "%s"' % mock_message) |
+ self.mox.ReplayAll() |
+ marker = cros_mark_as_stable.EBuildStableMarker(self.m_ebuild) |
+ marker.CommitChange(mock_message) |
+ self.mox.VerifyAll() |
+ |
+ def testPushChange(self): |
+ #cros_mark_as_stable._RunCommand('git push') |
+ #self.mox.ReplayAll() |
+ #marker = cros_mark_as_stable.EBuildStableMarker(self.m_ebuild) |
+ #marker.PushChange() |
+ #self.mox.VerifyAll() |
+ pass |
+ |
+ |
+if __name__ == '__main__': |
+ unittest.main() |