1818#
1919
2020#
21- # Copyright (c) 2017, 2023 , Oracle and/or its affiliates. All rights reserved.
21+ # Copyright (c) 2017, 2024 , Oracle and/or its affiliates. All rights reserved.
2222#
2323
2424import logging
@@ -49,10 +49,13 @@ class Command:
4949 ERRORED = "errored"
5050 TIMEDOUT = "timed out"
5151
52+ MAX_LINE_LENGTH_DEFAULT = 250
53+ MAX_LINES_DEFAULT = 10000
54+
5255 def __init__ (self , cmd , args_subst = None , args_append = None , logger = None ,
5356 excl_subst = False , work_dir = None , env_vars = None , timeout = None ,
5457 redirect_stderr = True , resource_limits = None , doprint = False ,
55- max_line_length = 250 , max_lines = 10000 ):
58+ max_line_length = None , max_lines = None ):
5659
5760 if doprint is None :
5861 doprint = False
@@ -72,8 +75,17 @@ def __init__(self, cmd, args_subst=None, args_append=None, logger=None,
7275 self .doprint = doprint
7376 self .err = None
7477 self .returncode = None
75- self .max_line_length = int (max_line_length )
76- self .max_lines = int (max_lines )
78+
79+ # Convert the maximums to integers to avoid exceptions when using them as indexes
80+ # in case they are passed as floats.
81+ if (max_line_length is None ):
82+ self .max_line_length = self .MAX_LINE_LENGTH_DEFAULT
83+ else :
84+ self .max_line_length = int (max_line_length )
85+ if (max_lines is None ):
86+ self .max_lines = self .MAX_LINES_DEFAULT
87+ else :
88+ self .max_lines = int (max_lines )
7789
7890 self .logger = logger or logging .getLogger (__name__ )
7991
@@ -162,7 +174,10 @@ class OutputThread(threading.Thread):
162174 stdout/stderr buffers fill up.
163175 """
164176
165- def __init__ (self , event , logger , doprint = False , max_line_length = 250 , max_lines = 10000 ):
177+ def __init__ (self , event , logger , doprint = False ,
178+ max_line_length = Command .MAX_LINE_LENGTH_DEFAULT ,
179+ max_lines = Command .MAX_LINES_DEFAULT ):
180+
166181 super (OutputThread , self ).__init__ ()
167182 self .read_fd , self .write_fd = os .pipe ()
168183 self .pipe_fobj = os .fdopen (self .read_fd , encoding = 'utf8' )
@@ -195,11 +210,11 @@ def run(self):
195210 line = line .rstrip () # This will remove not only newline but also whitespace.
196211
197212 # Assuming that self.max_line_length is bigger than 3.
198- if len (line ) > self .max_line_length :
213+ if self . max_line_length > 0 and len (line ) > self .max_line_length :
199214 line = line [:self .max_line_length ] + "..."
200215
201216 # Shorten the list to be one less than the maximum because a line is going to be added.
202- if len (self .out ) >= self .max_lines :
217+ if self . max_lines > 0 and len (self .out ) >= self .max_lines :
203218 self .out = self .out [- self .max_lines + 1 :]
204219 self .out [0 ] = "... <truncated>"
205220
0 commit comments