Surprising parametrized fixtures order

Hi,

The example below seems to always lead to the same tests execution order, in both pytest 2, 3, and 4. However the order is counter intuitive:

import pytest

@pytest.fixture(params=[(1, 2), (3, 4)], ids=str)
def arg1_arg2_root(request):
    return request.param

@pytest.fixture
def arg1(arg1_arg2_root):
    return arg1_arg2_root[0]

@pytest.fixture
def arg2(arg1_arg2_root):
    return arg1_arg2_root[1]

@pytest.fixture(params=[5, 6])
def arg3(request):
    return request.param

def test_order(arg1, arg2, arg3):
    pass

leads to

<..>::test_order[5-(1, 2)] 
<..>::test_order[5-(3, 4)] 
<..>::test_order[6-(1, 2)] 
<..>::test_order[6-(3, 4)] 

However it seems counter-intuitive to me. Indeed all the fixtures are function-scopes fixtures, and the function uses arg1 (so, arg1_arg2_root) first, then arg2 (same root), then arg3. I would therefore expect:

<..>::test_order[(1, 2)-5] 
<..>::test_order[(1, 2)-6] 
<..>::test_order[(3, 4)-5] 
<..>::test_order[(3, 4)-6] 

Do you agree ? If so that's maybe a bug happening when the fixture closure is computed?