Mercurial > hg > MakeItSo
annotate examples/doctest.txt @ 90:26b9c3bba04e
make the api for substitute() variables, output
| author | Jeff Hammel <jhammel@mozilla.com> | 
|---|---|
| date | Mon, 10 Jan 2011 21:33:03 -0800 | 
| parents | 712a6d358083 | 
| children | 672d2d3ee322 | 
| rev | line source | 
|---|---|
| 35 
7e47ff4b0cd3
started writing tests; what a surprise, everything is broken ;)
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 1 MakeItSo! | 
| 
7e47ff4b0cd3
started writing tests; what a surprise, everything is broken ;)
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 2 ========= | 
| 
7e47ff4b0cd3
started writing tests; what a surprise, everything is broken ;)
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 3 | 
| 88 
712a6d358083
fixed output broke other things
 Jeff Hammel <jhammel@mozilla.com> parents: 
87diff
changeset | 4 A filesystem templating system for rapid deploy of projects | 
| 
712a6d358083
fixed output broke other things
 Jeff Hammel <jhammel@mozilla.com> parents: 
87diff
changeset | 5 | 
| 
712a6d358083
fixed output broke other things
 Jeff Hammel <jhammel@mozilla.com> parents: 
87diff
changeset | 6 Boilerplate:: | 
| 35 
7e47ff4b0cd3
started writing tests; what a surprise, everything is broken ;)
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 7 | 
| 
7e47ff4b0cd3
started writing tests; what a surprise, everything is broken ;)
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 8 >>> import makeitso | 
| 
7e47ff4b0cd3
started writing tests; what a surprise, everything is broken ;)
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 9 >>> import os | 
| 37 
7cee2869bd7b
stub out directory example
 Jeff Hammel <jhammel@mozilla.com> parents: 
36diff
changeset | 10 >>> import shutil | 
| 
7cee2869bd7b
stub out directory example
 Jeff Hammel <jhammel@mozilla.com> parents: 
36diff
changeset | 11 >>> import tempfile | 
| 35 
7e47ff4b0cd3
started writing tests; what a surprise, everything is broken ;)
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 12 >>> from StringIO import StringIO | 
| 
7e47ff4b0cd3
started writing tests; what a surprise, everything is broken ;)
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 13 | 
| 87 
3571417ef92e
interpolate file permissions
 Jeff Hammel <jhammel@mozilla.com> parents: 
67diff
changeset | 14 Basic functionality:: | 
| 35 
7e47ff4b0cd3
started writing tests; what a surprise, everything is broken ;)
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 15 | 
| 37 
7cee2869bd7b
stub out directory example
 Jeff Hammel <jhammel@mozilla.com> parents: 
36diff
changeset | 16 >>> example = os.path.join(here, 'example.txt') | 
| 35 
7e47ff4b0cd3
started writing tests; what a surprise, everything is broken ;)
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 17 >>> template = makeitso.PolyTemplate([example], interactive=False) | 
| 
7e47ff4b0cd3
started writing tests; what a surprise, everything is broken ;)
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 18 >>> template.missing() | 
| 
7e47ff4b0cd3
started writing tests; what a surprise, everything is broken ;)
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 19 set(['name']) | 
| 90 
26b9c3bba04e
make the api for substitute() variables, output
 Jeff Hammel <jhammel@mozilla.com> parents: 
88diff
changeset | 20 >>> template.substitute(dict(name='foo')) | 
| 36 
0cba953a03ca
fixed single-file test case
 Jeff Hammel <jhammel@mozilla.com> parents: 
35diff
changeset | 21 Hello foo | 
| 35 
7e47ff4b0cd3
started writing tests; what a surprise, everything is broken ;)
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 22 | 
| 87 
3571417ef92e
interpolate file permissions
 Jeff Hammel <jhammel@mozilla.com> parents: 
67diff
changeset | 23 Substitute to a buffer:: | 
| 35 
7e47ff4b0cd3
started writing tests; what a surprise, everything is broken ;)
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 24 | 
| 
7e47ff4b0cd3
started writing tests; what a surprise, everything is broken ;)
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 25 >>> buffer = StringIO() | 
| 88 
712a6d358083
fixed output broke other things
 Jeff Hammel <jhammel@mozilla.com> parents: 
87diff
changeset | 26 >>> template = makeitso.PolyTemplate([example], interactive=False) | 
| 90 
26b9c3bba04e
make the api for substitute() variables, output
 Jeff Hammel <jhammel@mozilla.com> parents: 
88diff
changeset | 27 >>> template.substitute(dict(name='bar'), output=buffer) | 
| 36 
0cba953a03ca
fixed single-file test case
 Jeff Hammel <jhammel@mozilla.com> parents: 
35diff
changeset | 28 >>> buffer.getvalue().strip() | 
| 
0cba953a03ca
fixed single-file test case
 Jeff Hammel <jhammel@mozilla.com> parents: 
35diff
changeset | 29 'Hello bar' | 
| 37 
7cee2869bd7b
stub out directory example
 Jeff Hammel <jhammel@mozilla.com> parents: 
36diff
changeset | 30 | 
| 87 
3571417ef92e
interpolate file permissions
 Jeff Hammel <jhammel@mozilla.com> parents: 
67diff
changeset | 31 Substitute to a file:: | 
| 37 
7cee2869bd7b
stub out directory example
 Jeff Hammel <jhammel@mozilla.com> parents: 
36diff
changeset | 32 | 
| 
7cee2869bd7b
stub out directory example
 Jeff Hammel <jhammel@mozilla.com> parents: 
36diff
changeset | 33 >>> buffer = tempfile.mktemp() | 
| 88 
712a6d358083
fixed output broke other things
 Jeff Hammel <jhammel@mozilla.com> parents: 
87diff
changeset | 34 >>> template = makeitso.PolyTemplate([example], interactive=False) | 
| 90 
26b9c3bba04e
make the api for substitute() variables, output
 Jeff Hammel <jhammel@mozilla.com> parents: 
88diff
changeset | 35 >>> template.substitute(dict(name='fleem'), buffer) | 
| 37 
7cee2869bd7b
stub out directory example
 Jeff Hammel <jhammel@mozilla.com> parents: 
36diff
changeset | 36 >>> file(buffer).read().strip() | 
| 
7cee2869bd7b
stub out directory example
 Jeff Hammel <jhammel@mozilla.com> parents: 
36diff
changeset | 37 'Hello fleem' | 
| 
7cee2869bd7b
stub out directory example
 Jeff Hammel <jhammel@mozilla.com> parents: 
36diff
changeset | 38 >>> os.remove(buffer) | 
| 
7cee2869bd7b
stub out directory example
 Jeff Hammel <jhammel@mozilla.com> parents: 
36diff
changeset | 39 | 
| 65 
0152741621c1
check in a failing test wrt location
 Jeff Hammel <jhammel@mozilla.com> parents: 
51diff
changeset | 40 Directory case:: | 
| 37 
7cee2869bd7b
stub out directory example
 Jeff Hammel <jhammel@mozilla.com> parents: 
36diff
changeset | 41 | 
| 
7cee2869bd7b
stub out directory example
 Jeff Hammel <jhammel@mozilla.com> parents: 
36diff
changeset | 42 >>> exampledir = os.path.join(here, 'directory-example') | 
| 
7cee2869bd7b
stub out directory example
 Jeff Hammel <jhammel@mozilla.com> parents: 
36diff
changeset | 43 >>> tempdir = tempfile.mkdtemp() | 
| 88 
712a6d358083
fixed output broke other things
 Jeff Hammel <jhammel@mozilla.com> parents: 
87diff
changeset | 44 >>> template = makeitso.PolyTemplate([exampledir], interactive=False) | 
| 37 
7cee2869bd7b
stub out directory example
 Jeff Hammel <jhammel@mozilla.com> parents: 
36diff
changeset | 45 >>> sorted(template.missing()) | 
| 
7cee2869bd7b
stub out directory example
 Jeff Hammel <jhammel@mozilla.com> parents: 
36diff
changeset | 46 ['bar', 'foo', 'subdir'] | 
| 90 
26b9c3bba04e
make the api for substitute() variables, output
 Jeff Hammel <jhammel@mozilla.com> parents: 
88diff
changeset | 47 >>> template.substitute(dict(foo='It', bar='life', subdir='mysubdir'), output=tempdir) | 
| 39 
a2cdce0108e1
get directory substitution sorta working; start stubbing mixed case
 Jeff Hammel <jhammel@mozilla.com> parents: 
38diff
changeset | 48 >>> sorted(os.listdir(tempdir)) | 
| 
a2cdce0108e1
get directory substitution sorta working; start stubbing mixed case
 Jeff Hammel <jhammel@mozilla.com> parents: 
38diff
changeset | 49 ['foo.txt', 'mysubdir'] | 
| 
a2cdce0108e1
get directory substitution sorta working; start stubbing mixed case
 Jeff Hammel <jhammel@mozilla.com> parents: 
38diff
changeset | 50 >>> file(os.path.join(tempdir, 'foo.txt')).read().strip() | 
| 
a2cdce0108e1
get directory substitution sorta working; start stubbing mixed case
 Jeff Hammel <jhammel@mozilla.com> parents: 
38diff
changeset | 51 'It is a wonderful life' | 
| 
a2cdce0108e1
get directory substitution sorta working; start stubbing mixed case
 Jeff Hammel <jhammel@mozilla.com> parents: 
38diff
changeset | 52 >>> os.listdir(os.path.join(tempdir, 'mysubdir')) | 
| 
a2cdce0108e1
get directory substitution sorta working; start stubbing mixed case
 Jeff Hammel <jhammel@mozilla.com> parents: 
38diff
changeset | 53 ['life.txt'] | 
| 
a2cdce0108e1
get directory substitution sorta working; start stubbing mixed case
 Jeff Hammel <jhammel@mozilla.com> parents: 
38diff
changeset | 54 >>> file(os.path.join(tempdir, 'mysubdir', 'life.txt')).read().strip() | 
| 
a2cdce0108e1
get directory substitution sorta working; start stubbing mixed case
 Jeff Hammel <jhammel@mozilla.com> parents: 
38diff
changeset | 55 'It' | 
| 
a2cdce0108e1
get directory substitution sorta working; start stubbing mixed case
 Jeff Hammel <jhammel@mozilla.com> parents: 
38diff
changeset | 56 >>> shutil.rmtree(tempdir) | 
| 
a2cdce0108e1
get directory substitution sorta working; start stubbing mixed case
 Jeff Hammel <jhammel@mozilla.com> parents: 
38diff
changeset | 57 | 
| 65 
0152741621c1
check in a failing test wrt location
 Jeff Hammel <jhammel@mozilla.com> parents: 
51diff
changeset | 58 Mixed case:: | 
| 39 
a2cdce0108e1
get directory substitution sorta working; start stubbing mixed case
 Jeff Hammel <jhammel@mozilla.com> parents: 
38diff
changeset | 59 | 
| 51 
9a0014a760d1
missed an interactive=False
 Jeff Hammel <jhammel@mozilla.com> parents: 
40diff
changeset | 60 >>> template = makeitso.PolyTemplate([example, exampledir], interactive=False) | 
| 40 
6b4c8f23192f
test and fix mixed output case
 Jeff Hammel <jhammel@mozilla.com> parents: 
39diff
changeset | 61 >>> variables = sorted(template.missing()) | 
| 
6b4c8f23192f
test and fix mixed output case
 Jeff Hammel <jhammel@mozilla.com> parents: 
39diff
changeset | 62 >>> variables | 
| 
6b4c8f23192f
test and fix mixed output case
 Jeff Hammel <jhammel@mozilla.com> parents: 
39diff
changeset | 63 ['bar', 'foo', 'name', 'subdir'] | 
| 39 
a2cdce0108e1
get directory substitution sorta working; start stubbing mixed case
 Jeff Hammel <jhammel@mozilla.com> parents: 
38diff
changeset | 64 | 
| 65 
0152741621c1
check in a failing test wrt location
 Jeff Hammel <jhammel@mozilla.com> parents: 
51diff
changeset | 65 You need to provide output for mixing files and directory templates:: | 
| 40 
6b4c8f23192f
test and fix mixed output case
 Jeff Hammel <jhammel@mozilla.com> parents: 
39diff
changeset | 66 | 
| 
6b4c8f23192f
test and fix mixed output case
 Jeff Hammel <jhammel@mozilla.com> parents: 
39diff
changeset | 67 >>> variables = dict([(i, i.title()) for i in variables]) | 
| 
6b4c8f23192f
test and fix mixed output case
 Jeff Hammel <jhammel@mozilla.com> parents: 
39diff
changeset | 68 >>> try: | 
| 90 
26b9c3bba04e
make the api for substitute() variables, output
 Jeff Hammel <jhammel@mozilla.com> parents: 
88diff
changeset | 69 ... template.substitute(variables) | 
| 40 
6b4c8f23192f
test and fix mixed output case
 Jeff Hammel <jhammel@mozilla.com> parents: 
39diff
changeset | 70 ... except AssertionError, e: | 
| 
6b4c8f23192f
test and fix mixed output case
 Jeff Hammel <jhammel@mozilla.com> parents: 
39diff
changeset | 71 ... pass | 
| 
6b4c8f23192f
test and fix mixed output case
 Jeff Hammel <jhammel@mozilla.com> parents: 
39diff
changeset | 72 >>> e | 
| 88 
712a6d358083
fixed output broke other things
 Jeff Hammel <jhammel@mozilla.com> parents: 
87diff
changeset | 73 AssertionError() | 
| 40 
6b4c8f23192f
test and fix mixed output case
 Jeff Hammel <jhammel@mozilla.com> parents: 
39diff
changeset | 74 | 
| 65 
0152741621c1
check in a failing test wrt location
 Jeff Hammel <jhammel@mozilla.com> parents: 
51diff
changeset | 75 Provide an output:: | 
| 40 
6b4c8f23192f
test and fix mixed output case
 Jeff Hammel <jhammel@mozilla.com> parents: 
39diff
changeset | 76 | 
| 88 
712a6d358083
fixed output broke other things
 Jeff Hammel <jhammel@mozilla.com> parents: 
87diff
changeset | 77 >>> template = makeitso.PolyTemplate([example, exampledir], interactive=False) | 
| 90 
26b9c3bba04e
make the api for substitute() variables, output
 Jeff Hammel <jhammel@mozilla.com> parents: 
88diff
changeset | 78 >>> template.substitute(variables, tempdir) | 
| 40 
6b4c8f23192f
test and fix mixed output case
 Jeff Hammel <jhammel@mozilla.com> parents: 
39diff
changeset | 79 >>> sorted(os.listdir(tempdir)) | 
| 
6b4c8f23192f
test and fix mixed output case
 Jeff Hammel <jhammel@mozilla.com> parents: 
39diff
changeset | 80 ['Subdir', 'example.txt', 'foo.txt'] | 
| 
6b4c8f23192f
test and fix mixed output case
 Jeff Hammel <jhammel@mozilla.com> parents: 
39diff
changeset | 81 >>> shutil.rmtree(tempdir) | 
| 65 
0152741621c1
check in a failing test wrt location
 Jeff Hammel <jhammel@mozilla.com> parents: 
51diff
changeset | 82 | 
| 
0152741621c1
check in a failing test wrt location
 Jeff Hammel <jhammel@mozilla.com> parents: 
51diff
changeset | 83 Test API templates:: | 
| 
0152741621c1
check in a failing test wrt location
 Jeff Hammel <jhammel@mozilla.com> parents: 
51diff
changeset | 84 | 
| 
0152741621c1
check in a failing test wrt location
 Jeff Hammel <jhammel@mozilla.com> parents: 
51diff
changeset | 85 >>> from makeitso.template import MakeItSoTemplate, Variable | 
| 
0152741621c1
check in a failing test wrt location
 Jeff Hammel <jhammel@mozilla.com> parents: 
51diff
changeset | 86 >>> class MyTemplate(MakeItSoTemplate): | 
| 
0152741621c1
check in a failing test wrt location
 Jeff Hammel <jhammel@mozilla.com> parents: 
51diff
changeset | 87 ... name = 'foo' | 
| 
0152741621c1
check in a failing test wrt location
 Jeff Hammel <jhammel@mozilla.com> parents: 
51diff
changeset | 88 ... templates = ['example.txt'] | 
| 
0152741621c1
check in a failing test wrt location
 Jeff Hammel <jhammel@mozilla.com> parents: 
51diff
changeset | 89 ... vars = [Variable(name='name', default='bar')] | 
| 67 
a0f7bfa98755
API templates now hobble along on their own two feet
 Jeff Hammel <jhammel@mozilla.com> parents: 
65diff
changeset | 90 >>> buffer = tempfile.mktemp() | 
| 88 
712a6d358083
fixed output broke other things
 Jeff Hammel <jhammel@mozilla.com> parents: 
87diff
changeset | 91 >>> apitemplate = MyTemplate(interactive=False) | 
| 90 
26b9c3bba04e
make the api for substitute() variables, output
 Jeff Hammel <jhammel@mozilla.com> parents: 
88diff
changeset | 92 >>> apitemplate.substitute({}, buffer) | 
| 67 
a0f7bfa98755
API templates now hobble along on their own two feet
 Jeff Hammel <jhammel@mozilla.com> parents: 
65diff
changeset | 93 >>> file(buffer).read().strip() | 
| 
a0f7bfa98755
API templates now hobble along on their own two feet
 Jeff Hammel <jhammel@mozilla.com> parents: 
65diff
changeset | 94 'Hello bar' | 
| 
a0f7bfa98755
API templates now hobble along on their own two feet
 Jeff Hammel <jhammel@mozilla.com> parents: 
65diff
changeset | 95 >>> os.remove(buffer) | 
| 87 
3571417ef92e
interpolate file permissions
 Jeff Hammel <jhammel@mozilla.com> parents: 
67diff
changeset | 96 | 
| 
3571417ef92e
interpolate file permissions
 Jeff Hammel <jhammel@mozilla.com> parents: 
67diff
changeset | 97 Test to make sure permissions are preserved. This won't work on windows:: | 
| 
3571417ef92e
interpolate file permissions
 Jeff Hammel <jhammel@mozilla.com> parents: 
67diff
changeset | 98 | 
| 
3571417ef92e
interpolate file permissions
 Jeff Hammel <jhammel@mozilla.com> parents: 
67diff
changeset | 99 >>> buffer = tempfile.mktemp() | 
| 
3571417ef92e
interpolate file permissions
 Jeff Hammel <jhammel@mozilla.com> parents: 
67diff
changeset | 100 >>> f = file(buffer, 'w') | 
| 
3571417ef92e
interpolate file permissions
 Jeff Hammel <jhammel@mozilla.com> parents: 
67diff
changeset | 101 >>> print >> f, '#!/bin/bash\necho foo' | 
| 
3571417ef92e
interpolate file permissions
 Jeff Hammel <jhammel@mozilla.com> parents: 
67diff
changeset | 102 >>> f.close() | 
| 
3571417ef92e
interpolate file permissions
 Jeff Hammel <jhammel@mozilla.com> parents: 
67diff
changeset | 103 >>> os.chmod(buffer, 0755) | 
| 88 
712a6d358083
fixed output broke other things
 Jeff Hammel <jhammel@mozilla.com> parents: 
87diff
changeset | 104 >>> uritemplate = makeitso.URITemplate(example, interactive=False) | 
| 90 
26b9c3bba04e
make the api for substitute() variables, output
 Jeff Hammel <jhammel@mozilla.com> parents: 
88diff
changeset | 105 >>> uritemplate.substitute(dict(name='bar'), buffer) | 
| 87 
3571417ef92e
interpolate file permissions
 Jeff Hammel <jhammel@mozilla.com> parents: 
67diff
changeset | 106 >>> ('%o' % os.stat(buffer).st_mode).endswith('755') | 
| 
3571417ef92e
interpolate file permissions
 Jeff Hammel <jhammel@mozilla.com> parents: 
67diff
changeset | 107 True | 
| 
3571417ef92e
interpolate file permissions
 Jeff Hammel <jhammel@mozilla.com> parents: 
67diff
changeset | 108 >>> os.remove(buffer) | 
