Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(38)

Side by Side Diff: grit/format/policy_templates/writers/admx_writer_unittest.py

Issue 1438403002: Remove contents of grit's git-svn-mirror repository. (Closed) Base URL: https://chromium.googlesource.com/external/grit-i18n@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6
7 """Unittests for grit.format.policy_templates.writers.admx_writer."""
8
9
10 import os
11 import sys
12 import unittest
13 if __name__ == '__main__':
14 sys.path.append(os.path.join(os.path.dirname(__file__), '../../../..'))
15
16
17 from grit.format.policy_templates.writers import admx_writer
18 from grit.format.policy_templates.writers import xml_writer_base_unittest
19 from xml.dom import minidom
20
21
22 class AdmxWriterUnittest(xml_writer_base_unittest.XmlWriterBaseTest):
23
24 def _CreateDocumentElement(self):
25 dom_impl = minidom.getDOMImplementation('')
26 doc = dom_impl.createDocument(None, 'root', None)
27 return doc.documentElement
28
29 def setUp(self):
30 # Writer configuration. This dictionary contains parameter used by the ADMX
31 # Writer
32 config = {
33 'win_group_policy_class': 'TestClass',
34 'win_supported_os': 'SUPPORTED_TESTOS',
35 'win_reg_mandatory_key_name': 'Software\\Policies\\Test',
36 'win_reg_recommended_key_name': 'Software\\Policies\\Test\\Recommended',
37 'win_mandatory_category_path': ['test_category'],
38 'win_recommended_category_path': ['test_recommended_category'],
39 'admx_namespace': 'ADMXWriter.Test.Namespace',
40 'admx_prefix': 'test_prefix',
41 'build': 'test_product',
42 }
43 self.writer = admx_writer.GetWriter(config)
44 self.writer.Init()
45
46 def _GetPoliciesElement(self, doc):
47 node_list = doc.getElementsByTagName('policies')
48 self.assertTrue(node_list.length == 1)
49 return node_list.item(0)
50
51 def _GetCategoriesElement(self, doc):
52 node_list = doc.getElementsByTagName('categories')
53 self.assertTrue(node_list.length == 1)
54 return node_list.item(0)
55
56 def testEmpty(self):
57 self.writer.BeginTemplate()
58 self.writer.EndTemplate()
59
60 output = self.writer.GetTemplateText()
61 expected_output = (
62 '<?xml version="1.0" ?>\n'
63 '<policyDefinitions revision="1.0" schemaVersion="1.0">\n'
64 ' <policyNamespaces>\n'
65 ' <target namespace="ADMXWriter.Test.Namespace"'
66 ' prefix="test_prefix"/>\n'
67 ' <using namespace="Microsoft.Policies.Windows" prefix="windows"/>\n'
68 ' </policyNamespaces>\n'
69 ' <resources minRequiredRevision="1.0"/>\n'
70 ' <supportedOn>\n'
71 ' <definitions>\n'
72 ' <definition displayName="'
73 '$(string.SUPPORTED_TESTOS)" name="SUPPORTED_TESTOS"/>\n'
74 ' </definitions>\n'
75 ' </supportedOn>\n'
76 ' <categories>\n'
77 ' <category displayName="$(string.test_category)"'
78 ' name="test_category"/>\n'
79 ' <category displayName="$(string.test_recommended_category)"'
80 ' name="test_recommended_category"/>\n'
81 ' </categories>\n'
82 ' <policies/>\n'
83 '</policyDefinitions>')
84 self.AssertXMLEquals(output, expected_output)
85
86 def testEmptyVersion(self):
87 self.writer.config['version'] = '39.0.0.0'
88 self.writer.BeginTemplate()
89 self.writer.EndTemplate()
90
91 output = self.writer.GetTemplateText()
92 expected_output = (
93 '<?xml version="1.0" ?>\n'
94 '<policyDefinitions revision="1.0" schemaVersion="1.0">\n'
95 ' <!--test_product version: 39.0.0.0-->\n'
96 ' <policyNamespaces>\n'
97 ' <target namespace="ADMXWriter.Test.Namespace"'
98 ' prefix="test_prefix"/>\n'
99 ' <using namespace="Microsoft.Policies.Windows" prefix="windows"/>\n'
100 ' </policyNamespaces>\n'
101 ' <resources minRequiredRevision="1.0"/>\n'
102 ' <supportedOn>\n'
103 ' <definitions>\n'
104 ' <definition displayName="'
105 '$(string.SUPPORTED_TESTOS)" name="SUPPORTED_TESTOS"/>\n'
106 ' </definitions>\n'
107 ' </supportedOn>\n'
108 ' <categories>\n'
109 ' <category displayName="$(string.test_category)"'
110 ' name="test_category"/>\n'
111 ' <category displayName="$(string.test_recommended_category)"'
112 ' name="test_recommended_category"/>\n'
113 ' </categories>\n'
114 ' <policies/>\n'
115 '</policyDefinitions>')
116 self.AssertXMLEquals(output, expected_output)
117
118 def testEmptyPolicyGroup(self):
119 empty_policy_group = {
120 'name': 'PolicyGroup',
121 'policies': []
122 }
123 # Initialize writer to write a policy group.
124 self.writer.BeginTemplate()
125 # Write policy group
126 self.writer.BeginPolicyGroup(empty_policy_group)
127 self.writer.EndPolicyGroup()
128
129 output = self.GetXMLOfChildren(self._GetPoliciesElement(self.writer._doc))
130 expected_output = ''
131 self.AssertXMLEquals(output, expected_output)
132
133 output = self.GetXMLOfChildren(
134 self._GetCategoriesElement(self.writer._doc))
135 expected_output = (
136 '<category displayName="$(string.test_category)"'
137 ' name="test_category"/>\n'
138 '<category displayName="$(string.test_recommended_category)"'
139 ' name="test_recommended_category"/>\n'
140 '<category displayName="$(string.PolicyGroup_group)"'
141 ' name="PolicyGroup">\n'
142 ' <parentCategory ref="test_category"/>\n'
143 '</category>')
144
145 self.AssertXMLEquals(output, expected_output)
146
147 def testPolicyGroup(self):
148 empty_policy_group = {
149 'name': 'PolicyGroup',
150 'policies': [
151 {'name': 'PolicyStub2',
152 'type': 'main'},
153 {'name': 'PolicyStub1',
154 'type': 'main'},
155 ]
156 }
157 # Initialize writer to write a policy group.
158 self.writer.BeginTemplate()
159 # Write policy group
160 self.writer.BeginPolicyGroup(empty_policy_group)
161 self.writer.EndPolicyGroup()
162
163 output = self.GetXMLOfChildren(self._GetPoliciesElement(self.writer._doc))
164 expected_output = ''
165 self.AssertXMLEquals(output, expected_output)
166
167 output = self.GetXMLOfChildren(
168 self._GetCategoriesElement(self.writer._doc))
169 expected_output = (
170 '<category displayName="$(string.test_category)"'
171 ' name="test_category"/>\n'
172 '<category displayName="$(string.test_recommended_category)"'
173 ' name="test_recommended_category"/>\n'
174 '<category displayName="$(string.PolicyGroup_group)"'
175 ' name="PolicyGroup">\n'
176 ' <parentCategory ref="test_category"/>\n'
177 '</category>')
178 self.AssertXMLEquals(output, expected_output)
179
180
181 def _initWriterForPolicy(self, writer, policy):
182 '''Initializes the writer to write the given policy next.
183 '''
184 policy_group = {
185 'name': 'PolicyGroup',
186 'policies': [policy]
187 }
188 writer.BeginTemplate()
189 writer.BeginPolicyGroup(policy_group)
190
191 def testMainPolicy(self):
192 main_policy = {
193 'name': 'DummyMainPolicy',
194 'type': 'main',
195 }
196
197 self._initWriterForPolicy(self.writer, main_policy)
198
199 self.writer.WritePolicy(main_policy)
200
201 output = self.GetXMLOfChildren(self._GetPoliciesElement(self.writer._doc))
202 expected_output = (
203 '<policy class="TestClass" displayName="$(string.DummyMainPolicy)"'
204 ' explainText="$(string.DummyMainPolicy_Explain)"'
205 ' key="Software\\Policies\\Test" name="DummyMainPolicy"'
206 ' presentation="$(presentation.DummyMainPolicy)"'
207 ' valueName="DummyMainPolicy">\n'
208 ' <parentCategory ref="PolicyGroup"/>\n'
209 ' <supportedOn ref="SUPPORTED_TESTOS"/>\n'
210 ' <enabledValue>\n'
211 ' <decimal value="1"/>\n'
212 ' </enabledValue>\n'
213 ' <disabledValue>\n'
214 ' <decimal value="0"/>\n'
215 ' </disabledValue>\n'
216 '</policy>')
217
218 self.AssertXMLEquals(output, expected_output)
219
220 def testRecommendedPolicy(self):
221 main_policy = {
222 'name': 'DummyMainPolicy',
223 'type': 'main',
224 }
225
226 policy_group = {
227 'name': 'PolicyGroup',
228 'policies': [main_policy],
229 }
230 self.writer.BeginTemplate()
231 self.writer.BeginRecommendedPolicyGroup(policy_group)
232
233 self.writer.WriteRecommendedPolicy(main_policy)
234
235 output = self.GetXMLOfChildren(self._GetPoliciesElement(self.writer._doc))
236 expected_output = (
237 '<policy class="TestClass" displayName="$(string.DummyMainPolicy)"'
238 ' explainText="$(string.DummyMainPolicy_Explain)"'
239 ' key="Software\\Policies\\Test\\Recommended"'
240 ' name="DummyMainPolicy_recommended"'
241 ' presentation="$(presentation.DummyMainPolicy)"'
242 ' valueName="DummyMainPolicy">\n'
243 ' <parentCategory ref="PolicyGroup_recommended"/>\n'
244 ' <supportedOn ref="SUPPORTED_TESTOS"/>\n'
245 ' <enabledValue>\n'
246 ' <decimal value="1"/>\n'
247 ' </enabledValue>\n'
248 ' <disabledValue>\n'
249 ' <decimal value="0"/>\n'
250 ' </disabledValue>\n'
251 '</policy>')
252
253 self.AssertXMLEquals(output, expected_output)
254
255 def testRecommendedOnlyPolicy(self):
256 main_policy = {
257 'name': 'DummyMainPolicy',
258 'type': 'main',
259 'features': {
260 'can_be_recommended': True,
261 'can_be_mandatory': False,
262 }
263 }
264
265 policy_group = {
266 'name': 'PolicyGroup',
267 'policies': [main_policy],
268 }
269 self.writer.BeginTemplate()
270 self.writer.BeginRecommendedPolicyGroup(policy_group)
271
272 self.writer.WritePolicy(main_policy)
273 self.writer.WriteRecommendedPolicy(main_policy)
274
275 output = self.GetXMLOfChildren(self._GetPoliciesElement(self.writer._doc))
276 expected_output = (
277 '<policy class="TestClass" displayName="$(string.DummyMainPolicy)"'
278 ' explainText="$(string.DummyMainPolicy_Explain)"'
279 ' key="Software\\Policies\\Test\\Recommended"'
280 ' name="DummyMainPolicy_recommended"'
281 ' presentation="$(presentation.DummyMainPolicy)"'
282 ' valueName="DummyMainPolicy">\n'
283 ' <parentCategory ref="PolicyGroup_recommended"/>\n'
284 ' <supportedOn ref="SUPPORTED_TESTOS"/>\n'
285 ' <enabledValue>\n'
286 ' <decimal value="1"/>\n'
287 ' </enabledValue>\n'
288 ' <disabledValue>\n'
289 ' <decimal value="0"/>\n'
290 ' </disabledValue>\n'
291 '</policy>')
292
293 self.AssertXMLEquals(output, expected_output)
294
295 def testStringPolicy(self):
296 string_policy = {
297 'name': 'SampleStringPolicy',
298 'type': 'string',
299 }
300 self._initWriterForPolicy(self.writer, string_policy)
301
302 self.writer.WritePolicy(string_policy)
303 output = self.GetXMLOfChildren(self._GetPoliciesElement(self.writer._doc))
304 expected_output = (
305 '<policy class="TestClass" displayName="$(string.SampleStringPolicy)"'
306 ' explainText="$(string.SampleStringPolicy_Explain)"'
307 ' key="Software\\Policies\\Test" name="SampleStringPolicy"'
308 ' presentation="$(presentation.SampleStringPolicy)">\n'
309 ' <parentCategory ref="PolicyGroup"/>\n'
310 ' <supportedOn ref="SUPPORTED_TESTOS"/>\n'
311 ' <elements>\n'
312 ' <text id="SampleStringPolicy" maxLength="1000000"'
313 ' valueName="SampleStringPolicy"/>\n'
314 ' </elements>\n'
315 '</policy>')
316 self.AssertXMLEquals(output, expected_output)
317
318 def testIntPolicy(self):
319 int_policy = {
320 'name': 'SampleIntPolicy',
321 'type': 'int',
322 }
323 self._initWriterForPolicy(self.writer, int_policy)
324
325 self.writer.WritePolicy(int_policy)
326 output = self.GetXMLOfChildren(self._GetPoliciesElement(self.writer._doc))
327 expected_output = (
328 '<policy class="TestClass" displayName="$(string.SampleIntPolicy)"'
329 ' explainText="$(string.SampleIntPolicy_Explain)"'
330 ' key="Software\\Policies\\Test" name="SampleIntPolicy"'
331 ' presentation="$(presentation.SampleIntPolicy)">\n'
332 ' <parentCategory ref="PolicyGroup"/>\n'
333 ' <supportedOn ref="SUPPORTED_TESTOS"/>\n'
334 ' <elements>\n'
335 ' <decimal id="SampleIntPolicy" maxValue="2000000000" '
336 'valueName="SampleIntPolicy"/>\n'
337 ' </elements>\n'
338 '</policy>')
339 self.AssertXMLEquals(output, expected_output)
340
341 def testIntEnumPolicy(self):
342 enum_policy = {
343 'name': 'SampleEnumPolicy',
344 'type': 'int-enum',
345 'items': [
346 {'name': 'item_1', 'value': 0},
347 {'name': 'item_2', 'value': 1},
348 ]
349 }
350
351 self._initWriterForPolicy(self.writer, enum_policy)
352 self.writer.WritePolicy(enum_policy)
353 output = self.GetXMLOfChildren(self._GetPoliciesElement(self.writer._doc))
354 expected_output = (
355 '<policy class="TestClass" displayName="$(string.SampleEnumPolicy)"'
356 ' explainText="$(string.SampleEnumPolicy_Explain)"'
357 ' key="Software\\Policies\\Test" name="SampleEnumPolicy"'
358 ' presentation="$(presentation.SampleEnumPolicy)">\n'
359 ' <parentCategory ref="PolicyGroup"/>\n'
360 ' <supportedOn ref="SUPPORTED_TESTOS"/>\n'
361 ' <elements>\n'
362 ' <enum id="SampleEnumPolicy" valueName="SampleEnumPolicy">\n'
363 ' <item displayName="$(string.item_1)">\n'
364 ' <value>\n'
365 ' <decimal value="0"/>\n'
366 ' </value>\n'
367 ' </item>\n'
368 ' <item displayName="$(string.item_2)">\n'
369 ' <value>\n'
370 ' <decimal value="1"/>\n'
371 ' </value>\n'
372 ' </item>\n'
373 ' </enum>\n'
374 ' </elements>\n'
375 '</policy>')
376 self.AssertXMLEquals(output, expected_output)
377
378 def testStringEnumPolicy(self):
379 enum_policy = {
380 'name': 'SampleEnumPolicy',
381 'type': 'string-enum',
382 'items': [
383 {'name': 'item_1', 'value': 'one'},
384 {'name': 'item_2', 'value': 'two'},
385 ]
386 }
387
388 # This test is different than the others because it also tests that space
389 # usage inside <string> nodes is correct.
390 dom_impl = minidom.getDOMImplementation('')
391 self.writer._doc = dom_impl.createDocument(None, 'policyDefinitions', None)
392 self.writer._active_policies_elem = self.writer._doc.documentElement
393 self.writer._active_mandatory_policy_group_name = 'PolicyGroup'
394 self.writer.WritePolicy(enum_policy)
395 output = self.writer.GetTemplateText()
396 expected_output = (
397 '<?xml version="1.0" ?>\n'
398 '<policyDefinitions>\n'
399 ' <policy class="TestClass" displayName="$(string.SampleEnumPolicy)"'
400 ' explainText="$(string.SampleEnumPolicy_Explain)"'
401 ' key="Software\\Policies\\Test" name="SampleEnumPolicy"'
402 ' presentation="$(presentation.SampleEnumPolicy)">\n'
403 ' <parentCategory ref="PolicyGroup"/>\n'
404 ' <supportedOn ref="SUPPORTED_TESTOS"/>\n'
405 ' <elements>\n'
406 ' <enum id="SampleEnumPolicy" valueName="SampleEnumPolicy">\n'
407 ' <item displayName="$(string.item_1)">\n'
408 ' <value>\n'
409 ' <string>one</string>\n'
410 ' </value>\n'
411 ' </item>\n'
412 ' <item displayName="$(string.item_2)">\n'
413 ' <value>\n'
414 ' <string>two</string>\n'
415 ' </value>\n'
416 ' </item>\n'
417 ' </enum>\n'
418 ' </elements>\n'
419 ' </policy>\n'
420 '</policyDefinitions>')
421 self.AssertXMLEquals(output, expected_output)
422
423 def testListPolicy(self):
424 list_policy = {
425 'name': 'SampleListPolicy',
426 'type': 'list',
427 }
428 self._initWriterForPolicy(self.writer, list_policy)
429 self.writer.WritePolicy(list_policy)
430 output = self.GetXMLOfChildren(self._GetPoliciesElement(self.writer._doc))
431 expected_output = (
432 '<policy class="TestClass" displayName="$(string.SampleListPolicy)"'
433 ' explainText="$(string.SampleListPolicy_Explain)"'
434 ' key="Software\\Policies\\Test" name="SampleListPolicy"'
435 ' presentation="$(presentation.SampleListPolicy)">\n'
436 ' <parentCategory ref="PolicyGroup"/>\n'
437 ' <supportedOn ref="SUPPORTED_TESTOS"/>\n'
438 ' <elements>\n'
439 ' <list id="SampleListPolicyDesc"'
440 ' key="Software\Policies\Test\SampleListPolicy" valuePrefix=""/>\n'
441 ' </elements>\n'
442 '</policy>')
443
444 self.AssertXMLEquals(output, expected_output)
445
446 def testStringEnumListPolicy(self):
447 list_policy = {
448 'name': 'SampleListPolicy',
449 'type': 'string-enum-list',
450 'items': [
451 {'name': 'item_1', 'value': 'one'},
452 {'name': 'item_2', 'value': 'two'},
453 ]
454 }
455 self._initWriterForPolicy(self.writer, list_policy)
456 self.writer.WritePolicy(list_policy)
457 output = self.GetXMLOfChildren(self._GetPoliciesElement(self.writer._doc))
458 expected_output = (
459 '<policy class="TestClass" displayName="$(string.SampleListPolicy)"'
460 ' explainText="$(string.SampleListPolicy_Explain)"'
461 ' key="Software\\Policies\\Test" name="SampleListPolicy"'
462 ' presentation="$(presentation.SampleListPolicy)">\n'
463 ' <parentCategory ref="PolicyGroup"/>\n'
464 ' <supportedOn ref="SUPPORTED_TESTOS"/>\n'
465 ' <elements>\n'
466 ' <list id="SampleListPolicyDesc"'
467 ' key="Software\Policies\Test\SampleListPolicy" valuePrefix=""/>\n'
468 ' </elements>\n'
469 '</policy>')
470
471 self.AssertXMLEquals(output, expected_output)
472
473 def testDictionaryPolicy(self):
474 dict_policy = {
475 'name': 'SampleDictionaryPolicy',
476 'type': 'dict',
477 }
478 self._initWriterForPolicy(self.writer, dict_policy)
479
480 self.writer.WritePolicy(dict_policy)
481 output = self.GetXMLOfChildren(self._GetPoliciesElement(self.writer._doc))
482 expected_output = (
483 '<policy class="TestClass" displayName="$(string.'
484 'SampleDictionaryPolicy)"'
485 ' explainText="$(string.SampleDictionaryPolicy_Explain)"'
486 ' key="Software\\Policies\\Test" name="SampleDictionaryPolicy"'
487 ' presentation="$(presentation.SampleDictionaryPolicy)">\n'
488 ' <parentCategory ref="PolicyGroup"/>\n'
489 ' <supportedOn ref="SUPPORTED_TESTOS"/>\n'
490 ' <elements>\n'
491 ' <text id="SampleDictionaryPolicy" maxLength="1000000"'
492 ' valueName="SampleDictionaryPolicy"/>\n'
493 ' </elements>\n'
494 '</policy>')
495 self.AssertXMLEquals(output, expected_output)
496
497 def testPlatform(self):
498 # Test that the writer correctly chooses policies of platform Windows.
499 self.assertTrue(self.writer.IsPolicySupported({
500 'supported_on': [
501 {'platforms': ['win', 'zzz']}, {'platforms': ['aaa']}
502 ]
503 }))
504 self.assertFalse(self.writer.IsPolicySupported({
505 'supported_on': [
506 {'platforms': ['mac', 'linux']}, {'platforms': ['aaa']}
507 ]
508 }))
509
510 def testStringEncodings(self):
511 enum_policy_a = {
512 'name': 'SampleEnumPolicy.A',
513 'type': 'string-enum',
514 'items': [
515 {'name': 'tls1.2', 'value': 'tls1.2'}
516 ]
517 }
518 enum_policy_b = {
519 'name': 'SampleEnumPolicy.B',
520 'type': 'string-enum',
521 'items': [
522 {'name': 'tls1.2', 'value': 'tls1.2'}
523 ]
524 }
525
526 dom_impl = minidom.getDOMImplementation('')
527 self.writer._doc = dom_impl.createDocument(None, 'policyDefinitions', None)
528 self.writer._active_policies_elem = self.writer._doc.documentElement
529 self.writer._active_mandatory_policy_group_name = 'PolicyGroup'
530 self.writer.WritePolicy(enum_policy_a)
531 self.writer.WritePolicy(enum_policy_b)
532 output = self.writer.GetTemplateText()
533 expected_output = (
534 '<?xml version="1.0" ?>\n'
535 '<policyDefinitions>\n'
536 ' <policy class="TestClass" displayName="$(string.SampleEnumPolicy_A)"'
537 ' explainText="$(string.SampleEnumPolicy_A_Explain)"'
538 ' key="Software\\Policies\\Test" name="SampleEnumPolicy.A"'
539 ' presentation="$(presentation.SampleEnumPolicy.A)">\n'
540 ' <parentCategory ref="PolicyGroup"/>\n'
541 ' <supportedOn ref="SUPPORTED_TESTOS"/>\n'
542 ' <elements>\n'
543 ' <enum id="SampleEnumPolicy.A" valueName="SampleEnumPolicy.A">\n'
544 ' <item displayName="$(string.tls1_2)">\n'
545 ' <value>\n'
546 ' <string>tls1.2</string>\n'
547 ' </value>\n'
548 ' </item>\n'
549 ' </enum>\n'
550 ' </elements>\n'
551 ' </policy>\n'
552 ' <policy class="TestClass" displayName="$(string.SampleEnumPolicy_B)"'
553 ' explainText="$(string.SampleEnumPolicy_B_Explain)"'
554 ' key="Software\\Policies\\Test" name="SampleEnumPolicy.B"'
555 ' presentation="$(presentation.SampleEnumPolicy.B)">\n'
556 ' <parentCategory ref="PolicyGroup"/>\n'
557 ' <supportedOn ref="SUPPORTED_TESTOS"/>\n'
558 ' <elements>\n'
559 ' <enum id="SampleEnumPolicy.B" valueName="SampleEnumPolicy.B">\n'
560 ' <item displayName="$(string.tls1_2)">\n'
561 ' <value>\n'
562 ' <string>tls1.2</string>\n'
563 ' </value>\n'
564 ' </item>\n'
565 ' </enum>\n'
566 ' </elements>\n'
567 ' </policy>\n'
568 '</policyDefinitions>')
569 self.AssertXMLEquals(output, expected_output)
570
571
572 if __name__ == '__main__':
573 unittest.main()
OLDNEW
« no previous file with comments | « grit/format/policy_templates/writers/admx_writer.py ('k') | grit/format/policy_templates/writers/android_policy_writer.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698