linux_util_unittest.cc 2.6 KB

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