From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eduardo Habkost Subject: [KVM-AUTOTEST PATCH 4/5] kvm_config: add helper to raise exception informing line number Date: Thu, 6 Jan 2011 14:12:35 -0200 Message-ID: <1294330356-17043-5-git-send-email-ehabkost@redhat.com> References: <1294330356-17043-1-git-send-email-ehabkost@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: autotest@test.kernel.org, kvm@vger.kernel.org Return-path: In-Reply-To: <1294330356-17043-1-git-send-email-ehabkost@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: autotest-bounces@test.kernel.org Errors-To: autotest-bounces@test.kernel.org List-Id: kvm.vger.kernel.org From: Eduardo Habkost Useful for syntax or other errors on the config file. We want to tell the user on which file:line the error is located. Signed-off-by: Eduardo Habkost --- client/tests/kvm/kvm_config.py | 16 +++++++++++++++- 1 files changed, 15 insertions(+), 1 deletions(-) diff --git a/client/tests/kvm/kvm_config.py b/client/tests/kvm/kvm_config.py index 35e2ab9..c206743 100755 --- a/client/tests/kvm/kvm_config.py +++ b/client/tests/kvm/kvm_config.py @@ -548,7 +548,8 @@ class configreader: self.filename = filename self.line_index = 0 self.lines = [] - for line in str.splitlines(): + self.real_number = [] + for num,line in enumerate(str.splitlines(), 1): line = line.rstrip().expandtabs() stripped_line = line.strip() indent = len(line) - len(stripped_line) @@ -557,6 +558,7 @@ class configreader: or stripped_line.startswith("//")): continue self.lines.append((line, stripped_line, indent)) + self.real_number.append(num) def get_next_line(self): @@ -589,6 +591,18 @@ class configreader: """ self.line_index = index + def raise_error(self, msg): + """Raise an error related to the last line returned by get_next_line() + """ + if self.line_index == 0: # nothing was read. shouldn't happen, but... + line_id = 'BEGIN' + elif self.line_index >= len(self.lines): # past EOF + line_id = 'EOF' + else: + # line_index is the _next_ line. get the previous one + line_id = str(self.real_number[self.line_index-1]) + raise error.AutotestError("%s:%s: %s" % (self.filename, line_id, msg)) + # Array structure: # ---------------- -- 1.7.3.2