def validate_dict(dict_path, output_stream): with open(dict_path, 'r') as dict: for index, line in enumerate(dict.readlines()): line = line.strip() if not validate_line(line): print("ERROR: invalid dictionary entry '%s' in %s:%d" % (line, dict_path, index + 1), file=stderr) return False if output_stream: output_stream.write(line + "\n") return True
def test_single_quote(self): self.assertFalse(validate_line('"'))
def test_plain_words(self): self.assertFalse(validate_line('Invalid dictionary entries'))
def test_spaces(self): self.assertTrue(validate_line(' '))
def test_empty_string(self): self.assertTrue(validate_line(''))
def test_empty_entry(self): self.assertFalse(validate_line('""'))
def test_nonspace_after_entry(self): self.assertFalse(validate_line('"entry"suffix'))
def test_space_after_entry(self): self.assertTrue(validate_line('"entry" \t\r\f'))
def test_comment(self): self.assertTrue(validate_line('# valid dictionary entries'))
def test_unfinished_escape(self): self.assertFalse(validate_line('"\\"')) self.assertFalse(validate_line('"\\x"')) self.assertFalse(validate_line('"\\x1"'))
def test_invalid_escaped_words(self): self.assertFalse(validate_line('"\\A"'))
def test_escaped_words(self): self.assertTrue(validate_line('kw2="\\"ac\\\\dc\\""')) self.assertTrue(validate_line('kw3="\\xF7\\xF8"')) self.assertTrue(validate_line('"foo\\x0Abar"'))
def test_plain_entries(self): self.assertTrue(validate_line('kw1="blah"')) self.assertTrue(validate_line('":path"')) self.assertTrue(validate_line('"keep-alive"')) self.assertTrue(validate_line('"te"')) self.assertTrue(validate_line('"ab""'))