1 // Copyright 2019 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "base/linux_util.h"
7 #include "testing/gtest/include/gtest/gtest.h"
11 const char kPrettyName[] = "PRETTY_NAME";
13 TEST(LinuxUtilTest, ParseEtcOsReleaseFile) {
14 const char kOsRelease[] = R"X(
16 VERSION="30 (Workstation Edition\)\"
20 PLATFORM_ID="platform:f30
21 PRETTY_NAME="Fedora 30 (Workstation Edition)"
24 CPE_NAME="cpe:/o:fedoraproject:fedora:30"
25 HOME_URL="https://fedoraproject.org/"
26 DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f30/system-administrators-guide/"
27 SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
28 BUG_REPORT_URL="https://bugzilla.redhat.com/"
29 REDHAT_BUGZILLA_PRODUCT="Fedora"
30 REDHAT_BUGZILLA_PRODUCT_VERSION=30
31 REDHAT_SUPPORT_PRODUCT="Fedora"
32 REDHAT_SUPPORT_PRODUCT_VERSION=30
33 PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
34 VARIANT="Workstation Edition"
35 VARIANT_ID=workstation)X";
37 const char kOsReleaseMissingPrettyName[] = R"(
39 VERSION='30 (Workstation Edition)'
40 VARIANT_ID=workstation)";
43 base::GetKeyValueFromOSReleaseFileForTesting(kOsRelease, kPrettyName);
44 EXPECT_EQ(value, "Fedora 30 (Workstation Edition)");
45 // Missing key in the file
46 value = base::GetKeyValueFromOSReleaseFileForTesting(
47 kOsReleaseMissingPrettyName, kPrettyName);
49 // Value quoted with single ticks
50 value = base::GetKeyValueFromOSReleaseFileForTesting(
51 kOsReleaseMissingPrettyName, "VERSION");
52 EXPECT_EQ(value, "30 (Workstation Edition)");
54 value = base::GetKeyValueFromOSReleaseFileForTesting("", kPrettyName);
58 base::GetKeyValueFromOSReleaseFileForTesting(kOsRelease, "PRETY_NAME");
60 // Broken key=value format
61 value = base::GetKeyValueFromOSReleaseFileForTesting("A/B", kPrettyName);
65 base::GetKeyValueFromOSReleaseFileForTesting("PRETTY_NAME=", kPrettyName);
67 value = base::GetKeyValueFromOSReleaseFileForTesting("PRETTY_NAME=\"\"",
70 // Only one key=value in the whole file
71 value = base::GetKeyValueFromOSReleaseFileForTesting("PRETTY_NAME=\"Linux\"",
73 EXPECT_EQ(value, "Linux");