Re: [PATCH] test: Test thread linking in all possible delivery orders

Subject: Re: [PATCH] test: Test thread linking in all possible delivery orders

Date: Mon, 07 Apr 2014 07:37:48 -0300

To: Austin Clements, notmuch@notmuchmail.org

Cc:

From: David Bremner


Austin Clements <amdragon@MIT.EDU> writes:
> +THREADS=$(python -c '
> +def mkTrees(free, tree={}):
> +    if not free:

I'm not sure if using not for an empty set is idiomatic python or not,
but it did confuse me a moment.

> +        print(" ".join(map(str, [msg[1] for msg in sorted(tree.items())])))
> +        return
> +    # Attach each free message to each message in the tree (if there is
> +    # no tree, make the free message the root)
> +    for msg in sorted(free):
> +        parents = sorted(tree.keys()) if tree else ["none"]
> +        for parent in parents:
> +            ntree = tree.copy()
> +            ntree[msg] = parent
> +            mkTrees(free - set([msg]), ntree)
> +mkTrees(set(range(4)))')

FWIW, it took me a while to understand this.  I might have twigged
faster if the initial comment said something like "via backtracking".

> +output=$(notmuch search '*' | notmuch_search_sanitize)

> +expected=$(for ((i = 0; i < $nthreads; i++)); do
> +        echo "thread:XXX   2001-01-05 [4/4] m3, m2, m1, m0; p$i (inbox unread)"
> +    done)
> +test_expect_equal "$output" "$expected"

It seems to me this summary line depends on the default search order.
It might be worth specifying the search order in the "notmuch search"
command just to make it a bit more robust.

d

Thread: