On Sunday, October 13, 2013 11:13:48 PM Kenneth Graunke wrote: > On 09/27/2013 02:39 PM, Dylan Baker wrote: > > These status classes are intended to replace the string statuses > > currently used by piglit summary. > > > > They give a couple of very nice advantages, first, they can be directly > > compared to each other to determine whether a status is worse than > > another status. These statuses can also be compared to any object > > implementing the __int__ magic method. > > > > This will allow us to remove a number of special functions for sorting > > representations of statuses. > > > > v2: - Use larger numbers for the statuses, this should make adding > > > > addtional statuses easier, since there is room between the > > statuses. > > > > - Add a class for the "Not Run" status > > - Adds classes for dmesg-warn and dmesg-fail > > - Change statuses to match the standard set in the framework test > > > > Signed-off-by: Dylan Baker <[email protected]> > > --- > > > > framework/status.py | 118 > > ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 > > insertions(+) > > create mode 100644 framework/status.py > > > > diff --git a/framework/status.py b/framework/status.py > > new file mode 100644 > > index 0000000..43b807b > > --- /dev/null > > +++ b/framework/status.py > > @@ -0,0 +1,118 @@ > > +# Copyright (c) 2013 Intel Corporation > > +# > > +# Permission is hereby granted, free of charge, to any person obtaining a > > +# copy of this software and associated documentation files (the > > "Software"), +# to deal in the Software without restriction, including > > without limitation +# the rights to use, copy, modify, merge, publish, > > distribute, sublicense, +# and/or sell copies of the Software, and to > > permit persons to whom the +# Software is furnished to do so, subject to > > the following conditions: +# > > +# The above copyright notice and this permission notice (including the > > next +# paragraph) shall be included in all copies or substantial > > portions of the +# Software. > > +# > > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > > OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > > MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > > IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > > CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > > TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE > > SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. > > + > > + > > +class Status(object): > > + """ > > + A simple class for representing the output values of tests. > > + > > + This is a base class, and should not be directly called. Instead a > > child + class should be created and called. This module provides 5 of > > them: Skip, + Pass, Warn, Fail, and Crash. > > There are actually 8 with the dmesg ones :)
fixed > > > + """ > > + > > + # Using __slots__ allows us to implement the flyweight method, > > limiting the + # memory consumed for creating tens of thousands of > > these objects. + __slots__ = ['name', 'value'] > > + > > + def __init__(self): > > + raise NotImplementedError > > + > > + def split(self, spliton): > > + return (self.name.split(spliton)) > > + > > + def __repr__(self): > > + return self.name > > + > > + def __str__(self): > > + return str(self.name) > > + > > + def __unicode__(self): > > + return unicode(self.name) > > + > > + def __lt__(self, other): > > + return int(self) < int(other) > > + > > + def __le__(self, other): > > + return int(self) <= int(other) > > + > > + def __eq__(self, other): > > + return int(self) == int(other) > > + > > + def __ne__(self, other): > > + return int(self) != int(other) > > + > > + def __ge__(self, other): > > + return int(self) >= int(other) > > + > > + def __gt__(self, other): > > + return int(self) > int(other) > > + > > + def __int__(self): > > + return self.value > > Since these somewhat arbitrary looking numbers determine the ordering > from best to worst, you might want to import your comment from patch 1, > which lists them in order. done > > With the trivial comment fix, this is > Reviewed-by: Kenneth Graunke <[email protected]> > > > + > > +class NotRun(Status): > > + def __init__(self): > > + self.name = 'Not Run' > > + self.value = 0 > > + > > + > > +class Pass(Status): > > + def __init__(self): > > + self.name = 'pass' > > + self.value = 10 > > + > > + > > +class DmesgWarn(Status): > > + def __init__(self): > > + self.name = 'dmesg-warn' > > + self.value = 20 > > + > > + > > +class Warn(Status): > > + def __init__(self): > > + self.name = 'warn' > > + self.value = 25 > > + > > + > > +class DmesgFail(Status): > > + def __init__(self): > > + self.name = 'dmesg-fail' > > + self.value = 30 > > + > > + > > +class Fail(Status): > > + def __init__(self): > > + self.name = 'fail' > > + self.value = 35 > > + > > + > > +class Crash(Status): > > + def __init__(self): > > + self.name = 'crash' > > + self.value = 40 > > + > > + > > +class Skip(Status): > > + def __init__(self): > > + self.name = 'skip' > > + self.value = 50
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
