1cef7893435aa41160dd1255c43cb8498279738ccChris Craik# Copyright 2014 The Chromium Authors. All rights reserved.
2cef7893435aa41160dd1255c43cb8498279738ccChris Craik# Use of this source code is governed by a BSD-style license that can be
3cef7893435aa41160dd1255c43cb8498279738ccChris Craik# found in the LICENSE file.
4cef7893435aa41160dd1255c43cb8498279738ccChris Craik
5cef7893435aa41160dd1255c43cb8498279738ccChris Craikimport os
6cef7893435aa41160dd1255c43cb8498279738ccChris Craikimport unittest
7cef7893435aa41160dd1255c43cb8498279738ccChris Craik
8cef7893435aa41160dd1255c43cb8498279738ccChris Craikfrom telemetry import decorators
9cef7893435aa41160dd1255c43cb8498279738ccChris Craikfrom telemetry.core import util
10cef7893435aa41160dd1255c43cb8498279738ccChris Craikfrom telemetry.internal.platform import linux_platform_backend
11cef7893435aa41160dd1255c43cb8498279738ccChris Craikimport mock
12cef7893435aa41160dd1255c43cb8498279738ccChris Craik
13cef7893435aa41160dd1255c43cb8498279738ccChris Craik
14cef7893435aa41160dd1255c43cb8498279738ccChris Craikclass LinuxPlatformBackendTest(unittest.TestCase):
15cef7893435aa41160dd1255c43cb8498279738ccChris Craik  @decorators.Enabled('linux')
16cef7893435aa41160dd1255c43cb8498279738ccChris Craik  def testGetOSVersionNameSaucy(self):
17cef7893435aa41160dd1255c43cb8498279738ccChris Craik    path = os.path.join(util.GetUnittestDataDir(), 'ubuntu-saucy-lsb-release')
18cef7893435aa41160dd1255c43cb8498279738ccChris Craik    with open(path) as f:
19cef7893435aa41160dd1255c43cb8498279738ccChris Craik      unbuntu_saucy_lsb_release_content = f.read()
20cef7893435aa41160dd1255c43cb8498279738ccChris Craik
21cef7893435aa41160dd1255c43cb8498279738ccChris Craik    with mock.patch.object(
22cef7893435aa41160dd1255c43cb8498279738ccChris Craik        linux_platform_backend.LinuxPlatformBackend, 'GetFileContents',
23cef7893435aa41160dd1255c43cb8498279738ccChris Craik        return_value=unbuntu_saucy_lsb_release_content) as mock_method:
24cef7893435aa41160dd1255c43cb8498279738ccChris Craik      backend = linux_platform_backend.LinuxPlatformBackend()
25cef7893435aa41160dd1255c43cb8498279738ccChris Craik      self.assertEqual(backend.GetOSVersionName(), 'saucy')
26cef7893435aa41160dd1255c43cb8498279738ccChris Craik      mock_method.assert_called_once_with('/etc/lsb-release')
27cef7893435aa41160dd1255c43cb8498279738ccChris Craik
28cef7893435aa41160dd1255c43cb8498279738ccChris Craik  @decorators.Enabled('linux')
29cef7893435aa41160dd1255c43cb8498279738ccChris Craik  def testGetOSVersionNameArch(self):
30cef7893435aa41160dd1255c43cb8498279738ccChris Craik    path = os.path.join(util.GetUnittestDataDir(), 'arch-lsb-release')
31cef7893435aa41160dd1255c43cb8498279738ccChris Craik    with open(path) as f:
32cef7893435aa41160dd1255c43cb8498279738ccChris Craik      arch_lsb_release_content = f.read()
33cef7893435aa41160dd1255c43cb8498279738ccChris Craik
34cef7893435aa41160dd1255c43cb8498279738ccChris Craik    with mock.patch.object(
35cef7893435aa41160dd1255c43cb8498279738ccChris Craik        linux_platform_backend.LinuxPlatformBackend, 'GetFileContents',
36cef7893435aa41160dd1255c43cb8498279738ccChris Craik        return_value=arch_lsb_release_content) as mock_method:
37cef7893435aa41160dd1255c43cb8498279738ccChris Craik      backend = linux_platform_backend.LinuxPlatformBackend()
38cef7893435aa41160dd1255c43cb8498279738ccChris Craik      # a distribution may not have a codename or a release number. We just
39cef7893435aa41160dd1255c43cb8498279738ccChris Craik      # check that GetOSVersionName doesn't raise an exception
40cef7893435aa41160dd1255c43cb8498279738ccChris Craik      backend.GetOSVersionName()
41cef7893435aa41160dd1255c43cb8498279738ccChris Craik      mock_method.assert_called_once_with('/etc/lsb-release')
42