def test_analyse_line_space4(self): ifi = indent_finder.IndentFinder() result = ifi.analyse_line('') result = ifi.analyse_line('hop') result = ifi.analyse_line(' hop') self.assertEqual(ifi.lines['space4'], 1) # indent result = ifi.analyse_line(' hop') self.assertEqual(result, 'space4') self.assertEqual(ifi.lines['space4'], 2) # same result = ifi.analyse_line(' hop') self.assertEqual(result, None) # dedent result = ifi.analyse_line(' hop') self.assertEqual(result, None) # big indentation result = ifi.analyse_line(' hop') self.assertEqual(result, 'space8') self.assertEqual(ifi.lines['space4'], 2) self.assertEqual(ifi.lines['space8'], 1)
def test_analyse_line_space8(self): ifi = indent_finder.IndentFinder() idt = ' ' result = ifi.analyse_line('') result = ifi.analyse_line('hop') result = ifi.analyse_line(idt + 'hop') self.assertEqual(ifi.lines['space8'], 1) # indent result = ifi.analyse_line(idt * 2 + 'hop') self.assertEqual(result, 'space8') self.assertEqual(ifi.lines['space8'], 2) # same result = ifi.analyse_line(idt * 2 + 'hop') self.assertEqual(result, None) # dedent result = ifi.analyse_line(idt + 'hop') self.assertEqual(result, None) # big indentation is ignored result = ifi.analyse_line(idt * 3 + 'hop') self.assertEqual(result, None) self.assertEqual(ifi.lines['space8'], 2)
def check_file(self, fname, result, expected_vim_result): ifi = indent_finder.IndentFinder(TEST_DEFAULT_RESULT, self.default_tab_width) ifi.parse_file(fname) res = str(ifi) self.assertEquals(res, result) self.assertEquals(expected_vim_result, ifi.vim_output())
def test_skip_next_line(self): ifi = indent_finder.IndentFinder() self.assertEqual(ifi.analyse_line(' coucou \n'), None) self.assertEqual(ifi.skip_next_line, False) self.assertEqual(ifi.analyse_line(' coucou \\\n'), 'space2') self.assertEqual(ifi.skip_next_line, True) self.assertEqual(ifi.analyse_line(' coucou\n'), None) self.assertEqual(ifi.skip_next_line, False)
def check_file(self, filename, result, expected_vim_result): ifi = indent_finder.IndentFinder() results = indent_finder._parse_file( ifi, filename, default_tab_width=TEST_DEFAULT_TAB_WIDTH, default_result=TEST_DEFAULT_RESULT) res = indent_finder.results_to_string(results) self.assertEqual(res, result, filename) self.assertEqual( expected_vim_result, indent_finder.vim_output(results, default_tab_width=TEST_DEFAULT_TAB_WIDTH))
def test_analyse_line_tab(self): ifi = indent_finder.IndentFinder() result = ifi.analyse_line('') result = ifi.analyse_line('hop') result = ifi.analyse_line('\thop') self.assertEqual(ifi.lines['tab'], 1) result = ifi.analyse_line('\t\thop') self.assertEqual(result, 'tab') self.assertEqual(ifi.lines['tab'], 2) result = ifi.analyse_line('\t\thop') self.assertEqual(result, None) self.assertEqual(ifi.lines['tab'], 2) result = ifi.analyse_line('\thop') self.assertEqual(result, None) self.assertEqual(ifi.lines['tab'], 2) result = ifi.analyse_line('\t\t\thop') self.assertEqual(result, None) self.assertEqual(ifi.lines['tab'], 2)
def test_analyse_line_mixed(self): ifi = indent_finder.IndentFinder() result = ifi.analyse_line('') result = ifi.analyse_line('hop') result = ifi.analyse_line(' hop') self.assertEqual(result, 'space4') self.assertEqual(ifi.lines['mixed4'], 1) self.assertEqual(ifi.lines['space4'], 1) # indent result = ifi.analyse_line('\thop') self.assertEqual(result, 'mixed4') self.assertEqual(ifi.lines['mixed4'], 2) result = ifi.analyse_line('\t hop') self.assertEqual(result, 'mixed4') self.assertEqual(ifi.lines['mixed4'], 3) result = ifi.analyse_line('\t\thop') self.assertEqual(result, 'mixed4') self.assertEqual(ifi.lines['mixed4'], 4) # same result = ifi.analyse_line('\t\thop') self.assertEqual(result, None) # dedent result = ifi.analyse_line('\t hop') self.assertEqual(result, None) result = ifi.analyse_line('\thop') self.assertEqual(result, None) # big indentation result = ifi.analyse_line('\t\t hop') self.assertEqual(result, None) result = ifi.analyse_line('\t\t\t hop') self.assertEqual(result, None)
def detect_indentation_problems (file_name) : try : import indent_finder except ImportError : return None fi = indent_finder.IndentFinder() fi.clear() fi.parse_file(file_name) result = fi.results() if (result is fi.default_result) : return None itype, ival = result n_tab = n_space = 0 if (itype != "mixed") : if (itype == "space") : n_space = ival else : n_tab = ival if (n_tab == 0) and (n_space == 2) : # this is our "standard" return None return (n_tab, n_space) else : return ival return None