~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_script.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2010-09-10 06:09:30 UTC
  • mfrom: (5409.4.1 ui-factory)
  • Revision ID: pqm@pqm.ubuntu.com-20100910060930-0ukm0h7txwadstll
(mbp) split out ui-factory docs (Martin Pool)

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
 
18
18
from bzrlib import (
19
 
    commands,
20
19
    osutils,
21
20
    tests,
22
 
    ui,
23
21
    )
24
22
from bzrlib.tests import script
25
23
 
29
27
    def test_comment_is_ignored(self):
30
28
        self.assertEquals([], script._script_to_commands('#comment\n'))
31
29
 
32
 
    def test_comment_multiple_lines(self):
33
 
        self.assertEquals([
34
 
            (['bar'], None, None, None),
35
 
            ],
36
 
            script._script_to_commands("""
37
 
            # this comment is ignored
38
 
            # so is this
39
 
            # no we run bar
40
 
            $ bar
41
 
            """))
42
 
 
43
 
    def test_trim_blank_lines(self):
44
 
        """Blank lines are respected, but trimmed at the start and end.
45
 
 
46
 
        Python triple-quoted syntax is going to give stubby/empty blank lines 
47
 
        right at the start and the end.  These are cut off so that callers don't 
48
 
        need special syntax to avoid them.
49
 
 
50
 
        However we do want to be able to match commands that emit blank lines.
51
 
        """
52
 
        self.assertEquals([
53
 
            (['bar'], None, '\n', None),
54
 
            ],
55
 
            script._script_to_commands("""
56
 
            $bar
57
 
 
58
 
            """))
 
30
    def test_empty_line_is_ignored(self):
 
31
        self.assertEquals([], script._script_to_commands('\n'))
59
32
 
60
33
    def test_simple_command(self):
61
34
        self.assertEquals([(['cd', 'trunk'], None, None, None)],
404
377
        self.assertEquals(None, err)
405
378
        self.assertFileEqual('hello\nhappy\n', 'file')
406
379
 
407
 
    def test_empty_line_in_output_is_respected(self):
408
 
        self.run_script("""
409
 
            $ echo
410
 
 
411
 
            $ echo bar
412
 
            bar
413
 
            """)
414
 
 
415
380
 
416
381
class TestRm(script.TestCaseWithTransportAndScript):
417
382
 
494
459
        self.failIfExists('file')
495
460
        self.failUnlessExists('dir/file')
496
461
 
497
 
 
498
 
class cmd_test_confirm(commands.Command):
499
 
 
500
 
    def run(self):
501
 
        if ui.ui_factory.get_boolean(
502
 
            'Really do it',
503
 
            # 'bzrlib.tests.test_script.confirm',
504
 
            # {}
505
 
            ):
506
 
            self.outf.write('Do it!\n')
507
 
        else:
508
 
            print 'ok, no'
509
 
 
510
 
 
511
 
class TestUserInteraction(script.TestCaseWithMemoryTransportAndScript):
512
 
 
513
 
    def test_confirm_action(self):
514
 
        """You can write tests that demonstrate user confirmation.
515
 
        
516
 
        Specifically, ScriptRunner does't care if the output line for the prompt
517
 
        isn't terminated by a newline from the program; it's implicitly terminated 
518
 
        by the input.
519
 
        """
520
 
        commands.builtin_command_registry.register(cmd_test_confirm)
521
 
        self.addCleanup(commands.builtin_command_registry.remove, 'test-confirm')
522
 
        self.run_script("""
523
 
            $ bzr test-confirm
524
 
            2>Really do it? [y/n]: 
525
 
            <yes
526
 
            Do it!
527
 
            $ bzr test-confirm
528
 
            2>Really do it? [y/n]: 
529
 
            <no
530
 
            ok, no
531
 
            """)
532