This is an automated email from the ASF dual-hosted git repository.

maxyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudberry-go-libs.git

commit 219df422cca51601bbdb74bb51846e755b06b1c1
Author: Karen Huddleston <[email protected]>
AuthorDate: Thu May 16 18:42:36 2024 -0700

    Add Custom command for more logging control
    
    The Progress command was just for doing info level to the logfile and 
verbose
    level to stdout for table progress in gpbackup and gprestore. However, I 
found
    at least one more place where using different settings for terminal and 
logfile
    would be useful. We CheckClusterError in the cluster package for some 
commands
    and assume we will log details to the file, but not to stdout.
    
    Since this is a more general use case, we can make a more general command 
that
    lets the caller pass in values for file threshold and shell threshold
    separately to accommodate more use cases.
    
    Keep Progress command as a wrapper around the Custom command since it is a
    specific instance of the Custom usage
---
 gplog/gplog.go      |  63 +++++---
 gplog/gplog_test.go | 403 ++++++++++++++++++++++++++++++++++++++++------------
 2 files changed, 357 insertions(+), 109 deletions(-)

diff --git a/gplog/gplog.go b/gplog/gplog.go
index 456a1b8..2e84fbe 100644
--- a/gplog/gplog.go
+++ b/gplog/gplog.go
@@ -294,6 +294,20 @@ func SetErrorCode(code int) {
        errorCode = code
 }
 
+func getVerbosityString(verbosity int) string {
+       switch verbosity {
+       case LOGERROR:
+               return "ERROR"
+       case LOGINFO:
+               return "INFO"
+       case LOGVERBOSE:
+               return "DEBUG"
+       case LOGDEBUG:
+               return "DEBUG"
+       }
+       return ""
+}
+
 /*
  * Log output functions, as described above
  */
@@ -333,25 +347,6 @@ func Warn(s string, v ...interface{}) {
        _ = logger.logStdout.Output(1, Colorize(YELLOW, message))
 }
 
-/*
- * Progress is for messages that show progress as an alternative to a progress 
bar.
- * We write them to the log file if fileVerbosity is >= LOGINFO, and we write 
them to stdout if shellVerbosity >= LOGVERBOSE
- */
-
-func Progress(s string, v ...interface{}) {
-       logMutex.Lock()
-       defer logMutex.Unlock()
-       var message string
-       if logger.fileVerbosity >= LOGINFO {
-               message = GetLogPrefix("INFO") + fmt.Sprintf(s, v...)
-               _ = logger.logFile.Output(1, message)
-       }
-       if logger.shellVerbosity >= LOGVERBOSE {
-               message = GetShellLogPrefix("DEBUG") + fmt.Sprintf(s, v...)
-               _ = logger.logStdout.Output(1, message)
-       }
-}
-
 func Verbose(s string, v ...interface{}) {
        logMutex.Lock()
        defer logMutex.Unlock()
@@ -414,6 +409,36 @@ func Fatal(err error, s string, v ...interface{}) {
        }
 }
 
+/*
+ * The Custom log function allows a caller to set different verbosity 
thresholds for logging to the shell or logfile
+ */
+
+func Custom(customFileVerbosity int, customShellVerbosity int, s string, v 
...interface{}) {
+       logMutex.Lock()
+       defer logMutex.Unlock()
+       var message string
+       if logger.fileVerbosity >= customFileVerbosity {
+               message = GetLogPrefix(getVerbosityString(customFileVerbosity)) 
+ fmt.Sprintf(s, v...)
+               _ = logger.logFile.Output(1, message)
+       }
+       if customShellVerbosity == LOGERROR {
+               message = GetShellLogPrefix("ERROR") + fmt.Sprintf(s, v...)
+               _ = logger.logStderr.Output(1, Colorize(RED, message))
+       } else if logger.shellVerbosity >= customShellVerbosity {
+               message = 
GetShellLogPrefix(getVerbosityString(customShellVerbosity)) + fmt.Sprintf(s, 
v...)
+               _ = logger.logStdout.Output(1, message)
+       }
+}
+
+/*
+ * Progress is a wrapper around the Custom logging function for messages that 
show progress as an alternative to a progress bar.
+ * We write them to the log file if fileVerbosity is >= LOGINFO, and we write 
them to stdout if shellVerbosity >= LOGVERBOSE
+ */
+
+func Progress(s string, v ...interface{}) {
+       Custom(LOGINFO, LOGVERBOSE, s, v...)
+}
+
 func FatalOnError(err error, output ...string) {
        if err != nil {
                if len(output) == 0 {
diff --git a/gplog/gplog_test.go b/gplog/gplog_test.go
index d736a07..b3869e8 100644
--- a/gplog/gplog_test.go
+++ b/gplog/gplog_test.go
@@ -245,15 +245,6 @@ var _ = Describe("logger/log tests", func() {
                                        testhelper.ExpectRegexp(logfile, 
warnExpected+expectedMessage)
                                })
                        })
-                       Context("Progress", func() {
-                               It("prints to the log file", func() {
-                                       expectedMessage := "error progress"
-                                       gplog.Progress(expectedMessage)
-                                       testhelper.NotExpectRegexp(stdout, 
verboseExpected+expectedMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
-                                       testhelper.ExpectRegexp(logfile, 
infoExpected+expectedMessage)
-                               })
-                       })
                        Context("Verbose", func() {
                                It("prints to the log file", func() {
                                        expectedMessage := "error verbose"
@@ -293,6 +284,42 @@ var _ = Describe("logger/log tests", func() {
                                        
gplog.Fatal(errors.New(expectedMessage), "")
                                })
                        })
+                       Context("Custom with shell as error and file as 
verbose", func() {
+                               It("prints to stderr and the log file", func() {
+                                       expectedMessage := "error custom"
+                                       gplog.Custom(gplog.LOGVERBOSE, 
gplog.LOGERROR, expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
errorExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(stderr, 
errorExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
verboseExpected+expectedMessage)
+                               })
+                       })
+                       Context("Custom with shell as verbose and file as 
verbose", func() {
+                               It("prints to the log file", func() {
+                                       expectedMessage := "error custom"
+                                       gplog.Custom(gplog.LOGVERBOSE, 
gplog.LOGVERBOSE, expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
verboseExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
verboseExpected+expectedMessage)
+                               })
+                       })
+                       Context("Custom with shell as info and file as error", 
func() {
+                               It("prints to the log file", func() {
+                                       expectedMessage := "error custom"
+                                       gplog.Custom(gplog.LOGERROR, 
gplog.LOGINFO, expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
infoExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
infoExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
errorExpected+expectedMessage)
+                               })
+                       })
+                       Context("Progress", func() {
+                               It("prints to the log file", func() {
+                                       expectedMessage := "error progress"
+                                       gplog.Progress(expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
verboseExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
infoExpected+expectedMessage)
+                               })
+                       })
                })
                Describe("Shell verbosity set to Info", func() {
                        BeforeEach(func() {
@@ -327,15 +354,6 @@ var _ = Describe("logger/log tests", func() {
                                        testhelper.ExpectRegexp(logfile, 
warnExpected+expectedMessage)
                                })
                        })
-                       Context("Progress", func() {
-                               It("prints to the log file", func() {
-                                       expectedMessage := "info progress"
-                                       gplog.Progress(expectedMessage)
-                                       testhelper.NotExpectRegexp(stdout, 
verboseExpected+expectedMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
-                                       testhelper.ExpectRegexp(logfile, 
infoExpected+expectedMessage)
-                               })
-                       })
                        Context("Verbose", func() {
                                It("prints to the log file", func() {
                                        expectedMessage := "info verbose"
@@ -375,6 +393,42 @@ var _ = Describe("logger/log tests", func() {
                                        
gplog.Fatal(errors.New(expectedMessage), "")
                                })
                        })
+                       Context("Custom with shell as error and file as 
verbose", func() {
+                               It("prints to stderr and the log file", func() {
+                                       expectedMessage := "info custom"
+                                       gplog.Custom(gplog.LOGVERBOSE, 
gplog.LOGERROR, expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
errorExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(stderr, 
errorExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
verboseExpected+expectedMessage)
+                               })
+                       })
+                       Context("Custom with shell as verbose and file as 
verbose", func() {
+                               It("prints to the log file", func() {
+                                       expectedMessage := "info custom"
+                                       gplog.Custom(gplog.LOGVERBOSE, 
gplog.LOGVERBOSE, expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
verboseExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
verboseExpected+expectedMessage)
+                               })
+                       })
+                       Context("Custom with shell as info and file as error", 
func() {
+                               It("prints to stdout and the log file", func() {
+                                       expectedMessage := "info custom"
+                                       gplog.Custom(gplog.LOGERROR, 
gplog.LOGINFO, expectedMessage)
+                                       testhelper.ExpectRegexp(stdout, 
infoExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
infoExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
errorExpected+expectedMessage)
+                               })
+                       })
+                       Context("Progress", func() {
+                               It("prints to the log file", func() {
+                                       expectedMessage := "info progress"
+                                       gplog.Progress(expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
verboseExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
infoExpected+expectedMessage)
+                               })
+                       })
                })
                Describe("Shell verbosity set to Verbose", func() {
                        BeforeEach(func() {
@@ -409,15 +463,6 @@ var _ = Describe("logger/log tests", func() {
                                        testhelper.ExpectRegexp(logfile, 
warnExpected+expectedMessage)
                                })
                        })
-                       Context("Progress", func() {
-                               It("prints to stdout and the log file", func() {
-                                       expectedMessage := "verbose progress"
-                                       gplog.Progress(expectedMessage)
-                                       testhelper.ExpectRegexp(stdout, 
verboseExpected+expectedMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
-                                       testhelper.ExpectRegexp(logfile, 
infoExpected+expectedMessage)
-                               })
-                       })
                        Context("Verbose", func() {
                                It("prints to stdout and the log file", func() {
                                        expectedMessage := "verbose verbose"
@@ -458,6 +503,42 @@ var _ = Describe("logger/log tests", func() {
                                        
gplog.Fatal(errors.New(expectedMessage), "")
                                })
                        })
+                       Context("Custom with shell as error and file as 
verbose", func() {
+                               It("prints to stderr and the log file", func() {
+                                       expectedMessage := "verbose custom"
+                                       gplog.Custom(gplog.LOGVERBOSE, 
gplog.LOGERROR, expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
errorExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(stderr, 
errorExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
verboseExpected+expectedMessage)
+                               })
+                       })
+                       Context("Custom with shell as verbose and file as 
verbose", func() {
+                               It("prints to stdout and the log file", func() {
+                                       expectedMessage := "verbose custom"
+                                       gplog.Custom(gplog.LOGVERBOSE, 
gplog.LOGVERBOSE, expectedMessage)
+                                       testhelper.ExpectRegexp(stdout, 
verboseExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
verboseExpected+expectedMessage)
+                               })
+                       })
+                       Context("Custom with shell as info and file as error", 
func() {
+                               It("prints to stdout and the log file", func() {
+                                       expectedMessage := "verbose custom"
+                                       gplog.Custom(gplog.LOGERROR, 
gplog.LOGINFO, expectedMessage)
+                                       testhelper.ExpectRegexp(stdout, 
infoExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
infoExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
errorExpected+expectedMessage)
+                               })
+                       })
+                       Context("Progress", func() {
+                               It("prints to stdout and the log file", func() {
+                                       expectedMessage := "verbose progress"
+                                       gplog.Progress(expectedMessage)
+                                       testhelper.ExpectRegexp(stdout, 
verboseExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
infoExpected+expectedMessage)
+                               })
+                       })
                })
                Describe("Shell verbosity set to Debug", func() {
                        BeforeEach(func() {
@@ -492,15 +573,6 @@ var _ = Describe("logger/log tests", func() {
                                        testhelper.ExpectRegexp(logfile, 
warnExpected+expectedMessage)
                                })
                        })
-                       Context("Progress", func() {
-                               It("prints to stdout and the log file", func() {
-                                       expectedMessage := "debug progress"
-                                       gplog.Progress(expectedMessage)
-                                       testhelper.ExpectRegexp(stdout, 
verboseExpected+expectedMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
-                                       testhelper.ExpectRegexp(logfile, 
infoExpected+expectedMessage)
-                               })
-                       })
                        Context("Verbose", func() {
                                It("prints to stdout and the log file", func() {
                                        expectedMessage := "debug verbose"
@@ -540,6 +612,42 @@ var _ = Describe("logger/log tests", func() {
                                        
gplog.Fatal(errors.New(expectedMessage), "")
                                })
                        })
+                       Context("Custom with shell as error and file as 
verbose", func() {
+                               It("prints to stderr and the log file", func() {
+                                       expectedMessage := "debug custom"
+                                       gplog.Custom(gplog.LOGVERBOSE, 
gplog.LOGERROR, expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
errorExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(stderr, 
errorExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
verboseExpected+expectedMessage)
+                               })
+                       })
+                       Context("Custom with shell as verbose and file as 
verbose", func() {
+                               It("prints to stdout and the log file", func() {
+                                       expectedMessage := "debug custom"
+                                       gplog.Custom(gplog.LOGVERBOSE, 
gplog.LOGVERBOSE, expectedMessage)
+                                       testhelper.ExpectRegexp(stdout, 
verboseExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
verboseExpected+expectedMessage)
+                               })
+                       })
+                       Context("Custom with shell as info and file as error", 
func() {
+                               It("prints to stdout and the log file", func() {
+                                       expectedMessage := "debug custom"
+                                       gplog.Custom(gplog.LOGERROR, 
gplog.LOGINFO, expectedMessage)
+                                       testhelper.ExpectRegexp(stdout, 
infoExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
infoExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
errorExpected+expectedMessage)
+                               })
+                       })
+                       Context("Progress", func() {
+                               It("prints to stdout and the log file", func() {
+                                       expectedMessage := "debug progress"
+                                       gplog.Progress(expectedMessage)
+                                       testhelper.ExpectRegexp(stdout, 
verboseExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
infoExpected+expectedMessage)
+                               })
+                       })
                })
                Describe("Shell verbosity set to Info, logfile verbosity set to 
Error", func() {
                        BeforeEach(func() {
@@ -577,15 +685,6 @@ var _ = Describe("logger/log tests", func() {
                                        testhelper.ExpectRegexp(logfile, 
warnExpected+expectedMessage)
                                })
                        })
-                       Context("Progress", func() {
-                               It("does not print", func() {
-                                       expectedMessage := "logfile error 
progress"
-                                       gplog.Progress(expectedMessage)
-                                       testhelper.NotExpectRegexp(stdout, 
verboseExpected+expectedMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
-                                       testhelper.NotExpectRegexp(logfile, 
infoExpected+expectedMessage)
-                               })
-                       })
                        Context("Verbose", func() {
                                It("does not print", func() {
                                        expectedMessage := "logfile error 
verbose"
@@ -635,6 +734,42 @@ var _ = Describe("logger/log tests", func() {
                                        testhelper.ExpectRegexp(logfile, 
fatalExpected+expectedMessage)
                                })
                        })
+                       Context("Custom with shell as error and file as 
verbose", func() {
+                               It("prints to stderr", func() {
+                                       expectedMessage := "logfile error 
custom"
+                                       gplog.Custom(gplog.LOGVERBOSE, 
gplog.LOGERROR, expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
errorExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(stderr, 
errorExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(logfile, 
verboseExpected+expectedMessage)
+                               })
+                       })
+                       Context("Custom with shell as verbose and file as 
verbose", func() {
+                               It("does not print", func() {
+                                       expectedMessage := "logfile error 
custom"
+                                       gplog.Custom(gplog.LOGVERBOSE, 
gplog.LOGVERBOSE, expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
verboseExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(logfile, 
verboseExpected+expectedMessage)
+                               })
+                       })
+                       Context("Custom with shell as info and file as error", 
func() {
+                               It("prints to stdout and the log file", func() {
+                                       expectedMessage := "info custom"
+                                       gplog.Custom(gplog.LOGERROR, 
gplog.LOGINFO, expectedMessage)
+                                       testhelper.ExpectRegexp(stdout, 
infoExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
infoExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
errorExpected+expectedMessage)
+                               })
+                       })
+                       Context("Progress", func() {
+                               It("does not print", func() {
+                                       expectedMessage := "logfile error 
progress"
+                                       gplog.Progress(expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
verboseExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(logfile, 
infoExpected+expectedMessage)
+                               })
+                       })
                })
                Describe("Shell verbosity set to Info, logfile verbosity set to 
Info", func() {
                        BeforeEach(func() {
@@ -672,15 +807,6 @@ var _ = Describe("logger/log tests", func() {
                                        testhelper.ExpectRegexp(logfile, 
warnExpected+expectedMessage)
                                })
                        })
-                       Context("Progress", func() {
-                               It("prints to the log file", func() {
-                                       expectedMessage := "logfile info 
progress"
-                                       gplog.Progress(expectedMessage)
-                                       testhelper.NotExpectRegexp(stdout, 
verboseExpected+expectedMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
-                                       testhelper.ExpectRegexp(logfile, 
infoExpected+expectedMessage)
-                               })
-                       })
                        Context("Verbose", func() {
                                It("does not print", func() {
                                        expectedMessage := "logfile info 
verbose"
@@ -730,6 +856,42 @@ var _ = Describe("logger/log tests", func() {
                                        testhelper.ExpectRegexp(logfile, 
fatalExpected+expectedMessage)
                                })
                        })
+                       Context("Custom with shell as error and file as 
verbose", func() {
+                               It("prints to stderr", func() {
+                                       expectedMessage := "logfile info custom"
+                                       gplog.Custom(gplog.LOGVERBOSE, 
gplog.LOGERROR, expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
errorExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(stderr, 
errorExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(logfile, 
verboseExpected+expectedMessage)
+                               })
+                       })
+                       Context("Custom with shell as verbose and file as 
verbose", func() {
+                               It("does not print", func() {
+                                       expectedMessage := "logfile info custom"
+                                       gplog.Custom(gplog.LOGVERBOSE, 
gplog.LOGVERBOSE, expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
verboseExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(logfile, 
verboseExpected+expectedMessage)
+                               })
+                       })
+                       Context("Custom with shell as info and file as error", 
func() {
+                               It("prints to stdout and the log file", func() {
+                                       expectedMessage := "info custom"
+                                       gplog.Custom(gplog.LOGERROR, 
gplog.LOGINFO, expectedMessage)
+                                       testhelper.ExpectRegexp(stdout, 
infoExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
infoExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
errorExpected+expectedMessage)
+                               })
+                       })
+                       Context("Progress", func() {
+                               It("prints to the log file", func() {
+                                       expectedMessage := "logfile info 
progress"
+                                       gplog.Progress(expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
verboseExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
infoExpected+expectedMessage)
+                               })
+                       })
                })
                Describe("Custom Shell Prefix used - shell verbosity set to 
Debug", func() {
                        BeforeEach(func() {
@@ -751,8 +913,8 @@ var _ = Describe("logger/log tests", func() {
                                        expectedMessage := "debug info"
                                        gplog.Info(expectedMessage)
                                        testhelper.ExpectRegexp(stdout, 
expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
infoExpected+expectedMessage)
                                        testhelper.NotExpectRegexp(stderr, 
expectedMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
infoExpected+expectedMessage)
                                        testhelper.ExpectRegexp(logfile, 
infoExpected+expectedMessage)
                                })
                        })
@@ -761,8 +923,8 @@ var _ = Describe("logger/log tests", func() {
                                        expectedMessage := "debug info"
                                        gplog.Success(expectedMessage)
                                        testhelper.ExpectRegexp(stdout, 
expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
infoExpected+expectedMessage)
                                        testhelper.NotExpectRegexp(stderr, 
expectedMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
infoExpected+expectedMessage)
                                        testhelper.ExpectRegexp(logfile, 
infoExpected+expectedMessage)
                                })
                        })
@@ -771,28 +933,18 @@ var _ = Describe("logger/log tests", func() {
                                        expectedMessage := "debug warn"
                                        gplog.Warn(expectedMessage)
                                        testhelper.ExpectRegexp(stdout, 
"WARNING: "+expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
warnExpected+expectedMessage)
                                        testhelper.NotExpectRegexp(stderr, 
"WARNING: "+expectedMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
warnExpected+expectedMessage)
                                        testhelper.ExpectRegexp(logfile, 
warnExpected+expectedMessage)
                                })
                        })
-                       Context("Progress", func() {
-                               It("prints to stdout and the log file", func() {
-                                       expectedMessage := "debug progress"
-                                       gplog.Progress(expectedMessage)
-                                       testhelper.ExpectRegexp(stdout, 
expectedMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
expectedMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
-                                       testhelper.ExpectRegexp(logfile, 
infoExpected+expectedMessage)
-                               })
-                       })
                        Context("Verbose", func() {
                                It("prints to stdout and the log file", func() {
                                        expectedMessage := "debug verbose"
                                        gplog.Verbose(expectedMessage)
                                        testhelper.ExpectRegexp(stdout, 
expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
verboseExpected+expectedMessage)
                                        testhelper.NotExpectRegexp(stderr, 
expectedMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
                                        testhelper.ExpectRegexp(logfile, 
verboseExpected+expectedMessage)
                                })
                        })
@@ -801,8 +953,8 @@ var _ = Describe("logger/log tests", func() {
                                        expectedMessage := "debug debug"
                                        gplog.Debug(expectedMessage)
                                        testhelper.ExpectRegexp(stdout, 
expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
debugExpected+expectedMessage)
                                        testhelper.NotExpectRegexp(stderr, 
expectedMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
debugExpected+expectedMessage)
                                        testhelper.ExpectRegexp(logfile, 
debugExpected+expectedMessage)
                                })
                        })
@@ -810,9 +962,9 @@ var _ = Describe("logger/log tests", func() {
                                It("prints to stderr and the log file", func() {
                                        expectedMessage := "debug error"
                                        gplog.Error(expectedMessage)
-                                       testhelper.NotExpectRegexp(stdout, 
"ERROR: "+expectedMessage)
-                                       testhelper.NotExpectRegexp(stdout, 
errorExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
expectedMessage)
                                        testhelper.ExpectRegexp(stderr, "ERROR: 
"+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
errorExpected+expectedMessage)
                                        testhelper.ExpectRegexp(logfile, 
errorExpected+expectedMessage)
                                })
                        })
@@ -830,6 +982,46 @@ var _ = Describe("logger/log tests", func() {
                                        
gplog.Fatal(errors.New(expectedMessage), "")
                                })
                        })
+                       Context("Custom with shell as error and file as 
verbose", func() {
+                               It("prints to stderr and the log file", func() {
+                                       expectedMessage := "debug custom"
+                                       gplog.Custom(gplog.LOGVERBOSE, 
gplog.LOGERROR, expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
expectedMessage)
+                                       testhelper.ExpectRegexp(stderr, "ERROR: 
"+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
errorExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
verboseExpected+expectedMessage)
+                               })
+                       })
+                       Context("Custom with shell as verbose and file as 
verbose", func() {
+                               It("prints to stdout and the log file", func() {
+                                       expectedMessage := "debug custom"
+                                       gplog.Custom(gplog.LOGVERBOSE, 
gplog.LOGVERBOSE, expectedMessage)
+                                       testhelper.ExpectRegexp(stdout, 
expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
verboseExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
verboseExpected+expectedMessage)
+                               })
+                       })
+                       Context("Custom with shell as info and file as error", 
func() {
+                               It("prints to stdout and the log file", func() {
+                                       expectedMessage := "debug custom"
+                                       gplog.Custom(gplog.LOGERROR, 
gplog.LOGINFO, expectedMessage)
+                                       testhelper.ExpectRegexp(stdout, 
expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
infoExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
errorExpected+expectedMessage)
+                               })
+                       })
+                       Context("Progress", func() {
+                               It("prints to stdout and the log file", func() {
+                                       expectedMessage := "debug progress"
+                                       gplog.Progress(expectedMessage)
+                                       testhelper.ExpectRegexp(stdout, 
expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
verboseExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
infoExpected+expectedMessage)
+                               })
+                       })
                })
                Describe("Custom Shell Prefix used with colorization  - shell 
verbosity set to Debug", func() {
                        BeforeEach(func() {
@@ -853,8 +1045,8 @@ var _ = Describe("logger/log tests", func() {
                                        expectedMessage := "debug info"
                                        gplog.Info(expectedMessage)
                                        testhelper.ExpectRegexp(stdout, 
expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
infoExpected+expectedMessage)
                                        testhelper.NotExpectRegexp(stderr, 
expectedMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
infoExpected+expectedMessage)
                                        testhelper.ExpectRegexp(logfile, 
infoExpected+expectedMessage)
                                })
                        })
@@ -864,8 +1056,8 @@ var _ = Describe("logger/log tests", func() {
                                        expectedConsoleMessage := 
fmt.Sprintf("%[1]s[32mdebug success%[1]s[0m", "\x1b")
                                        gplog.Success(expectedMessage)
                                        testhelper.ExpectRegexp(stdout, 
expectedConsoleMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
"INFO: "+expectedMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
infoExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
infoExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
expectedMessage)
                                        testhelper.ExpectRegexp(logfile, 
infoExpected+expectedMessage)
                                })
                        })
@@ -875,19 +1067,9 @@ var _ = Describe("logger/log tests", func() {
                                        expectedConsoleMessage := 
fmt.Sprintf("%[1]s[33mWARNING: debug warn%[1]s[0m", "\x1b")
                                        gplog.Warn(expectedMessage)
                                        testhelper.ExpectRegexp(stdout, 
expectedConsoleMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
"WARNING: "+expectedMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
warnExpected+expectedMessage)
-                                       testhelper.ExpectRegexp(logfile, 
warnExpected+expectedMessage)
-                               })
-                       })
-                       Context("Progress", func() {
-                               It("prints to stdout and the log file", func() {
-                                       expectedMessage := "debug progress"
-                                       gplog.Progress(expectedMessage)
-                                       testhelper.ExpectRegexp(stdout, 
expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
warnExpected+expectedMessage)
                                        testhelper.NotExpectRegexp(stderr, 
expectedMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
-                                       testhelper.ExpectRegexp(logfile, 
infoExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
warnExpected+expectedMessage)
                                })
                        })
                        Context("Verbose", func() {
@@ -895,8 +1077,8 @@ var _ = Describe("logger/log tests", func() {
                                        expectedMessage := "debug verbose"
                                        gplog.Verbose(expectedMessage)
                                        testhelper.ExpectRegexp(stdout, 
expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
verboseExpected+expectedMessage)
                                        testhelper.NotExpectRegexp(stderr, 
expectedMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
verboseExpected+expectedMessage)
                                        testhelper.ExpectRegexp(logfile, 
verboseExpected+expectedMessage)
                                })
                        })
@@ -905,8 +1087,8 @@ var _ = Describe("logger/log tests", func() {
                                        expectedMessage := "debug debug"
                                        gplog.Debug(expectedMessage)
                                        testhelper.ExpectRegexp(stdout, 
expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
debugExpected+expectedMessage)
                                        testhelper.NotExpectRegexp(stderr, 
expectedMessage)
-                                       testhelper.NotExpectRegexp(stderr, 
debugExpected+expectedMessage)
                                        testhelper.ExpectRegexp(logfile, 
debugExpected+expectedMessage)
                                })
                        })
@@ -915,9 +1097,9 @@ var _ = Describe("logger/log tests", func() {
                                        expectedMessage := "debug error"
                                        expectedConsoleMessage := 
fmt.Sprintf("%[1]s[31mERROR: debug error%[1]s[0m", "\x1b")
                                        gplog.Error(expectedMessage)
-                                       testhelper.NotExpectRegexp(stdout, 
"ERROR: "+expectedMessage)
-                                       testhelper.NotExpectRegexp(stdout, 
errorExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
expectedMessage)
                                        testhelper.ExpectRegexp(stderr, 
expectedConsoleMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
errorExpected+expectedMessage)
                                        testhelper.ExpectRegexp(logfile, 
errorExpected+expectedMessage)
                                })
                        })
@@ -935,6 +1117,47 @@ var _ = Describe("logger/log tests", func() {
                                        
gplog.Fatal(errors.New(expectedMessage), "")
                                })
                        })
+                       Context("Custom with shell as error and file as 
verbose", func() {
+                               It("prints to stderr and the log file", func() {
+                                       expectedMessage := "debug custom"
+                                       expectedConsoleMessage := 
fmt.Sprintf("%[1]s[31mERROR: debug custom%[1]s[0m", "\x1b")
+                                       gplog.Custom(gplog.LOGVERBOSE, 
gplog.LOGERROR, expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
expectedMessage)
+                                       testhelper.ExpectRegexp(stderr, 
expectedConsoleMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
errorExpected+expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
verboseExpected+expectedMessage)
+                               })
+                       })
+                       Context("Custom with shell as verbose and file as 
verbose", func() {
+                               It("prints to stdout and the log file", func() {
+                                       expectedMessage := "debug custom"
+                                       gplog.Custom(gplog.LOGVERBOSE, 
gplog.LOGVERBOSE, expectedMessage)
+                                       testhelper.ExpectRegexp(stdout, 
expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
verboseExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
verboseExpected+expectedMessage)
+                               })
+                       })
+                       Context("Custom with shell as info and file as error", 
func() {
+                               It("prints to stdout and the log file", func() {
+                                       expectedMessage := "debug custom"
+                                       gplog.Custom(gplog.LOGERROR, 
gplog.LOGINFO, expectedMessage)
+                                       testhelper.ExpectRegexp(stdout, 
expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
infoExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
errorExpected+expectedMessage)
+                               })
+                       })
+                       Context("Progress", func() {
+                               It("prints to stdout and the log file", func() {
+                                       expectedMessage := "debug progress"
+                                       gplog.Progress(expectedMessage)
+                                       testhelper.ExpectRegexp(stdout, 
expectedMessage)
+                                       testhelper.NotExpectRegexp(stdout, 
verboseExpected+expectedMessage)
+                                       testhelper.NotExpectRegexp(stderr, 
expectedMessage)
+                                       testhelper.ExpectRegexp(logfile, 
infoExpected+expectedMessage)
+                               })
+                       })
                })
        })
 })


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to