1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
#!/usr/bin/env python
# Copyright 2023 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import unittest
import xml.dom.minidom
import generate_histograms_variants_allowlist
_EXPECTED_HEADER_FILE_CONTENT = (
"""// Generated from generate_histograms_variants_allowlist.py. Do not edit!
#ifndef TEST_TEST_H_
#define TEST_TEST_H_
namespace test_namespace {
extern const char* kTestNameVariantAllowList[];
} // namespace test_namespace
#endif // TEST_TEST_H_
""")
_EXPECTED_SOURCE_FILE_CONTENT = (
"""// Generated from generate_histograms_variants_allowlist.py. Do not edit!
#include "test/test.h"
namespace test_namespace {
const char* kTestNameVariantAllowList[] = {
"All",
"DownloadView",
"PageInfoView",
};
} // namespace test_namespace
""")
_EXPECTED_VARIANT_LIST = [{
'name': 'All',
'summary': 'All'
}, {
'name': 'DownloadView',
'summary': 'DownloadView'
}, {
'name': 'PageInfoView',
'summary': 'PageInfoView'
}]
class VariantAllowListTest(unittest.TestCase):
def testGenerateHeaderFileContent(self):
header_filename = "test/test.h"
namespace = "test_namespace"
allow_list_name = "TestName"
content = generate_histograms_variants_allowlist._GenerateHeaderFileContent(
header_filename, namespace, allow_list_name)
self.assertEqual(_EXPECTED_HEADER_FILE_CONTENT, content)
def testGenerateSourceFileContent(self):
header_filename = "test/test.h"
namespace = "test_namespace"
allow_list_name = "TestName"
variant_list = [{
'name': 'All'
}, {
'name': 'DownloadView'
}, {
'name': 'PageInfoView'
}]
content = generate_histograms_variants_allowlist._GenerateSourceFileContent(
header_filename, namespace, variant_list, allow_list_name)
self.assertEqual(_EXPECTED_SOURCE_FILE_CONTENT, content)
def testGenerateVariantList(self):
histograms = xml.dom.minidom.parseString("""
<histogram-configuration>
<histograms>
<variants name="BubbleName">
<variant name="All"/>
<variant name="DownloadView"/>
<variant name="PageInfoView"/>
</variants>
<histogram name="Bubble.{BubbleName}.CloseReason" enum="WidgetClosedReason"
expires_after="2024-09-01">
<summary>Records the reason a bubble was closed.</summary>
<token key="BubbleName" variants="BubbleName"/>
</histogram>
</histograms>
</histogram-configuration>
""")
allow_list_name = "BubbleName"
variants = generate_histograms_variants_allowlist._GenerateVariantList(
histograms, allow_list_name)
self.assertEqual(_EXPECTED_VARIANT_LIST, variants)
# Has incorrect allow list name.
allow_list_name = "MissingVariantsName"
with self.assertRaises(generate_histograms_variants_allowlist.Error):
generate_histograms_variants_allowlist._GenerateVariantList(
histograms, allow_list_name)
if __name__ == "__main__":
unittest.main()
|