blob: efad6f223fe3278a101a4fe623c24cba225845ab [file] [log] [blame]
#!/usr/bin/env python
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
'''Unit tests for grit.format.policy_templates.writers.plist_strings_writer'''
import os
import sys
if __name__ == '__main__':
sys.path.append(os.path.join(os.path.dirname(__file__), '../../../..'))
import unittest
from grit.format.policy_templates.writers import writer_unittest_common
class PListStringsWriterUnittest(writer_unittest_common.WriterUnittestCommon):
'''Unit tests for PListStringsWriter.'''
def testEmpty(self):
# Test PListStringsWriter in case of empty polices.
grd = self.PrepareTest('''
{
'policy_definitions': [],
'placeholders': [],
'messages': {
'mac_chrome_preferences': {
'text': '$1 preferen"ces',
'desc': 'blah'
}
}
}''')
output = self.GetOutput(
grd,
'fr',
{'_chromium': '1', 'mac_bundle_id': 'com.example.Test'},
'plist_strings',
'en')
expected_output = (
'Chromium.pfm_title = "Chromium";\n'
'Chromium.pfm_description = "Chromium preferen\\"ces";')
self.assertEquals(output.strip(), expected_output.strip())
def testEmptyVersion(self):
# Test PListStringsWriter in case of empty polices.
grd = self.PrepareTest('''
{
'policy_definitions': [],
'placeholders': [],
'messages': {
'mac_chrome_preferences': {
'text': '$1 preferen"ces',
'desc': 'blah'
}
}
}''')
output = self.GetOutput(
grd,
'fr',
{'_chromium': '1',
'mac_bundle_id': 'com.example.Test',
'version': '39.0.0.0'},
'plist_strings',
'en')
expected_output = (
'/* chromium version: 39.0.0.0 */\n'
'Chromium.pfm_title = "Chromium";\n'
'Chromium.pfm_description = "Chromium preferen\\"ces";')
self.assertEquals(output.strip(), expected_output.strip())
def testMainPolicy(self):
# Tests a policy group with a single policy of type 'main'.
grd = self.PrepareTest('''
{
'policy_definitions': [
{
'name': 'MainGroup',
'type': 'group',
'caption': 'Caption of main.',
'desc': 'Description of main.',
'policies': [{
'name': 'MainPolicy',
'type': 'main',
'supported_on': ['chrome.mac:8-'],
'caption': 'Caption of main policy.',
'desc': 'Description of main policy.',
}],
},
],
'placeholders': [],
'messages': {
'mac_chrome_preferences': {
'text': 'Preferences of $1',
'desc': 'blah'
}
}
}''')
output = self.GetOutput(
grd,
'fr',
{'_google_chrome' : '1', 'mac_bundle_id': 'com.example.Test'},
'plist_strings',
'en')
expected_output = (
'Google_Chrome.pfm_title = "Google Chrome";\n'
'Google_Chrome.pfm_description = "Preferences of Google Chrome";\n'
'MainPolicy.pfm_title = "Caption of main policy.";\n'
'MainPolicy.pfm_description = "Description of main policy.";')
self.assertEquals(output.strip(), expected_output.strip())
def testStringPolicy(self):
# Tests a policy group with a single policy of type 'string'. Also test
# inheriting group description to policy description.
grd = self.PrepareTest('''
{
'policy_definitions': [
{
'name': 'StringGroup',
'type': 'group',
'caption': 'Caption of group.',
'desc': """Description of group.
With a newline.""",
'policies': [{
'name': 'StringPolicy',
'type': 'string',
'caption': 'Caption of policy.',
'desc': """Description of policy.
With a newline.""",
'supported_on': ['chrome.mac:8-'],
}],
},
],
'placeholders': [],
'messages': {
'mac_chrome_preferences': {
'text': 'Preferences of $1',
'desc': 'blah'
}
}
}''')
output = self.GetOutput(
grd,
'fr',
{'_chromium' : '1', 'mac_bundle_id': 'com.example.Test'},
'plist_strings',
'en')
expected_output = (
'Chromium.pfm_title = "Chromium";\n'
'Chromium.pfm_description = "Preferences of Chromium";\n'
'StringPolicy.pfm_title = "Caption of policy.";\n'
'StringPolicy.pfm_description = '
'"Description of policy.\\nWith a newline.";')
self.assertEquals(output.strip(), expected_output.strip())
def testStringListPolicy(self):
# Tests a policy group with a single policy of type 'list'.
grd = self.PrepareTest('''
{
'policy_definitions': [
{
'name': 'ListGroup',
'type': 'group',
'caption': '',
'desc': '',
'policies': [{
'name': 'ListPolicy',
'type': 'list',
'caption': 'Caption of policy.',
'desc': """Description of policy.
With a newline.""",
'schema': {
'type': 'array',
'items': { 'type': 'string' },
},
'supported_on': ['chrome.mac:8-'],
}],
},
],
'placeholders': [],
'messages': {
'mac_chrome_preferences': {
'text': 'Preferences of $1',
'desc': 'blah'
}
}
}''')
output = self.GetOutput(
grd,
'fr',
{'_chromium' : '1', 'mac_bundle_id': 'com.example.Test'},
'plist_strings',
'en')
expected_output = (
'Chromium.pfm_title = "Chromium";\n'
'Chromium.pfm_description = "Preferences of Chromium";\n'
'ListPolicy.pfm_title = "Caption of policy.";\n'
'ListPolicy.pfm_description = '
'"Description of policy.\\nWith a newline.";')
self.assertEquals(output.strip(), expected_output.strip())
def testStringEnumListPolicy(self):
# Tests a policy group with a single policy of type 'string-enum-list'.
grd = self.PrepareTest('''
{
'policy_definitions': [
{
'name': 'EnumGroup',
'type': 'group',
'caption': '',
'desc': '',
'policies': [{
'name': 'EnumPolicy',
'type': 'string-enum-list',
'caption': 'Caption of policy.',
'desc': """Description of policy.
With a newline.""",
'schema': {
'type': 'array',
'items': { 'type': 'string' },
},
'items': [
{
'name': 'ProxyServerDisabled',
'value': 'one',
'caption': 'Option1'
},
{
'name': 'ProxyServerAutoDetect',
'value': 'two',
'caption': 'Option2'
},
],
'supported_on': ['chrome.mac:8-'],
}],
},
],
'placeholders': [],
'messages': {
'mac_chrome_preferences': {
'text': 'Preferences of $1',
'desc': 'blah'
}
}
}''')
output = self.GetOutput(
grd,
'fr',
{'_chromium' : '1', 'mac_bundle_id': 'com.example.Test'},
'plist_strings',
'en')
expected_output = (
'Chromium.pfm_title = "Chromium";\n'
'Chromium.pfm_description = "Preferences of Chromium";\n'
'EnumPolicy.pfm_title = "Caption of policy.";\n'
'EnumPolicy.pfm_description = '
'"one - Option1\\ntwo - Option2\\n'
'Description of policy.\\nWith a newline.";')
self.assertEquals(output.strip(), expected_output.strip())
def testIntEnumPolicy(self):
# Tests a policy group with a single policy of type 'int-enum'.
grd = self.PrepareTest('''
{
'policy_definitions': [
{
'name': 'EnumGroup',
'type': 'group',
'desc': '',
'caption': '',
'policies': [{
'name': 'EnumPolicy',
'type': 'int-enum',
'desc': 'Description of policy.',
'caption': 'Caption of policy.',
'items': [
{
'name': 'ProxyServerDisabled',
'value': 0,
'caption': 'Option1'
},
{
'name': 'ProxyServerAutoDetect',
'value': 1,
'caption': 'Option2'
},
],
'supported_on': ['chrome.mac:8-'],
}],
},
],
'placeholders': [],
'messages': {
'mac_chrome_preferences': {
'text': '$1 preferences',
'desc': 'blah'
}
}
}''')
output = self.GetOutput(
grd,
'fr',
{'_google_chrome': '1', 'mac_bundle_id': 'com.example.Test2'},
'plist_strings',
'en')
expected_output = (
'Google_Chrome.pfm_title = "Google Chrome";\n'
'Google_Chrome.pfm_description = "Google Chrome preferences";\n'
'EnumPolicy.pfm_title = "Caption of policy.";\n'
'EnumPolicy.pfm_description = '
'"0 - Option1\\n1 - Option2\\nDescription of policy.";\n')
self.assertEquals(output.strip(), expected_output.strip())
def testStringEnumPolicy(self):
# Tests a policy group with a single policy of type 'string-enum'.
grd = self.PrepareTest('''
{
'policy_definitions': [
{
'name': 'EnumGroup',
'type': 'group',
'desc': '',
'caption': '',
'policies': [{
'name': 'EnumPolicy',
'type': 'string-enum',
'desc': 'Description of policy.',
'caption': 'Caption of policy.',
'items': [
{
'name': 'ProxyServerDisabled',
'value': 'one',
'caption': 'Option1'
},
{
'name': 'ProxyServerAutoDetect',
'value': 'two',
'caption': 'Option2'
},
],
'supported_on': ['chrome.mac:8-'],
}],
},
],
'placeholders': [],
'messages': {
'mac_chrome_preferences': {
'text': '$1 preferences',
'desc': 'blah'
}
}
}''')
output = self.GetOutput(
grd,
'fr',
{'_google_chrome': '1', 'mac_bundle_id': 'com.example.Test2'},
'plist_strings',
'en')
expected_output = (
'Google_Chrome.pfm_title = "Google Chrome";\n'
'Google_Chrome.pfm_description = "Google Chrome preferences";\n'
'EnumPolicy.pfm_title = "Caption of policy.";\n'
'EnumPolicy.pfm_description = '
'"one - Option1\\ntwo - Option2\\nDescription of policy.";\n')
self.assertEquals(output.strip(), expected_output.strip())
def testNonSupportedPolicy(self):
# Tests a policy that is not supported on Mac, so its strings shouldn't
# be included in the plist string table.
grd = self.PrepareTest('''
{
'policy_definitions': [
{
'name': 'NonMacGroup',
'type': 'group',
'caption': '',
'desc': '',
'policies': [{
'name': 'NonMacPolicy',
'type': 'string',
'caption': '',
'desc': '',
'supported_on': ['chrome_os:8-'],
}],
},
],
'placeholders': [],
'messages': {
'mac_chrome_preferences': {
'text': '$1 preferences',
'desc': 'blah'
}
}
}''')
output = self.GetOutput(
grd,
'fr',
{'_google_chrome': '1', 'mac_bundle_id': 'com.example.Test2'},
'plist_strings',
'en')
expected_output = (
'Google_Chrome.pfm_title = "Google Chrome";\n'
'Google_Chrome.pfm_description = "Google Chrome preferences";')
self.assertEquals(output.strip(), expected_output.strip())
if __name__ == '__main__':
unittest.main()