{"action":"created","issue":{"url":"https://api.github.com/repos/eslint/eslint/issues/3186","labels_url":"https://api.github.com/repos/eslint/eslint/issues/3186/labels{/name}","comments_url":"https://api.github.com/repos/eslint/eslint/issues/3186/comments","events_url":"https://api.github.com/repos/eslint/eslint/issues/3186/events","html_url":"https://github.com/eslint/eslint/issues/3186","id":97985566,"number":3186,"title":"Create RuleTester to replace ESLintTester","user":{"login":"nzakas","id":38546,"avatar_url":"https://avatars.githubusercontent.com/u/38546?v=3","gravatar_id":"","url":"https://api.github.com/users/nzakas","html_url":"https://github.com/nzakas","followers_url":"https://api.github.com/users/nzakas/followers","following_url":"https://api.github.com/users/nzakas/following{/other_user}","gists_url":"https://api.github.com/users/nzakas/gists{/gist_id}","starred_url":"https://api.github.com/users/nzakas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nzakas/subscriptions","organizations_url":"https://api.github.com/users/nzakas/orgs","repos_url":"https://api.github.com/users/nzakas/repos","events_url":"https://api.github.com/users/nzakas/events{/privacy}","received_events_url":"https://api.github.com/users/nzakas/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/eslint/eslint/labels/accepted","name":"accepted","color":"0052cc"},{"url":"https://api.github.com/repos/eslint/eslint/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/eslint/eslint/labels/infrastructure","name":"infrastructure","color":"666666"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/eslint/eslint/milestones/12","html_url":"https://github.com/eslint/eslint/milestones/v1.0.0","labels_url":"https://api.github.com/repos/eslint/eslint/milestones/12/labels","id":944327,"number":12,"title":"v1.0.0","description":null,"creator":{"login":"btmills","id":1709537,"avatar_url":"https://avatars.githubusercontent.com/u/1709537?v=3","gravatar_id":"","url":"https://api.github.com/users/btmills","html_url":"https://github.com/btmills","followers_url":"https://api.github.com/users/btmills/followers","following_url":"https://api.github.com/users/btmills/following{/other_user}","gists_url":"https://api.github.com/users/btmills/gists{/gist_id}","starred_url":"https://api.github.com/users/btmills/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/btmills/subscriptions","organizations_url":"https://api.github.com/users/btmills/orgs","repos_url":"https://api.github.com/users/btmills/repos","events_url":"https://api.github.com/users/btmills/events{/privacy}","received_events_url":"https://api.github.com/users/btmills/received_events","type":"User","site_admin":false},"open_issues":1,"closed_issues":16,"state":"open","created_at":"2015-01-20T21:59:03Z","updated_at":"2015-07-29T17:28:02Z","due_on":null,"closed_at":null},"comments":3,"created_at":"2015-07-29T17:19:23Z","updated_at":"2015-07-29T18:08:33Z","closed_at":null,"body":"By moving ESLintTester into this package, we're now also bound to include chai and mocha, which sucks. It would be better to have a tester that doesn't have bindings to any particular testing frameworks. So, I'm going to make a new RuleTester object, which would be used like this:\r\n\r\n```js\r\nvar RuleTester = require(\"../../../lib/testers/rule-tester\");\r\nvar theRule = require(\"../../../lib/rules/whatever\");\r\n\r\nvar tester = new RuleTester(theRule);\r\ntester.add({\r\n    valid: {}\r\n    invalid: {}\r\n});\r\n```\r\n\r\nThen, we'd just use `describe()` directly in our tests and I can remove ESLintTester from the package. Thus, 1.0.0 would deprecate ESLintTester in favor of RuleTester.\r\n\r\nThoughts?"},"comment":{"url":"https://api.github.com/repos/eslint/eslint/issues/comments/126044367","html_url":"https://github.com/eslint/eslint/issues/3186#issuecomment-126044367","issue_url":"https://api.github.com/repos/eslint/eslint/issues/3186","id":126044367,"user":{"login":"nzakas","id":38546,"avatar_url":"https://avatars.githubusercontent.com/u/38546?v=3","gravatar_id":"","url":"https://api.github.com/users/nzakas","html_url":"https://github.com/nzakas","followers_url":"https://api.github.com/users/nzakas/followers","following_url":"https://api.github.com/users/nzakas/following{/other_user}","gists_url":"https://api.github.com/users/nzakas/gists{/gist_id}","starred_url":"https://api.github.com/users/nzakas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nzakas/subscriptions","organizations_url":"https://api.github.com/users/nzakas/orgs","repos_url":"https://api.github.com/users/nzakas/repos","events_url":"https://api.github.com/users/nzakas/events{/privacy}","received_events_url":"https://api.github.com/users/nzakas/received_events","type":"User","site_admin":false},"created_at":"2015-07-29T18:08:33Z","updated_at":"2015-07-29T18:08:33Z","body":"The difference is that you won't need `describe` or `it` to exist for it to work. The renaming is just to better indicate what it's doing. PR forthcoming."}}