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)
Example #5
0
 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)
Example #8
0
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