From bca5a39d3b707382526c11631cb53e4f1876e00a Mon Sep 17 00:00:00 2001 From: Ricardo Tomasi Date: Thu, 4 Jul 2013 20:56:15 -0300 Subject: [PATCH] Check for global variable leaks --- test/less-test.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/test/less-test.js b/test/less-test.js index 0fbed7ea..3bddf333 100644 --- a/test/less-test.js +++ b/test/less-test.js @@ -5,6 +5,8 @@ var path = require('path'), var less = require('../lib/less'); var stylize = require('../lib/less/lessc_helper').stylize; +var globals = Object.keys(global); + var oneTestOnly = process.argv[2]; var totalTests = 0, @@ -77,6 +79,12 @@ function globalReplacements(input, directory) { .replace(/\r\n/g, '\n'); } +function checkGlobalLeaks() { + return Object.keys(global).filter(function(v) { + return globals.indexOf(v) < 0; + }); +} + function runTestSet(options, foldername, verifyFunction, nameModifier, doReplacements) { foldername = foldername || ""; @@ -147,6 +155,7 @@ function ok(msg) { } function endTest() { + var leaked = checkGlobalLeaks(); if (failedTests + passedTests === totalTests) { sys.puts(""); sys.puts(""); @@ -158,6 +167,12 @@ function endTest() { sys.print(stylize("All Passed ", "green")); sys.print(passedTests + " run"); } + if (leaked.length > 0) { + sys.puts(""); + sys.puts(""); + sys.print(stylize("Global leak detected: ", "red") + leaked.join(', ')); + sys.print("\n"); + } } } @@ -196,4 +211,4 @@ function testNoOptions() { return; } ok(stylize("OK\n", "green")); -} \ No newline at end of file +}