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

Unified Diff: cros_mark_as_stable_unittest.py

Issue 2873016: First cut at stable script (Closed) Base URL: ssh://git@chromiumos-git//crosutils.git
Patch Set: Nits Created 10 years, 5 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
« no previous file with comments | « cros_mark_as_stable.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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()
« no previous file with comments | « cros_mark_as_stable.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698