@@ -134,6 +134,23 @@ describe.each(['true', 'false'])('taskLog (isCI = %s)', (isCI) => {
134134 expect ( output . buffer ) . toMatchSnapshot ( ) ;
135135 } ) ;
136136
137+ test ( 'raw = false keeps only the last carriage return update when success shows the log' , async ( ) => {
138+ const log = prompts . taskLog ( {
139+ input,
140+ output,
141+ title : 'foo' ,
142+ } ) ;
143+
144+ log . message ( '◒ Cloning repository\r◐ Cloning repository\r◓ Cloning repository\r◇ Repository cloned' ) ;
145+ log . success ( 'done!' , { showLog : true } ) ;
146+
147+ const renderedLog = output . buffer . at ( - 1 ) ;
148+ expect ( renderedLog ) . toContain ( '◇ Repository cloned' ) ;
149+ expect ( renderedLog ) . not . toContain ( '◒ Cloning repository' ) ;
150+ expect ( renderedLog ) . not . toContain ( '◐ Cloning repository' ) ;
151+ expect ( renderedLog ) . not . toContain ( '◓ Cloning repository' ) ;
152+ } ) ;
153+
137154 test ( 'prints empty lines' , async ( ) => {
138155 const log = prompts . taskLog ( {
139156 input,
@@ -225,6 +242,24 @@ describe.each(['true', 'false'])('taskLog (isCI = %s)', (isCI) => {
225242
226243 expect ( output . buffer ) . toMatchSnapshot ( ) ;
227244 } ) ;
245+
246+ test ( 'raw = false keeps only the last carriage return update on error' , ( ) => {
247+ const log = prompts . taskLog ( {
248+ input,
249+ output,
250+ title : 'foo' ,
251+ } ) ;
252+
253+ log . message ( '◒ Cloning repository\r◐ Cloning repository\r◓ Cloning repository\r◇ Repository cloned' ) ;
254+
255+ log . error ( 'some error!' ) ;
256+
257+ const renderedLog = output . buffer . at ( - 1 ) ;
258+ expect ( renderedLog ) . toContain ( '◇ Repository cloned' ) ;
259+ expect ( renderedLog ) . not . toContain ( '◒ Cloning repository' ) ;
260+ expect ( renderedLog ) . not . toContain ( '◐ Cloning repository' ) ;
261+ expect ( renderedLog ) . not . toContain ( '◓ Cloning repository' ) ;
262+ } ) ;
228263 } ) ;
229264
230265 describe ( 'success' , ( ) => {
0 commit comments