<commit_before>var fs = require('fs');
var path = require('path');
var broccoli = require('broccoli');
var walkSync = require('walk-sync');
var expect = require('chai').expect;
var suaveLintTree = require('../index').lintTree;

describe('rules tests', function() {
  var fixturePath = path.join(__dirname, 'fixtures');
  var jscsrcPath = path.join(fixturePath, '.jscsrc');
  var builder;

  beforeEach(function() {
    this.lintTree = suaveLintTree;
    this.app = { options: { jscsOptions: { configPath: jscsrcPath } } };
    this.ui = { writeLine: function() {} };
    this.project = {};
  });

  afterEach(function() {
    if (builder) {
      return builder.cleanup();
    }
  });

  var rules = fs.readdirSync(path.join(fixturePath, 'rules'));

  rules.forEach(function(dir) {
    describe(dir, function() {
      it('good files should pass', function() {
        var rulePath = path.join(fixturePath, 'rules', dir, 'good');

        return checkJSCSRules(this.lintTree('test', rulePath), function(contents) {
          expect(contents).to.include('ok(true');
          expect(contents).to.not.include('ok(false');
        });
      });

      it('bad files should fail', function() {
        var rulePath = path.join(fixturePath, 'rules', dir, 'bad');

        return checkJSCSRules(this.lintTree('test', rulePath), function(contents) {
          expect(contents).to.not.include('ok(true');
          expect(contents).to.include('ok(false');
        });<commit_msg>Don't cache the rules for tests<commit_after>var fs = require('fs');
var path = require('path');
var broccoli = require('broccoli');
var walkSync = require('walk-sync');
var expect = require('chai').expect;
var suaveLintTree = require('../index').lintTree;

describe('rules tests', function() {
  var fixturePath = path.join(__dirname, 'fixtures');
  var jscsrcPath = path.join(fixturePath, '.jscsrc');
  var builder;

  beforeEach(function() {
    this.lintTree = suaveLintTree;
    this.app = {
      options: {
        jscsOptions: {
          configPath: jscsrcPath,
          persist: false
        }
      }
    };
    this.ui = { writeLine: function() {} };
    this.project = {};
  });

  afterEach(function() {
    if (builder) {
      return builder.cleanup();
    }
  });

  var rules = fs.readdirSync(path.join(fixturePath, 'rules'));

  rules.forEach(function(dir) {
    describe(dir, function() {
      it('good files should pass', function() {
        var rulePath = path.join(fixturePath, 'rules', dir, 'good');

        return checkJSCSRules(this.lintTree('test', rulePath), function(contents) {
          expect(contents).to.include('ok(true');
          expect(contents).to.not.include('ok(false');
        });
      });

      it('bad files should fail', function() {
        var rulePath = path.join(fixturePath, 'rules', dir, 'bad');

        return checkJSCSRules(this.lintTree('test', rulePath), function(contents) {
          expect(contents).to.not.include('ok(true');
          expect(contents).to.include('ok(false');
        });
{'fraction_non_alphanumeric': 0.16875825627476881, 'fraction_numerical': 0.0, 'mean_word_length': 3.2542134831460676, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5589200', 'n_tokens_mistral': 945, 'n_tokens_neox': 923, 'n_words': 185}