blob: 42c0c2dc478b814702008dc1e2373a8a1a9d9ff3 [file] [log] [blame]
Mike Frysingere58c0e22017-10-04 15:43:30 -04001# -*- coding: utf-8 -*-
Steven Bennettsddf9bcd2017-06-14 14:07:43 -07002# Copyright 2017 The Chromium OS Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6"""Unit tests for the chrome_chromeos_lkgm program."""
7
8from __future__ import print_function
9
10import os
Steven Bennettsddf9bcd2017-06-14 14:07:43 -070011
12from chromite.lib import builder_status_lib
13from chromite.lib import constants
14from chromite.lib import cros_build_lib_unittest
15from chromite.lib import cros_test_lib
16from chromite.lib import osutils
17from chromite.lib import partial_mock
Steven Bennettsddf9bcd2017-06-14 14:07:43 -070018from chromite.scripts import chrome_chromeos_lkgm
19
20# pylint: disable=protected-access
21
Achuith Bhandarkar1b9180f2018-02-22 19:12:09 -080022class BaseChromeLKGMCommitterTest(cros_test_lib.MockTempDirTestCase):
23 """Base class for tests using cros_chromeos_lkgm.ChromeLKGMCommitter."""
Steven Bennettsddf9bcd2017-06-14 14:07:43 -070024
25 def setUp(self):
26 """Common set up method for all tests."""
Achuith Bhandarkar1b9180f2018-02-22 19:12:09 -080027 self.committer = chrome_chromeos_lkgm.ChromeLKGMCommitter(
Steven Bennettsac301f42017-11-07 11:01:14 -080028 self.tempdir, '1001.0.0', False, 'user@test.org')
Steven Bennettsddf9bcd2017-06-14 14:07:43 -070029 self.lkgm_file = os.path.join(self.tempdir, constants.PATH_TO_CHROME_LKGM)
Steven Bennettsd36fc782017-11-08 14:45:43 -080030 self.old_lkgm = None
Steven Bennettsddf9bcd2017-06-14 14:07:43 -070031 self.pass_status = builder_status_lib.BuilderStatus(
32 constants.BUILDER_STATUS_PASSED, None)
33 self.fail_status = builder_status_lib.BuilderStatus(
34 constants.BUILDER_STATUS_FAILED, None)
Steven Bennettsddf9bcd2017-06-14 14:07:43 -070035
36
Achuith Bhandarkar1b9180f2018-02-22 19:12:09 -080037class ChromeLKGMCommitterTester(cros_build_lib_unittest.RunCommandTestCase,
38 BaseChromeLKGMCommitterTest):
Steven Bennettsddf9bcd2017-06-14 14:07:43 -070039 """Test cros_chromeos_lkgm.Committer."""
40
Steven Bennettsd36fc782017-11-08 14:45:43 -080041 def _createOldLkgm(self, items): # pylint: disable=unused-argument
42 # Write out an old lkgm file as if we got it from a git fetch.
43 osutils.SafeMakedirs(os.path.dirname(self.lkgm_file))
44 osutils.WriteFile(self.lkgm_file, self.old_lkgm)
45
Steven Bennettsddf9bcd2017-06-14 14:07:43 -070046 def testCheckoutChromeLKGM(self):
47 "Tests that we can read/obtain the old LKGM from mocked out git."
Steven Bennettsd36fc782017-11-08 14:45:43 -080048 self.old_lkgm = '1234.0.0'
49 self.rc.AddCmdResult(partial_mock.In('clone'), returncode=0,
50 side_effect=self._createOldLkgm)
Steven Bennettsddf9bcd2017-06-14 14:07:43 -070051 self.committer.CheckoutChromeLKGM()
Steven Bennettsd36fc782017-11-08 14:45:43 -080052 self.assertTrue(self.committer._old_lkgm, self.old_lkgm)
Steven Bennettsddf9bcd2017-06-14 14:07:43 -070053
54 def testCommitNewLKGM(self):
55 """Tests that we can commit a new LKGM file."""
56 osutils.SafeMakedirs(os.path.dirname(self.lkgm_file))
Achuith Bhandarkar1b9180f2018-02-22 19:12:09 -080057 self.committer = chrome_chromeos_lkgm.ChromeLKGMCommitter(
Steven Bennettsac301f42017-11-07 11:01:14 -080058 self.tempdir, '1002.0.0', False, 'user@test.org')
Steven Bennettsddf9bcd2017-06-14 14:07:43 -070059
Steven Bennettsddf9bcd2017-06-14 14:07:43 -070060 self.committer.CommitNewLKGM()
61
62 # Check the file was actually written out correctly.
63 self.assertEqual(osutils.ReadFile(self.lkgm_file), self.committer._lkgm)
64 self.assertCommandContains(['git', 'commit'])
65
Steven Bennetts4bc322a2017-08-28 09:37:39 -070066 def testOlderLKGMFails(self):
67 """Tests that trying to update to an older lkgm version fails."""
Steven Bennettsd36fc782017-11-08 14:45:43 -080068 self.old_lkgm = '1002.0.0'
69 self.rc.AddCmdResult(partial_mock.In('clone'), returncode=0,
70 side_effect=self._createOldLkgm)
Steven Bennetts4bc322a2017-08-28 09:37:39 -070071
Achuith Bhandarkar1b9180f2018-02-22 19:12:09 -080072 self.committer = chrome_chromeos_lkgm.ChromeLKGMCommitter(
Steven Bennettsac301f42017-11-07 11:01:14 -080073 self.tempdir, '1001.0.0', False, 'user@test.org')
Steven Bennetts4bc322a2017-08-28 09:37:39 -070074 self.committer.CheckoutChromeLKGM()
Steven Bennettsd36fc782017-11-08 14:45:43 -080075 self.assertTrue(self.committer._old_lkgm, self.old_lkgm)
Steven Bennetts4bc322a2017-08-28 09:37:39 -070076
Steven Bennetts4bc322a2017-08-28 09:37:39 -070077 self.assertRaises(chrome_chromeos_lkgm.LKGMNotValid,
78 self.committer.CommitNewLKGM)
79
80 def testVersionWithChromeBranch(self):
81 """Tests passing a version with a chrome branch strips the branch."""
Steven Bennettsd36fc782017-11-08 14:45:43 -080082 self.old_lkgm = '1002.0.0'
83 self.rc.AddCmdResult(partial_mock.In('clone'), returncode=0,
84 side_effect=self._createOldLkgm)
Steven Bennetts4bc322a2017-08-28 09:37:39 -070085 self.committer.CheckoutChromeLKGM()
Steven Bennettsd36fc782017-11-08 14:45:43 -080086 self.assertTrue(self.committer._old_lkgm, self.old_lkgm)
Steven Bennetts4bc322a2017-08-28 09:37:39 -070087
Achuith Bhandarkar1b9180f2018-02-22 19:12:09 -080088 self.committer = chrome_chromeos_lkgm.ChromeLKGMCommitter(
Steven Bennettsac301f42017-11-07 11:01:14 -080089 self.tempdir, '1003.0.0-rc2', False, 'user@test.org')
Steven Bennetts4bc322a2017-08-28 09:37:39 -070090
Steven Bennetts4bc322a2017-08-28 09:37:39 -070091 self.committer.CommitNewLKGM()
92
93 # Check the file was actually written out correctly.
94 stripped_lkgm = '1003.0.0'
95 self.assertEqual(osutils.ReadFile(self.lkgm_file), stripped_lkgm)