[Piglit] [PATCH v2] framework: fix comparing NOTRUN/SKIP to other statuses

Ilia Mirkin imirkin at alum.mit.edu
Mon Apr 7 13:58:18 PDT 2014


On Mon, Apr 7, 2014 at 4:40 PM, Dylan Baker <baker.dylan.c at gmail.com> wrote:
> On Saturday, April 05, 2014 12:00:41 PM Ilia Mirkin wrote:
>> The current logic causes transitions involving notrun/skip to not show
>> up in problems. Remove the special handling of lt/gt/etc so that
>> max(status) can work, and reorder the logic that figures out which
>> category to select.
>>
>> Cc: Chris Forbes <chrisf at ijw.co.nz>
>> Cc: Dylan Baker <baker.dylan.c at gmail.com>
>> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
>> ---
>>
>> v1 -> v2:
>>
>>  - revert accidental logic change wrt "changes" page; disabled tests
>> shouldn't show up on it.
>>
>>  framework/status.py  | 12 ------------
>>  framework/summary.py | 14 +++++---------
>>  2 files changed, 5 insertions(+), 21 deletions(-)
>>
>> diff --git a/framework/status.py b/framework/status.py
>> index bb7c594..d5e5f8e 100644
>> --- a/framework/status.py
>> +++ b/framework/status.py
>> @@ -195,12 +195,6 @@ class NoChangeStatus(Status):
>>      def __init__(self, name, value=0, fraction=(0, 0)):
>>          super(NoChangeStatus, self).__init__(name, value, fraction)
>>
>> -    def __lt__(self, other):
>> -        return False
>> -
>> -    def __le__(self, other):
>> -        return False
>> -
>>      def __eq__(self, other):
>>          if isinstance(other, (str, unicode, Status)):
>>              return unicode(self) == unicode(other)
>> @@ -211,12 +205,6 @@ class NoChangeStatus(Status):
>>              return unicode(self) != unicode(other)
>>          raise TypeError("Cannot compare type: {}".format(type(other)))
>>
>> -    def __ge__(self, other):
>> -        return False
>> -
>> -    def __gt__(self, other):
>> -        return False
>> -
>>
>>  NOTRUN = NoChangeStatus('Not Run')
>>
>> diff --git a/framework/summary.py b/framework/summary.py
>> index 6d2a7bb..a4aa136 100644
>> --- a/framework/summary.py
>> +++ b/framework/summary.py
>> @@ -325,20 +325,16 @@ class Summary:
>>              for i in xrange(len(status) - 1):
>>                  first = status[i]
>>                  last = status[i + 1]
>> -                if first < last:
>> -                    self.tests['regressions'].add(test)
>> -                    self.tests['changes'].add(test)
>> -                    continue
>> -                elif first > last:
>> -                    self.tests['fixes'].add(test)
>> -                    self.tests['changes'].add(test)
>> -                    continue
>> -
>>                  if first in [so.SKIP, so.NOTRUN] and last not in [so.SKIP,
>> so.NOTRUN]: self.tests['enabled'].add(test)
>>                      self.tests['changes'].add(test)
>>                  elif last in [so.SKIP, so.NOTRUN] and first not in
>> [so.SKIP, so.NOTRUN]: self.tests['disabled'].add(test)
>> +                elif first < last:
>> +                    self.tests['regressions'].add(test)
>> +                    self.tests['changes'].add(test)
>> +                elif first > last:
>> +                    self.tests['fixes'].add(test)
>>                      self.tests['changes'].add(test)
>>
>>      def __find_totals(self):
>
> Sorry it took so long to get back to you, I missed the v2 on saturday and
> don't work sundays.
>
> So these are also ending up on the changes page, but not correctly. I think
> the output of the nose tests will make it clear:
>
> skip -> pass should not be a change ... ok
> skip -> dmesg-warn should not be a change ... FAIL
> skip -> warn should not be a change ... FAIL
> skip -> dmesg-fail should not be a change ... FAIL
> skip -> fail should not be a change ... FAIL
> skip -> crash should not be a change ... FAIL
> notrun -> pass should not be a change ... ok
> notrun -> dmesg-warn should not be a change ... FAIL
> notrun -> warn should not be a change ... FAIL
> notrun -> dmesg-fail should not be a change ... FAIL
> notrun -> fail should not be a change ... FAIL
> notrun -> crash should not be a change ... FAIL

Hm, OK. I kinda figured these all should be a change. I guess if I
stare at the old code enough it'll become apparent to me why that
wasn't the case. Anyways, I'll make the adjustments... ~tonight,
probably.

>
> Either notrun -> pass and skip -> pass should end up on the changes page or
> none of them should. It would also be great if the tests could get changed

I presume you're talking about some framework tests you've checked in?
How do I operate them? I think you opted not to use the simpler python
framework where you can just run the python script, right?

  -ilia


More information about the Piglit mailing list