<feed xmlns='http://www.w3.org/2005/Atom'>
<title>catch3, branch v3.0.1</title>
<subtitle>Progmasoft Catch3: an independently maintained C++17 test framework with a parallel runner, property checks, snapshots and structured results.</subtitle>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/'/>
<entry>
<title>v3.0.1</title>
<updated>2022-05-17T20:13:36+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2022-05-17T20:13:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=605a34765aa5d5ecbf476b4598a862ada971b0cc'/>
<id>605a34765aa5d5ecbf476b4598a862ada971b0cc</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Extend project call for Catch2</title>
<updated>2022-05-17T20:12:44+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2022-05-17T20:12:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=abb669d4fdaeb08ec7e087541d32e7130bc775ef'/>
<id>abb669d4fdaeb08ec7e087541d32e7130bc775ef</id>
<content type='text'>
This provides some extra metadata for CPack and related tools.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This provides some extra metadata for CPack and related tools.
</pre>
</div>
</content>
</entry>
<entry>
<title>Only reseed the internal RNG when a test is first entered</title>
<updated>2022-05-17T19:49:26+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2022-05-17T19:49:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=dcafc605f3232f5109e3f86ac8d8281e6ed611d2'/>
<id>dcafc605f3232f5109e3f86ac8d8281e6ed611d2</id>
<content type='text'>
This fixes multiple issues with random generators, with the most
important one being that multiple nested generators could return
values from the same sequence, due to internal implementation
details of `GENERATE`, and how they interact with test case
paths.

The cost of doing this is that given this simple `TEST_CASE`,
```cpp
TEST_CASE("foo") {
    auto i = GENERATE(take(10, random(0, 100));
    SECTION("A") {
        auto j = GENERATE(take(10, random(0, 100));
    }
    SECTION("B") {
        auto k = GENERATE(take(10, random(0, 100));
    }
}
```

`k` will have different values between running the test as
a whole, e.g. with `./tests "foo"`, and running only the "B"
section with `./tests "foo" -c "B"`.

I consider this an acceptable cost, because the only alternative
would be very messy to implement, and add a lot of brittle and
complex code for relatively little benefit.

If this calculation changes, we will need to instead walk
the current tracker tree whenever a random generator is being
constructed, check for random generators on the path to root,
and take a seed from them.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This fixes multiple issues with random generators, with the most
important one being that multiple nested generators could return
values from the same sequence, due to internal implementation
details of `GENERATE`, and how they interact with test case
paths.

The cost of doing this is that given this simple `TEST_CASE`,
```cpp
TEST_CASE("foo") {
    auto i = GENERATE(take(10, random(0, 100));
    SECTION("A") {
        auto j = GENERATE(take(10, random(0, 100));
    }
    SECTION("B") {
        auto k = GENERATE(take(10, random(0, 100));
    }
}
```

`k` will have different values between running the test as
a whole, e.g. with `./tests "foo"`, and running only the "B"
section with `./tests "foo" -c "B"`.

I consider this an acceptable cost, because the only alternative
would be very messy to implement, and add a lot of brittle and
complex code for relatively little benefit.

If this calculation changes, we will need to instead walk
the current tracker tree whenever a random generator is being
constructed, check for random generators on the path to root,
and take a seed from them.
</pre>
</div>
</content>
</entry>
<entry>
<title>Make Random*Generators be seedable</title>
<updated>2022-05-17T15:57:21+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2022-05-17T15:57:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=7a2a6c632feb7d6e438671b8520beb80efd60ad2'/>
<id>7a2a6c632feb7d6e438671b8520beb80efd60ad2</id>
<content type='text'>
This is a necessary step to fix issue with combining multiple
random generators in one test case, with different section nesting.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a necessary step to fix issue with combining multiple
random generators in one test case, with different section nesting.
</pre>
</div>
</content>
</entry>
<entry>
<title>Rename global rng() to sharedRng()</title>
<updated>2022-05-17T13:43:23+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2022-05-17T13:37:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=359cd6187d7e8fe40dec82e77bafe5066115cb53'/>
<id>359cd6187d7e8fe40dec82e77bafe5066115cb53</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Reseed global rng instance unconditionally</title>
<updated>2022-05-17T10:35:34+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2022-05-17T10:35:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=9c72b303d9ed0de4fc1ed3247223e5449cdd328d'/>
<id>9c72b303d9ed0de4fc1ed3247223e5449cdd328d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Don't reseed std::srand when resetting rng state</title>
<updated>2022-05-17T09:54:19+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2022-05-17T09:54:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=6044f021cf53ac51c307566dd9b5c13054b097d6'/>
<id>6044f021cf53ac51c307566dd9b5c13054b097d6</id>
<content type='text'>
We no longer use `std::rand` anywhere, so there is no point,
and it might even interfere with our users use of `std::(s)rand`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We no longer use `std::rand` anywhere, so there is no point,
and it might even interfere with our users use of `std::(s)rand`.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove leftover comment in tests</title>
<updated>2022-05-16T19:50:52+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2022-05-16T19:50:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=5d7883b551670e28d15697eed4411574aa7e313a'/>
<id>5d7883b551670e28d15697eed4411574aa7e313a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix release automation script</title>
<updated>2022-05-16T16:39:01+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2022-05-16T16:39:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=04a54b0e87294cc154a03ef579c982f67735ccbc'/>
<id>04a54b0e87294cc154a03ef579c982f67735ccbc</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add support for retrieving generator's element as string</title>
<updated>2022-05-16T14:34:06+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2022-05-16T14:34:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=48f322697434292206db570e8fbe1e3ac8728d0b'/>
<id>48f322697434292206db570e8fbe1e3ac8728d0b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
