comparison examples/doctest.txt @ 88:712a6d358083

fixed output broke other things
author Jeff Hammel <jhammel@mozilla.com>
date Mon, 10 Jan 2011 19:57:13 -0800
parents 3571417ef92e
children 26b9c3bba04e
comparison
equal deleted inserted replaced
87:3571417ef92e 88:712a6d358083
1 MakeItSo! 1 MakeItSo!
2 ========= 2 =========
3 3
4 Boilerplate: 4 A filesystem templating system for rapid deploy of projects
5
6 Boilerplate::
5 7
6 >>> import makeitso 8 >>> import makeitso
7 >>> import os 9 >>> import os
8 >>> import shutil 10 >>> import shutil
9 >>> import tempfile 11 >>> import tempfile
13 15
14 >>> example = os.path.join(here, 'example.txt') 16 >>> example = os.path.join(here, 'example.txt')
15 >>> template = makeitso.PolyTemplate([example], interactive=False) 17 >>> template = makeitso.PolyTemplate([example], interactive=False)
16 >>> template.missing() 18 >>> template.missing()
17 set(['name']) 19 set(['name'])
18 >>> template.substitute(name='foo') 20 >>> template.substitute(output=None, name='foo')
19 Hello foo 21 Hello foo
20 22
21 Substitute to a buffer:: 23 Substitute to a buffer::
22 24
23 >>> buffer = StringIO() 25 >>> buffer = StringIO()
24 >>> template = makeitso.PolyTemplate([example], output=buffer, interactive=False) 26 >>> template = makeitso.PolyTemplate([example], interactive=False)
25 >>> template.substitute(name='bar') 27 >>> template.substitute(output=buffer, name='bar')
26 >>> buffer.getvalue().strip() 28 >>> buffer.getvalue().strip()
27 'Hello bar' 29 'Hello bar'
28 30
29 Substitute to a file:: 31 Substitute to a file::
30 32
31 >>> buffer = tempfile.mktemp() 33 >>> buffer = tempfile.mktemp()
32 >>> template = makeitso.PolyTemplate([example], output=buffer, interactive=False) 34 >>> template = makeitso.PolyTemplate([example], interactive=False)
33 >>> template.substitute(name='fleem') 35 >>> template.substitute(buffer, name='fleem')
34 >>> file(buffer).read().strip() 36 >>> file(buffer).read().strip()
35 'Hello fleem' 37 'Hello fleem'
36 >>> os.remove(buffer) 38 >>> os.remove(buffer)
37 39
38 Directory case:: 40 Directory case::
39 41
40 >>> exampledir = os.path.join(here, 'directory-example') 42 >>> exampledir = os.path.join(here, 'directory-example')
41 >>> tempdir = tempfile.mkdtemp() 43 >>> tempdir = tempfile.mkdtemp()
42 >>> template = makeitso.PolyTemplate([exampledir], output=tempdir, interactive=False) 44 >>> template = makeitso.PolyTemplate([exampledir], interactive=False)
43 >>> sorted(template.missing()) 45 >>> sorted(template.missing())
44 ['bar', 'foo', 'subdir'] 46 ['bar', 'foo', 'subdir']
45 >>> template.substitute(foo='It', bar='life', subdir='mysubdir') 47 >>> template.substitute(tempdir, foo='It', bar='life', subdir='mysubdir')
46 >>> sorted(os.listdir(tempdir)) 48 >>> sorted(os.listdir(tempdir))
47 ['foo.txt', 'mysubdir'] 49 ['foo.txt', 'mysubdir']
48 >>> file(os.path.join(tempdir, 'foo.txt')).read().strip() 50 >>> file(os.path.join(tempdir, 'foo.txt')).read().strip()
49 'It is a wonderful life' 51 'It is a wonderful life'
50 >>> os.listdir(os.path.join(tempdir, 'mysubdir')) 52 >>> os.listdir(os.path.join(tempdir, 'mysubdir'))
62 64
63 You need to provide output for mixing files and directory templates:: 65 You need to provide output for mixing files and directory templates::
64 66
65 >>> variables = dict([(i, i.title()) for i in variables]) 67 >>> variables = dict([(i, i.title()) for i in variables])
66 >>> try: 68 >>> try:
67 ... template.substitute(**variables) 69 ... template.substitute(output=None, **variables)
68 ... except AssertionError, e: 70 ... except AssertionError, e:
69 ... pass 71 ... pass
70 >>> e 72 >>> e
71 AssertionError('Must specify output ... 73 AssertionError()
72 74
73 Provide an output:: 75 Provide an output::
74 76
75 >>> template = makeitso.PolyTemplate([example, exampledir], output=tempdir, interactive=False) 77 >>> template = makeitso.PolyTemplate([example, exampledir], interactive=False)
76 >>> template.substitute(**variables) 78 >>> template.substitute(tempdir, **variables)
77 >>> sorted(os.listdir(tempdir)) 79 >>> sorted(os.listdir(tempdir))
78 ['Subdir', 'example.txt', 'foo.txt'] 80 ['Subdir', 'example.txt', 'foo.txt']
79 >>> shutil.rmtree(tempdir) 81 >>> shutil.rmtree(tempdir)
80 82
81 Test API templates:: 83 Test API templates::
84 >>> class MyTemplate(MakeItSoTemplate): 86 >>> class MyTemplate(MakeItSoTemplate):
85 ... name = 'foo' 87 ... name = 'foo'
86 ... templates = ['example.txt'] 88 ... templates = ['example.txt']
87 ... vars = [Variable(name='name', default='bar')] 89 ... vars = [Variable(name='name', default='bar')]
88 >>> buffer = tempfile.mktemp() 90 >>> buffer = tempfile.mktemp()
89 >>> apitemplate = MyTemplate(output=buffer) 91 >>> apitemplate = MyTemplate(interactive=False)
90 >>> apitemplate.substitute() 92 >>> apitemplate.substitute(buffer)
91 >>> file(buffer).read().strip() 93 >>> file(buffer).read().strip()
92 'Hello bar' 94 'Hello bar'
93 >>> os.remove(buffer) 95 >>> os.remove(buffer)
94 96
95 Test to make sure permissions are preserved. This won't work on windows:: 97 Test to make sure permissions are preserved. This won't work on windows::
97 >>> buffer = tempfile.mktemp() 99 >>> buffer = tempfile.mktemp()
98 >>> f = file(buffer, 'w') 100 >>> f = file(buffer, 'w')
99 >>> print >> f, '#!/bin/bash\necho foo' 101 >>> print >> f, '#!/bin/bash\necho foo'
100 >>> f.close() 102 >>> f.close()
101 >>> os.chmod(buffer, 0755) 103 >>> os.chmod(buffer, 0755)
102 >>> uritemplate = makeitso.URITemplate(example, output=buffer, interactive=False) 104 >>> uritemplate = makeitso.URITemplate(example, interactive=False)
103 >>> uritemplate.substitute(name='bar') 105 >>> uritemplate.substitute(buffer, name='bar')
104 >>> ('%o' % os.stat(buffer).st_mode).endswith('755') 106 >>> ('%o' % os.stat(buffer).st_mode).endswith('755')
105 True 107 True
106 >>> os.remove(buffer) 108 >>> os.remove(buffer)