From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lucas Meneghel Rodrigues Subject: Re: [KVM-AUTOTEST PATCH 4/5] kvm_config: add helper to raise exception informing line number Date: Tue, 11 Jan 2011 01:48:22 -0200 Message-ID: <1294717702.15303.9.camel@freedom> References: <1294330356-17043-1-git-send-email-ehabkost@redhat.com> <1294330356-17043-5-git-send-email-ehabkost@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Cc: autotest@test.kernel.org, kvm@vger.kernel.org, Michael Goldish To: Eduardo Habkost Return-path: Received: from mx1.redhat.com ([209.132.183.28]:21592 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754301Ab1AKDs1 (ORCPT ); Mon, 10 Jan 2011 22:48:27 -0500 In-Reply-To: <1294330356-17043-5-git-send-email-ehabkost@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On Thu, 2011-01-06 at 14:12 -0200, Eduardo Habkost wrote: > 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): ^ enumerate in py 2.4 takes exactly 1 argument, so it's not possible to provide the enumerate start index like this, http://docs.python.org/library/functions.html#enumerate so we have to do something like: + sequence = str.splitlines()[1:] + for num,line in enumerate(sequence): To make it py2.4 compliant. I have read your patchset, looks good to me. Before applying it, I am going to give Michael time so he can read the patches as well. > 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: > # ----------------