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