text: "use strict";
  var vows = require('vows')
  , fs = require('fs')
  , assert = require('assert')
  , os = require('os')
  , EOL = require('os').EOL || '\n';
  
  function remove(filename) {
    try {
      fs.unlinkSync(filename);
    } catch (e) {
      //doesn't really matter if it failed
    }
  }
  
  vows.describe('log4js logLevelFilter').addBatch({
    'appender': {
      topic: function() {
        var log4js = require('../lib/log4js'), logEvents = [], logger;
        log4js.clearAppenders();
        log4js.addAppender(
          require('../lib/appenders/logLevelFilter')
            .appender(
              'ERROR',
              undefined,
              function(evt) { logEvents.push(evt); }
            ),
          "logLevelTest"
        );
  
        logger = log4js.getLogger("logLevelTest");
        logger.debug('this should not trigger an event');
        logger.warn('neither should this');
        logger.error('this should, though');
        logger.fatal('so should this');
        return logEvents;
      },
      'should only pass log events greater than or equal to its own level' : function(logEvents) {
        assert.equal(logEvents.length, 2);
        assert.equal(logEvents[0].data[0], 'this should, though');
        assert.equal(logEvents[1].data[0], 'so should this');
      }
    },
  
    'configure': {
      topic: function() {
        var log4js = require('../lib/log4js')
        , logger;
  
        remove(__dirname + '/logLevelFilter.log');
        remove(__dirname + '/logLevelFilter-warnings.log');
        remove(__dirname + '/logLevelFilter-debugs.log');
  
        log4js.configure('test/with-logLevelFilter.json');
        logger = log4js.getLogger("tests");
        logger.debug('debug');
        logger.info('info');
        logger.error('error');
        logger.warn('warn');
        logger.debug('debug');
        logger.trace('trace');
        //wait for the file system to catch up
        setTimeout(this.callback, 500);
      },
      'tmp-tests.log': {
        topic: function() {
          fs.readFile(__dirname + '/logLevelFilter.log', 'utf8', this.callback);
        },
        'should contain all log messages': function (contents) {
          var messages = contents.trim().split(EOL);
          assert.deepEqual(messages, ['debug','info','error','warn','debug','trace']);
        }
      },
      'tmp-tests-warnings.log': {
        topic: function() {
          fs.readFile(__dirname + '/logLevelFilter-warnings.log','utf8',this.callback);
        },
        'should contain only error and warning log messages': function(contents) {
          var messages = contents.trim().split(EOL);
          assert.deepEqual(messages, ['error','warn']);
        }
      },
      'tmp-tests-debugs.log': {
        topic: function() {
          fs.readFile(__dirname + '/logLevelFilter-debugs.log','utf8',this.callback);
        },
        'should contain only trace and debug log messages': function(contents) {
          var messages = contents.trim().split(EOL);
          assert.deepEqual(messages, ['debug','debug','trace']);
        }
      }
    }
  }).export(module);
  