def __call__(self,data=None, remove_tmp=True):
        """Run the application with the specified kwargs on data

            data: anything that can be cast into a string or written out to
                a file. Usually either a list of things or a single string or
                number. input_handler will be called on this data before it
                is passed as part of the command-line argument, so by creating
                your own input handlers you can customize what kind of data
                you want your application to accept

            remove_tmp: if True, removes tmp files

            NOTE: Override of the base class to handle redirected output
        """
        input_handler = self.InputHandler
        suppress_stderr = self.SuppressStderr

        outfile = self.getTmpFilename(self.TmpDir)
        self._outfile = outfile

        if suppress_stderr:
            errfile = FilePath('/dev/null')
        else:
            errfile = FilePath(self.getTmpFilename(self.TmpDir))
        if data is None:
            input_arg = ''
        else:
            input_arg = getattr(self,input_handler)(data)

        # Build up the command, consisting of a BaseCommand followed by
        # input and output (file) specifications
        command = self._command_delimiter.join(filter(None,\
            [self.BaseCommand,str(input_arg),'>',str(outfile),'2>',\
                str(errfile)]))
        if self.HaltExec:
            raise AssertionError, "Halted exec with command:\n" + command
        # The return value of system is a 16-bit number containing the signal
        # number that killed the process, and then the exit status.
        # We only want to keep the exit status so do a right bitwise shift to
        # get rid of the signal number byte
        exit_status = system(command) >> 8

        # Determine if error should be raised due to exit status of
        # appliciation
        if not self._accept_exit_status(exit_status):
            raise ApplicationError, \
             'Unacceptable application exit status: %s, command: %s'\
                % (str(exit_status),command)

        out = open(outfile,"r")

        err = None
        if not suppress_stderr:
            err = open(errfile,"r")

        result =  CommandLineAppResult(out,err,exit_status,\
            result_paths=self._get_result_paths(data))

        # Clean up the input file if one was created
        if remove_tmp:
            if self._input_filename:
                remove(self._input_filename)
                self._input_filename = None

        return result
def __call__ ( self , data = None , remove_tmp = True ) : input_handler = self . InputHandler suppress_stderr = self . SuppressStderr outfile = self . getTmpFilename ( self . TmpDir ) self . _outfile = outfile if suppress_stderr : errfile = FilePath ( '/dev/null' ) else : errfile = FilePath ( self . getTmpFilename ( self . TmpDir ) ) if data is None : input_arg = '' else : input_arg = getattr ( self , input_handler ) ( data ) command = self . _command_delimiter . join ( filter ( None , [ self . BaseCommand , str ( input_arg ) , '>' , str ( outfile ) , '2>' , str ( errfile ) ] ) ) if self . HaltExec : raise AssertionError , "Halted exec with command:\n" + command exit_status = system ( command ) >> 8 if not self . _accept_exit_status ( exit_status ) : raise ApplicationError , 'Unacceptable application exit status: %s, command: %s' % ( str ( exit_status ) , command ) out = open ( outfile , "r" ) err = None if not suppress_stderr : err = open ( errfile , "r" ) result = CommandLineAppResult ( out , err , exit_status , result_paths = self . _get_result_paths ( data ) ) if remove_tmp : if self . _input_filename : remove ( self . _input_filename ) self . _input_filename = None return result
Run the application with the specified kwargs on data

            data: anything that can be cast into a string or written out to
                a file. Usually either a list of things or a single string or
                number. input_handler will be called on this data before it
                is passed as part of the command-line argument, so by creating
                your own input handlers you can customize what kind of data
                you want your application to accept

            remove_tmp: if True, removes tmp files

            NOTE: Override of the base class to handle redirected output