@@ -150,13 +150,22 @@ func (m rootModel) View() string {
150150 str .WriteString (green .Render ("Return to your browser to continue with the next lesson." ) + "\n \n " )
151151 } else if m .result == api .VerificationResultSlugNoop {
152152 str .WriteString ("\n \n Tests failed! ❌" )
153- str . WriteString ( fmt .Sprintf ( "\n \n Failed Step: %v" , m .failure .FailedStepIndex + 1 ) )
153+ fmt .Fprintf ( & str , "\n \n Failed Step: %v" , m .failure .FailedStepIndex + 1 )
154154 str .WriteString ("\n Error: " + m .failure .ErrorMessage + "\n " )
155155 str .WriteString ("\n You haven't passed, but you also haven't been penalized.\n \n " )
156156 } else if m .result == api .VerificationResultSlugFailure {
157157 str .WriteString ("\n \n " + red .Render ("Tests failed! ❌" ))
158- str .WriteString (red .Render (fmt .Sprintf ("\n \n Failed Step: %v" , m .failure .FailedStepIndex + 1 )))
159- str .WriteString (red .Render ("\n Error: " + m .failure .ErrorMessage ) + "\n \n " )
158+ if m .failure != nil {
159+ if m .failure .FailedStepIndex >= 0 && m .failure .FailedStepIndex < len (m .steps ) {
160+ fmt .Fprintf (& str , "%s" , red .Render (fmt .Sprintf ("\n \n Failed Command: %s" , m .steps [m .failure .FailedStepIndex ].step )))
161+ }
162+ fmt .Fprintf (& str , "%s" , red .Render (fmt .Sprintf ("\n \n Failed Step: %v" , m .failure .FailedStepIndex + 1 )))
163+ fmt .Fprintf (& str , "%s" , red .Render ("\n Error: " + m .failure .ErrorMessage ))
164+ } else {
165+ fmt .Fprintf (& str , "%s" , red .Render ("\n \n Failed Step: unknown" ))
166+ fmt .Fprintf (& str , "%s" , red .Render ("\n Error: unknown" ))
167+ }
168+ str .WriteString ("\n \n " )
160169 currentDate := time .Now ().Format ("2006-01-02" )
161170 if strings .HasSuffix (currentDate , "04-01" ) {
162171 str .WriteString (magenta .Render (fmt .Sprintf ("This incident has been reported to your system administrator. [%s]\n " , currentDate )))
0 commit comments