xref: /aosp_15_r20/external/cronet/base/linux_util_unittest.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2019 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #include "base/linux_util.h"
6*6777b538SAndroid Build Coastguard Worker 
7*6777b538SAndroid Build Coastguard Worker #include "testing/gtest/include/gtest/gtest.h"
8*6777b538SAndroid Build Coastguard Worker 
9*6777b538SAndroid Build Coastguard Worker namespace {
10*6777b538SAndroid Build Coastguard Worker 
11*6777b538SAndroid Build Coastguard Worker const char kPrettyName[] = "PRETTY_NAME";
12*6777b538SAndroid Build Coastguard Worker 
TEST(LinuxUtilTest,ParseEtcOsReleaseFile)13*6777b538SAndroid Build Coastguard Worker TEST(LinuxUtilTest, ParseEtcOsReleaseFile) {
14*6777b538SAndroid Build Coastguard Worker   const char kOsRelease[] = R"X(
15*6777b538SAndroid Build Coastguard Worker NAME=Fedora
16*6777b538SAndroid Build Coastguard Worker VERSION="30 (Workstation Edition\)\"
17*6777b538SAndroid Build Coastguard Worker ID=fedora
18*6777b538SAndroid Build Coastguard Worker VERSION_ID=30
19*6777b538SAndroid Build Coastguard Worker VERSION_CODENAME=""
20*6777b538SAndroid Build Coastguard Worker PLATFORM_ID="platform:f30
21*6777b538SAndroid Build Coastguard Worker PRETTY_NAME="Fedora 30 (Workstation Edition)"
22*6777b538SAndroid Build Coastguard Worker ANSI_COLOR="0;34"
23*6777b538SAndroid Build Coastguard Worker LOGO=fedora-logo-icon
24*6777b538SAndroid Build Coastguard Worker CPE_NAME="cpe:/o:fedoraproject:fedora:30"
25*6777b538SAndroid Build Coastguard Worker HOME_URL="https://fedoraproject.org/"
26*6777b538SAndroid Build Coastguard Worker DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f30/system-administrators-guide/"
27*6777b538SAndroid Build Coastguard Worker SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
28*6777b538SAndroid Build Coastguard Worker BUG_REPORT_URL="https://bugzilla.redhat.com/"
29*6777b538SAndroid Build Coastguard Worker REDHAT_BUGZILLA_PRODUCT="Fedora"
30*6777b538SAndroid Build Coastguard Worker REDHAT_BUGZILLA_PRODUCT_VERSION=30
31*6777b538SAndroid Build Coastguard Worker REDHAT_SUPPORT_PRODUCT="Fedora"
32*6777b538SAndroid Build Coastguard Worker REDHAT_SUPPORT_PRODUCT_VERSION=30
33*6777b538SAndroid Build Coastguard Worker PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
34*6777b538SAndroid Build Coastguard Worker VARIANT="Workstation Edition"
35*6777b538SAndroid Build Coastguard Worker VARIANT_ID=workstation)X";
36*6777b538SAndroid Build Coastguard Worker 
37*6777b538SAndroid Build Coastguard Worker   const char kOsReleaseMissingPrettyName[] = R"(
38*6777b538SAndroid Build Coastguard Worker NAME=Fedora
39*6777b538SAndroid Build Coastguard Worker VERSION='30 (Workstation Edition)'
40*6777b538SAndroid Build Coastguard Worker VARIANT_ID=workstation)";
41*6777b538SAndroid Build Coastguard Worker 
42*6777b538SAndroid Build Coastguard Worker   std::string value =
43*6777b538SAndroid Build Coastguard Worker       base::GetKeyValueFromOSReleaseFileForTesting(kOsRelease, kPrettyName);
44*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(value, "Fedora 30 (Workstation Edition)");
45*6777b538SAndroid Build Coastguard Worker   // Missing key in the file
46*6777b538SAndroid Build Coastguard Worker   value = base::GetKeyValueFromOSReleaseFileForTesting(
47*6777b538SAndroid Build Coastguard Worker       kOsReleaseMissingPrettyName, kPrettyName);
48*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(value, "");
49*6777b538SAndroid Build Coastguard Worker   // Value quoted with single ticks
50*6777b538SAndroid Build Coastguard Worker   value = base::GetKeyValueFromOSReleaseFileForTesting(
51*6777b538SAndroid Build Coastguard Worker       kOsReleaseMissingPrettyName, "VERSION");
52*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(value, "30 (Workstation Edition)");
53*6777b538SAndroid Build Coastguard Worker   // Empty file
54*6777b538SAndroid Build Coastguard Worker   value = base::GetKeyValueFromOSReleaseFileForTesting("", kPrettyName);
55*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(value, "");
56*6777b538SAndroid Build Coastguard Worker   // Misspelled key
57*6777b538SAndroid Build Coastguard Worker   value =
58*6777b538SAndroid Build Coastguard Worker       base::GetKeyValueFromOSReleaseFileForTesting(kOsRelease, "PRETY_NAME");
59*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(value, "");
60*6777b538SAndroid Build Coastguard Worker   // Broken key=value format
61*6777b538SAndroid Build Coastguard Worker   value = base::GetKeyValueFromOSReleaseFileForTesting("A/B", kPrettyName);
62*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(value, "");
63*6777b538SAndroid Build Coastguard Worker   // Empty values
64*6777b538SAndroid Build Coastguard Worker   value =
65*6777b538SAndroid Build Coastguard Worker       base::GetKeyValueFromOSReleaseFileForTesting("PRETTY_NAME=", kPrettyName);
66*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(value, "");
67*6777b538SAndroid Build Coastguard Worker   value = base::GetKeyValueFromOSReleaseFileForTesting("PRETTY_NAME=\"\"",
68*6777b538SAndroid Build Coastguard Worker                                                        kPrettyName);
69*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(value, "");
70*6777b538SAndroid Build Coastguard Worker   // Only one key=value in the whole file
71*6777b538SAndroid Build Coastguard Worker   value = base::GetKeyValueFromOSReleaseFileForTesting("PRETTY_NAME=\"Linux\"",
72*6777b538SAndroid Build Coastguard Worker                                                        kPrettyName);
73*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(value, "Linux");
74*6777b538SAndroid Build Coastguard Worker }
75*6777b538SAndroid Build Coastguard Worker 
76*6777b538SAndroid Build Coastguard Worker }  // namespace
77