2 from basetest
import BaseTest
, StringIO
6 sys
.path
.insert(0, '..')
8 from zeroinstall
import alias
10 expected_script
= """#!/bin/sh
11 exec 0launch 'http://example.com/foo.xml' "$@"
14 old_script
= """#!/bin/sh
15 if [ "$*" = "--versions" ]; then
16 exec 0launch -gd 'http://example.com/foo.xml' "$@"
18 exec 0launch 'http://example.com/foo.xml' "$@"
22 expected_script_main
= """#!/bin/sh
23 exec 0launch --main 'a'\\'''\\''\\test' 'http://example.com/foo.xml' "$@"
26 expected_script_command
= """#!/bin/sh
27 exec 0launch --command 'a'\\'''\\''\\test' 'http://example.com/foo.xml' "$@"
30 old_script_main
= """#!/bin/sh
31 if [ "$*" = "--versions" ]; then
32 exec 0launch -gd 'http://example.com/foo.xml' "$@"
34 exec 0launch --main 'a'\\'''\\''\\test' 'http://example.com/foo.xml' "$@"
38 class TestAlias(BaseTest
):
44 alias
.write_script(buf
, 'http://example.com/foo.xml', None)
45 self
.assertEqual(expected_script
, buf
.getvalue())
48 alias
.write_script(buf
, 'http://example.com/foo.xml', 'a\'\'\\test')
49 self
.assertEqual(expected_script_main
, buf
.getvalue())
52 alias
.write_script(buf
, 'http://example.com/foo.xml', command
= 'a\'\'\\test')
53 self
.assertEqual(expected_script_command
, buf
.getvalue())
56 tmp
= tempfile
.NamedTemporaryFile(mode
= 'wt')
57 tmp
.write(expected_script
)
60 uri
, main
= alias
.parse_script(tmp
.name
)
61 self
.assertEqual('http://example.com/foo.xml', uri
)
62 self
.assertEqual(None, main
)
64 tmp
= tempfile
.NamedTemporaryFile(mode
= 'wt')
65 tmp
.write(expected_script_main
)
68 uri
, main
= alias
.parse_script(tmp
.name
)
69 self
.assertEqual('http://example.com/foo.xml', uri
)
70 self
.assertEqual('a\'\'\\test', main
)
72 tmp
= tempfile
.NamedTemporaryFile(mode
= 'wt')
73 tmp
.write(expected_script_command
)
76 info
= alias
.parse_script(tmp
.name
)
77 self
.assertEqual('http://example.com/foo.xml', info
.uri
)
78 self
.assertEqual('a\'\'\\test', info
.command
)
79 self
.assertEqual(None, info
.main
)
81 def testParseOld(self
):
82 with tempfile
.NamedTemporaryFile(mode
= 'wt') as tmp
:
86 uri
, main
= alias
.parse_script(tmp
.name
)
87 self
.assertEqual('http://example.com/foo.xml', uri
)
88 self
.assertEqual(None, main
)
90 with tempfile
.NamedTemporaryFile(mode
= 'wt') as tmp
:
91 tmp
.write(old_script_main
)
94 uri
, main
= alias
.parse_script(tmp
.name
)
95 self
.assertEqual('http://example.com/foo.xml', uri
)
96 self
.assertEqual('a\'\'\\test', main
)
98 def testParseException(self
):
99 tmp
= tempfile
.NamedTemporaryFile(mode
= 'wt')
100 tmp
.write('hi' + expected_script
)
104 alias
.parse_script(tmp
.name
)
106 except alias
.NotAnAliasScript
:
109 tmp
= tempfile
.NamedTemporaryFile(mode
= 'wt')
110 tmp
.write(expected_script_command
.replace('command', 'bob'))
114 alias
.parse_script(tmp
.name
)
116 except alias
.NotAnAliasScript
as ex
:
117 assert 'bob' in str(ex
)
120 if __name__
== '__main__':