def assert_linter_works(self, linter_name, extension):
data_dirname = os.path.join(<EOL>os.path.dirname(os.path.realpath(__file__)), '<STR_LIT:data>')<EOL>self.filename_repo = filename_repo = os.path.join(<EOL>self.temp_directory, '<STR_LIT>' % (linter_name, extension))<EOL>filename_original = os.path.join(data_dirname, linter_name,<EOL>'<STR_LIT>' % extension)<EOL>filename_error = os.path.join(data_dirname, linter_name,<EOL>'<STR_LIT>' % extension)<EOL>filename_nonewerror = os.path.join(data_dirname, linter_name,<EOL>'<STR_LIT>' % extension)<EOL>self.assertTrue(<EOL>os.path.exists(filename_original),<EOL>'<STR_LIT>' % filename_original)<EOL>self.assertTrue(<EOL>os.path.exists(filename_error),<EOL>'<STR_LIT>' % filename_error)<EOL>self.assertTrue(<EOL>os.path.exists(filename_nonewerror),<EOL>'<STR_LIT>' % filename_nonewerror)<EOL>shutil.copy(filename_original, filename_repo)<EOL>self.add(filename_repo)<EOL>self.commit('<STR_LIT>')<EOL>shutil.copy(filename_error, filename_repo)<EOL>response, output = self.lint()<EOL>self.assertNotEquals(<EOL><NUM_LIT:0>, response,<EOL>('<STR_LIT>' +<EOL>'<STR_LIT>') % (filename_error, output,<EOL>get_linter_output(<EOL>linter_name, filename_repo)))<EOL>self.add(filename_repo)<EOL>self.commit('<STR_LIT>')<EOL>shutil.copy(filename_nonewerror, filename_repo)<EOL>response, output = self.lint()<EOL>self.assertEqual(<EOL><NUM_LIT:0>, response,<EOL>('<STR_LIT>') %<EOL>(filename_nonewerror, output))<EOL>self.add(filename_repo)<EOL>self.commit('<STR_LIT>')<EOL>
Checks that the given linter works well for all the extensions.

        It requires that 3 files are defined:
        - <linter>/original.<extension>: A file with errors
        - <linter>/error.<extension>: New errors are introduced.
        - <linter>/nonewerror.<extension>: A line was modified/added from the
          last file, but no new errors are introduced.