From 473f3603f802349e494cebfc1e05da210d7bc48e Mon Sep 17 00:00:00 2001
From: Jared Hancock <jared@osticket.com>
Date: Thu, 13 Jun 2013 16:42:21 -0500
Subject: [PATCH] Add test to find leading and trailing whitespace

---
 include/staff/header.inc.php               |  1 -
 setup/test/tests/class.test.php            |  9 ++++++++
 setup/test/tests/test.extra-whitespace.php | 26 ++++++++++++++++++++++
 setup/test/tests/test.shortopentags.php    | 13 +----------
 4 files changed, 36 insertions(+), 13 deletions(-)
 create mode 100644 setup/test/tests/test.extra-whitespace.php

diff --git a/include/staff/header.inc.php b/include/staff/header.inc.php
index 1bb03fe07..2e0fe9e52 100644
--- a/include/staff/header.inc.php
+++ b/include/staff/header.inc.php
@@ -100,4 +100,3 @@
         <?php }elseif($warn) { ?>
             <div id="msg_warning"><?php echo $warn; ?></div>
         <?php } ?>
-
diff --git a/setup/test/tests/class.test.php b/setup/test/tests/class.test.php
index f9cfeb309..542d47c35 100644
--- a/setup/test/tests/class.test.php
+++ b/setup/test/tests/class.test.php
@@ -62,5 +62,14 @@ class Test {
         }
     }
 
+    function line_number_for_offset($filename, $offset) {
+        $lines = file($filename);
+        $bytes = $line = 0;
+        while ($bytes < $offset) {
+            $bytes += strlen(array_shift($lines));
+            $line += 1;
+        }
+        return $line;
+    }
 }
 ?>
diff --git a/setup/test/tests/test.extra-whitespace.php b/setup/test/tests/test.extra-whitespace.php
new file mode 100644
index 000000000..96d31ac84
--- /dev/null
+++ b/setup/test/tests/test.extra-whitespace.php
@@ -0,0 +1,26 @@
+<?php
+require_once "class.test.php";
+
+class ExtraWhitespace extends Test {
+    var $name = "PHP Leading and Trailing Whitespace";
+    
+    function testFindWhitespace() {
+        foreach ($this->getAllScripts() as $s) {
+            $matches = array();
+            if (preg_match_all('/^\s+<\?php|\?>\n\s+$/s',
+                    file_get_contents($s), $matches,
+                    PREG_OFFSET_CAPTURE) > 0) {
+                foreach ($matches[0] as $match)
+                    $this->fail(
+                        $s, $this->line_number_for_offset($s, $match[1]),
+                        (strpos('?>', $match[0]) !== false)
+                            ? 'Leading whitespace'
+                            : 'Trailing whitespace');
+            }
+            else $this->pass();
+        }
+    }
+}
+return 'ExtraWhitespace';
+
+?>
diff --git a/setup/test/tests/test.shortopentags.php b/setup/test/tests/test.shortopentags.php
index aab8e0156..571fc08e1 100644
--- a/setup/test/tests/test.shortopentags.php
+++ b/setup/test/tests/test.shortopentags.php
@@ -13,23 +13,12 @@ class ShortOpenTag extends Test {
                 foreach ($matches[0] as $match)
                     $this->fail(
                         $s,
-                        line_number_for_offset($s, $match[1]),
+                        $this->line_number_for_offset($s, $match[1]),
                         $match[0]);
             }
             else $this->pass();
         }
     }
 }
-
-function line_number_for_offset($filename, $offset) {
-    $lines = file($filename);
-    $bytes = $line = 0;
-    while ($bytes < $offset) {
-        $bytes += strlen(array_shift($lines));
-        $line += 1;
-    }
-    return $line;
-}
-
 return 'ShortOpenTag';
 ?>
-- 
GitLab