TestVerify jobs fail by default first when started from ./mach try fuzzy path
Categories
(Testing :: General, defect, P2)
Tracking
(firefox66 fixed)
Tracking | Status | |
---|---|---|
firefox66 | --- | fixed |
People
(Reporter: jdescottes, Assigned: gbrown)
References
Details
Attachments
(2 files, 1 obsolete file)
(deleted),
application/octet-stream
|
Details | |
(deleted),
patch
|
marco
:
review+
|
Details | Diff | Splinter Review |
Reporter | ||
Comment 1•6 years ago
|
||
Assignee | ||
Comment 2•6 years ago
|
||
Assignee | ||
Comment 3•6 years ago
|
||
A simple type conversion avoids the TypeError seen in comment 2.
Assignee | ||
Comment 5•6 years ago
|
||
:jmaher noted that the same problem might also occur at
https://searchfox.org/mozilla-central/source/taskcluster/taskgraph/util/perfile.py#54
Let me check on that...
Comment 6•6 years ago
|
||
Assignee | ||
Comment 7•6 years ago
|
||
That doesn't quite work.
For a TV task generated by 'mach try fuzzy <path>', after
suite_to_paths = json.loads(os.environ['MOZHARNESS_TEST_PATHS'])
suite_to_paths might be, for example,
{u'mochitest-clipboard': [u'testing/mochitest/tests/Harness_sanity/test_sanitySimpletest.html']}
Then suite_to_paths.values() == [[u'testing/mochitest/tests/Harness_sanity/test_sanitySimpletest.html']]
And
changed_files.update(itertools.chain(suite_to_paths.values()))
raises: TypeError: unhashable type: 'list'
Whereas
changed_files.update(itertools.chain.from_iterable(suite_to_paths.values()))
produces the correct set in changed_files.
On the other hand, for a TV-bf task generated by a backfill request, the same code sees:
suite_to_paths == {u'clipboard': u'testing/mochitest/tests/Harness_sanity/test_sanity.html'}
Then suite_to_paths.values() == [u'testing/mochitest/tests/Harness_sanity/test_sanitySimpletest.html']
It this case, itertools.chain() will produce the correct value, but itertools.chain.from_iterable() will not.
I suppose one of those MOZHARNESS_TEST_PATHS is incorrect, but which one? Do you expect:
MOZHARNESS_TEST_PATHS = {'suite': 'test1'}
or
MOZHARNESS_TEST_PATHS = {'suite': ['test1']}
?
Comment 8•6 years ago
|
||
(In reply to Geoff Brown [:gbrown] from comment #7)
That doesn't quite work.
[...]
I suppose one of those MOZHARNESS_TEST_PATHS is incorrect, but which one? Do you expect:
MOZHARNESS_TEST_PATHS = {'suite': 'test1'}
or
MOZHARNESS_TEST_PATHS = {'suite': ['test1']}
?
Yes my bad, so the code was not wrong there and doesn't need to be changed.
The correct one is the one with the list, that is the second one.
So we'll need to fix https://searchfox.org/mozilla-central/rev/c3ebaf6de2d481c262c04bb9657eaf76bf47e2ac/taskcluster/taskgraph/actions/backfill.py#146 to make the value of the dict a list of paths (in this case a list of one path) instead of a path.
Assignee | ||
Comment 9•6 years ago
|
||
Thanks :marco.
I've used update() and made some cosmetic changes to use the same code in per_test_base.py as in perfile.py. With the additional fix for the backfill format, all's well:
Updated•6 years ago
|
Comment 10•6 years ago
|
||
Comment 11•6 years ago
|
||
bugherder |
Description
•