Index: native_client_sdk/src/build_tools/tests/build_version_test.py |
diff --git a/native_client_sdk/src/build_tools/tests/build_version_test.py b/native_client_sdk/src/build_tools/tests/build_version_test.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..f8f60a26ce359d3576b04c2bca832fdf2f032210 |
--- /dev/null |
+++ b/native_client_sdk/src/build_tools/tests/build_version_test.py |
@@ -0,0 +1,113 @@ |
+#!/usr/bin/env python |
+# Copyright (c) 2014 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+import os |
+import sys |
+import collections |
+import unittest |
+ |
+SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) |
+BUILD_TOOLS_DIR = os.path.dirname(SCRIPT_DIR) |
+CHROME_SRC = os.path.dirname(os.path.dirname(os.path.dirname(BUILD_TOOLS_DIR))) |
+MOCK_DIR = os.path.join(CHROME_SRC, "third_party", "pymock") |
+ |
+# For the mock library |
+sys.path.append(MOCK_DIR) |
+import mock |
+ |
+sys.path.append(BUILD_TOOLS_DIR) |
+import build_version |
+ |
+ProcInfo = collections.namedtuple('ProcInfo', ['returncode', 'output']) |
+ |
+class TestCase(unittest.TestCase): |
+ def setUp(self): |
+ self.fetch_svn = mock.patch('lastchange.FetchSVNRevision').start() |
+ self.fetch_git_svn = mock.patch('lastchange.FetchGitSVNRevision').start() |
+ self.run_git = mock.patch('lastchange.RunGitCommand').start() |
+ |
+ self.fetch_svn.return_value = None |
+ self.fetch_git_svn.return_value = None |
+ |
+ def tearDown(self): |
+ mock.patch.stopall() |
+ |
+ def mockGitCommand(self, *args): |
+ side_effects = [] |
+ for proc_info in args: |
+ mock_proc = mock.MagicMock() |
+ mock_proc.returncode = proc_info.returncode |
+ comm_result = mock_proc.MagicMock() |
+ comm_result.__getitem__.return_value = proc_info.output |
+ mock_proc.communicate.return_value = comm_result |
+ side_effects.append(mock_proc) |
+ |
+ self.run_git.side_effect = side_effects |
+ |
+ def mockDefaultGitCommand(self): |
+ output = """\ |
+6a8b61d6be4656e682eba005a1dd7f129789129c |
+[NaCl SDK] Update build_sdk.py to display Cr-Commit-Position in README. |
+ |
+BUG=none |
+R=bradnelson@google.com, bradnelson@chromium.org |
+ |
+Review URL: https://codereview.chromium.org/495423010 |
+ |
+Cr-Commit-Position: refs/heads/master@{#292480}""" |
+ self.mockGitCommand(ProcInfo(0, output)) |
+ |
+ def mockDepthTwoGitCommand(self): |
+ output0 = """\ |
+ae4b444a0aa09a1fa73e59b180d7d957b9a36bf2 |
+.""" |
+ |
+ output1 = """\ |
+6a8b61d6be4656e682eba005a1dd7f129789129c |
+[NaCl SDK] Update build_sdk.py to display Cr-Commit-Position in README. |
+ |
+BUG=none |
+R=bradnelson@google.com, bradnelson@chromium.org |
+ |
+Review URL: https://codereview.chromium.org/495423010 |
+ |
+Cr-Commit-Position: refs/heads/master@{#292480}""" |
+ self.mockGitCommand(ProcInfo(0, output0), ProcInfo(0, output1)) |
+ |
+ |
+ def assertGitShowCalled(self, depth=0): |
+ cmd = ['show', '-s', '--format=%H%n%B', 'HEAD~%d' % depth] |
+ self.run_git.assert_called_with(None, cmd) |
+ |
+ def testChromeVersion(self): |
+ self.mockDefaultGitCommand() |
+ result = build_version.ChromeVersion() |
+ self.assertGitShowCalled() |
+ self.assertEqual(result, 'trunk.292480') |
+ |
+ def testChromeRevision(self): |
+ self.mockDefaultGitCommand() |
+ result = build_version.ChromeRevision() |
+ self.assertGitShowCalled() |
+ self.assertEqual(result, '292480') |
+ |
+ def testChromeCommitPosition(self): |
+ self.mockDefaultGitCommand() |
+ result = build_version.ChromeCommitPosition() |
+ self.assertGitShowCalled() |
+ self.assertEqual( |
+ result, |
+ '6a8b61d6be4656e682eba005a1dd7f129789129c-refs/heads/master@{#292480}') |
+ |
+ def testChromeCommitPositionDepthTwo(self): |
+ self.mockDepthTwoGitCommand() |
+ result = build_version.ChromeCommitPosition() |
+ self.assertEqual( |
+ result, |
+ '6a8b61d6be4656e682eba005a1dd7f129789129c-refs/heads/master@{#292480}') |
+ |
+ |
+if __name__ == '__main__': |
+ unittest.main() |