diff --git a/tests/datadriven.cpp b/tests/datadriven.cpp
index c39054982f43b3c8a9eb5c9e4a448eeda4ff3da8..8de4828eb497a4adf26e72186e52e11b30681a84 100644
--- a/tests/datadriven.cpp
+++ b/tests/datadriven.cpp
@@ -47,7 +47,9 @@ void test_one_item_actual(const compare_test& c)
 	std::string tagset_name = "kipi";
 	std::string sentence_filename;
 	std::string line;
+	int line_no = 0;
 	while (ifs_in.good() && line != "---") {
+		++line_no;
 		std::getline(ifs_in, line);
 		std::vector<std::string> fields;
 		boost::algorithm::split(fields, line, boost::is_any_of(separators));
@@ -71,7 +73,6 @@ void test_one_item_actual(const compare_test& c)
 
 	std::string operator_string, expected_output;
 
-	int line_no = 0;
 	while (ifs_in.good()) {
 		++line_no;
 		std::getline(ifs_in, line);
@@ -97,8 +98,8 @@ void test_one_item_actual(const compare_test& c)
 			}
 			expected_output = "";
 			operator_string = "";
-			++line_no;
 			while (ifs_in.good() && line != "---" && line != "") {
+				++line_no;
 				std::getline(ifs_in, line);
 				std::vector<std::string> fields;
 				boost::algorithm::split(fields, line, boost::is_any_of(separators));