예제 #1
0
    def testAddArgument_PositionalArgs(self):

        def cmdProcess(args, sender):
            ok_(False)

        lap = LinotArgParser('testcmd', self.parser, cmdProcess, None)
        lap.add_argument('abc', action='store_true')
예제 #2
0
    def testCmdProcess_Unknown(self):
        mock = mock_engine()
        lap = LinotArgParser('testcmd', self.parser, mock.cmdProcess, None)
        lap.add_argument('-a', action='store_true')
        self.cmd_server = LineCmdServer(mock, self.parser)

        def cmdChecker(args, sender, done):
            ok_(sender)
            ok_(args.a)
            cmdChecker.testpass = True

        def msgChecker(recv, msg, done):
            ok_(recv == 'sender')
            ok_('Unknown' in msg)
            msgChecker.passtime += 1
            if msgChecker.passtime == 2:
                done()

        cmdChecker.testpass = False
        msgChecker.passtime = 0
        fake_cmd = [
            ['sender', None, fakeMessage('some_unknown_cmds')],
            [True, None, fakeMessage('testcmd -a')],
            ['sender', None, fakeMessage('some_unknown_cmds')],
        ]
        mock.addTest(fake_cmd, cmdChecker, msgChecker)
        self.cmd_server.start()
        mock.test_finished.wait(10)
        ok_(cmdChecker.testpass)
        self.cmd_server.stop()
        self.cmd_server.join(10)
        ok_(self.cmd_server.stopped())
        ok_(not self.cmd_server.isAlive())
예제 #3
0
 def testAddArgument_Exclusiveness(self):
     def cmdProcess(args, sender):
         assert_equal(args.a is True and args.b is True, False)
     lap = LinotArgParser('testcmd', self.parser, cmdProcess, None)
     lap.add_argument('-a', action='store_true')
     lap.add_argument('-b', action='store_true')
     with assert_raises(SystemExit) as e:
         args, unknown_args = self.parser.parse_known_args('testcmd -a -b'.split())
         check_str = 'not allowed with'
         ok_(check_str in e.msg)
예제 #4
0
    def testAddArgument_MultiArgs(self):
        def cmdProcess(args, sender):
            ok_(False)

        def custFunc(value, sender):
            ok_(value)
        lap = LinotArgParser('testcmd', self.parser, cmdProcess, None)
        lap.add_argument('-a', '-b', '-c', action='store_true', func=custFunc)
        args, unkown_args = self.parser.parse_known_args('testcmd -a'.split())
        args, unkown_args = self.parser.parse_known_args('testcmd -b'.split())
        args, unkown_args = self.parser.parse_known_args('testcmd -c'.split())
예제 #5
0
    def testAddArgument_Func(self):
        def cmdProcess(args, sender):
            if args.b:
                ok_(True)
            else:
                ok_(False)

        def custFunc(value, sender):
            ok_(value and sender)

        lap = LinotArgParser('testcmd', self.parser, cmdProcess, None)
        lap.add_argument('-a', action='store_true', func=custFunc)
        lap.add_argument('-b', action='store_true')  # default proc
        args, unknown_args = self.parser.parse_known_args('testcmd -a'.split())
        args.proc(args, True)
        args, unknown_args = self.parser.parse_known_args('testcmd -b'.split())
        args.proc(args, False)
예제 #6
0
    def testCmdProcess_Normal(self):
        mock = mock_engine()
        lap = LinotArgParser('testcmd', self.parser, mock.cmdProcess, None)
        lap.add_argument('-a', action='store_true')
        lap.add_argument('-b', action='store_true')
        self.cmd_server = LineCmdServer(mock, self.parser)

        # Test 1 cmd in op_list
        fake_cmd = [
            [True, None, fakeMessage('testcmd -a')]
        ]

        def cmdChecker_1(args, sender, done):
            ok_(args.a)
            ok_(sender)
            done()
        mock.addTest(fake_cmd, cmdChecker_1, None)

        # Test 2 cmds in op_list
        fake_cmd = [
            [True, None, fakeMessage('testcmd -a')],
            [True, None, fakeMessage('testcmd -b')],
        ]

        def cmdChecker_2(args, sender, done):
            ok_(args.a or args.b)
            if args.a:
                cmdChecker_2.var += 'a'
            if args.b:
                cmdChecker_2.var += 'b'
            if cmdChecker_2.var == 'ab':
                done()
            elif len(cmdChecker_2.var) >= 2:
                ok_(False)
        cmdChecker_2.var = ''
        mock.addTest(fake_cmd, cmdChecker_2, None)
        self.cmd_server.start()
        mock.test_finished.wait(10)
        self.cmd_server.stop()
        self.cmd_server.join(10)
        ok_(not self.cmd_server.isAlive())
예제 #7
0
    def testPrintHelp(self):
        def cmdProcess(args, sender):
            ok_(False)

        test_str = 'testtesttest'
        line = MockLine()
        lap = LinotArgParser('testcmd', self.parser, cmdProcess, line)
        lap.add_argument('-a', action='store_true', help=test_str)
        lap.add_argument('-noshow', action='store_true', help=argparse.SUPPRESS)
        lap.add_argument('-showme', action='store_true', help='')
        args, unknown_args = self.parser.parse_known_args('testcmd -h'.split())
        args.proc(args, 'test_sender')
        cap_text = line.msg
        ok_(test_str in cap_text, True)
        ok_('-nowshow' not in cap_text, True)
        ok_('-showme' in cap_text, True)
        ok_('test_sender' == line.recv)

        # Test help suppress if sender not found (for coverage)
        args, unknown_args = self.parser.parse_known_args('testcmd -h'.split())
        line.msg = None
        line.recv = None
        args.proc(args, None)
        ok_(line.msg is None)
        ok_(line.recv is None)
예제 #8
0
 def testAddArgument_DestException(self):
     def cmdProcess(args, sender):
         pass
     lap = LinotArgParser('testcmd', self.parser, cmdProcess, None)
     with assert_raises(ValueError):
         lap.add_argument('-a', dest='b', action='store_true')