Browse Source

Fix last line excerpt not retrievable.

The line number needs to be decremented before testing for existence,
otherwise the last line number would be out of bounds.
ndm2 8 years ago
parent
commit
1539a52ff7
2 changed files with 8 additions and 1 deletions
  1. 1 1
      src/Error/Debugger.php
  2. 7 0
      tests/TestCase/Error/DebuggerTest.php

+ 1 - 1
src/Error/Debugger.php

@@ -421,10 +421,10 @@ class Debugger
         if (strpos($data, "\n") !== false) {
             $data = explode("\n", $data);
         }
+        $line--;
         if (!isset($data[$line])) {
             return $lines;
         }
-        $line--;
         for ($i = $line - $context; $i < $line + $context + 1; $i++) {
             if (!isset($data[$i])) {
                 continue;

+ 7 - 0
tests/TestCase/Error/DebuggerTest.php

@@ -129,6 +129,13 @@ class DebuggerTest extends TestCase
         $this->assertContains('Debugger', $result[5]);
         $this->assertContains('excerpt', $result[5]);
         $this->assertContains('__FILE__', $result[5]);
+
+        $result = Debugger::excerpt(__FILE__, 1, 2);
+        $this->assertCount(3, $result);
+
+        $lastLine = count(explode("\n", file_get_contents(__FILE__)));
+        $result = Debugger::excerpt(__FILE__, $lastLine, 2);
+        $this->assertCount(3, $result);
     }
 
     /**