Quoting Dan Kegel (2016-09-07 15:59:21)
> Hi!
> I'd like to use piglit as a regression test for my opengl test rigs.
> My plan is to run piglit a few times on each OS/card combo I need to support,
> get a list of tests that reliably pass on each platform, and then
> forevermore run just those tests.
> 
> I know about the -t and -x options, and the --test-list option, and
> about writing test profiles,
> but am still not sure what the best way to generate a list of passing
> tests to pass to e.g. --test-list.
> Test names are a little hard for this newbie to identify in the output
> of piglit summary console.
> 
> After looking at the source a bit, I tried generating a list of passed
> tests like this:
>     ./piglit summary console results/quick | grep ': pass$' | sed
> 's/:.*//' | tr / @ > tests.list
> but that includes output
> spec@!opengl 1.1@max-texture-size-level
> spec@!opengl 1.1@max-texture-size@GL_PROXY_TEXTURE_1D-GL_RGBA16
> 
> which leads to errors from --test-list tests.list like
> Fatal Error: Cannot reorder test: "spec@!opengl
> 1.1@max-texture-size@GL_PROXY_TEXTURE_1D-GL_RGBA16", it is not in the
> profile.
> 
> Suggestions?

That's an interesting corner you've found. What's happening is that
GL_PROXY_TEXTURE_1D-GL_RGBA16 is a subtest of 
spec@!opengl 1.1@max-texture-size, and thus isn't in the test list at
all.

This is actually an odd corner of a known deficiency, the inability to
filter on subtests. I've been thinking a lot about how to fix this, but
there isn't a straight forward way to fix it (that I've been able to
come up with). I guess I should bump this up on my list of things to do.

The easiest thing I can com up with off the top my head would be to
write a little script to parse the output and output what you want.

Something like this should work (untested):

"""
import argparse

from framework import backends

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('file')
    args = parser.parse_args()

    results = backends.load(args._file)
    with open('myfile', 'w') as f:
        for name, value in results.tests.items():
            if value.result == 'pass':
                f.write(name)
                f.write('\n')


if __name__ == '__main__':
    main()
"""

Obviously you'll need to be in the piglit source directory or add it to
your PYTHON_PATH to make this work, since it relies on using the piglit
framework.

Dylan

Attachment: signature.asc
Description: signature

_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to