fc20e9356e
Lines starting with //$ are removed during preprocessing of the template. This allows comments in the templates that are not copied to the generated text. Update copyright in template file in anticipation of new uses. Review URL: https://chromiumcodereview.appspot.com//10694169 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@9616 260f80e4-7a28-3924-810f-c04153c831b5
132 lines
2.9 KiB
Python
Executable File
132 lines
2.9 KiB
Python
Executable File
#!/usr/bin/python
|
|
# Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
|
|
# for details. All rights reserved. Use of this source code is governed by a
|
|
# BSD-style license that can be found in the LICENSE file.
|
|
|
|
import logging.config
|
|
import unittest
|
|
import templateloader
|
|
|
|
class TemplateLoaderTestCase(unittest.TestCase):
|
|
|
|
def _preprocess(self, input_text, conds):
|
|
loader = templateloader.TemplateLoader('.', [], conds)
|
|
return loader._Preprocess(input_text, '<file>')
|
|
|
|
|
|
def _preprocess_test(self, input_text, conds, expected_text):
|
|
output_text = self._preprocess(input_text, conds)
|
|
if output_text != expected_text:
|
|
msg = '''
|
|
EXPECTED:
|
|
%s
|
|
---
|
|
ACTUAL :
|
|
%s
|
|
---''' % (expected_text, output_text)
|
|
self.fail(msg)
|
|
|
|
|
|
def _preprocess_error_test(self, input_text, conds, expected_message):
|
|
threw = False
|
|
try:
|
|
output_text = self._preprocess(input_text, conds)
|
|
except Exception, e:
|
|
threw = True
|
|
if str(e).find(expected_message) == -1:
|
|
self.fail("'%s' does not contain '%s'" % (e, expected_message))
|
|
if not threw:
|
|
self.fail("missing error, expected '%s'" % expected_message)
|
|
|
|
|
|
def test_freevar(self):
|
|
input_text = '''$A
|
|
$B'''
|
|
self._preprocess_test(input_text, {}, input_text)
|
|
|
|
def test_comments(self):
|
|
input_text = '''//$ comment 1
|
|
Hello
|
|
//$ comment 2'''
|
|
self._preprocess_test(input_text, {}, 'Hello\n')
|
|
|
|
|
|
def test_ite1(self):
|
|
input_text = '''
|
|
aaa
|
|
$if A
|
|
bbb
|
|
$else
|
|
ccc
|
|
$endif
|
|
ddd
|
|
'''
|
|
self._preprocess_test(input_text, {'A':True},
|
|
'''
|
|
aaa
|
|
bbb
|
|
ddd
|
|
''')
|
|
|
|
def test_ite2(self):
|
|
input_text = '''
|
|
aaa
|
|
$if A
|
|
bbb
|
|
$else
|
|
ccc
|
|
$endif
|
|
ddd
|
|
'''
|
|
self._preprocess_test(input_text, {'A':False},
|
|
'''
|
|
aaa
|
|
ccc
|
|
ddd
|
|
''')
|
|
|
|
def test_if1(self):
|
|
input_text = '''
|
|
$if
|
|
'''
|
|
self._preprocess_error_test(input_text, {},
|
|
'$if does not have single variable')
|
|
|
|
def test_if2(self):
|
|
input_text = '''
|
|
$if A
|
|
'''
|
|
self._preprocess_error_test(input_text, {}, 'Unknown $if variable')
|
|
|
|
def test_else1(self):
|
|
input_text = '''
|
|
$else
|
|
'''
|
|
self._preprocess_error_test(input_text, {}, '$else without $if')
|
|
|
|
def test_else2(self):
|
|
input_text = '''
|
|
$if A
|
|
$else
|
|
$else
|
|
'''
|
|
self._preprocess_error_test(input_text, {'A':True}, 'Double $else')
|
|
|
|
def test_eof1(self):
|
|
input_text = '''
|
|
$if A
|
|
'''
|
|
self._preprocess_error_test(input_text, {'A':True}, 'Unterminated')
|
|
|
|
def test_eof2(self):
|
|
input_text = '''
|
|
$if A
|
|
$else
|
|
'''
|
|
self._preprocess_error_test(input_text, {'A':True}, 'Unterminated')
|
|
|
|
if __name__ == "__main__":
|
|
logging.config.fileConfig("logging.conf")
|
|
if __name__ == '__main__':
|
|
unittest.main()
|