banditcpp/bandit

--only doesn't work the same way in Qt Creator debugger

MartinDelille opened this issue · 2 comments

I noticed a difference with the --only parameter when running bandit in Qt Creator debugger.

Given the following tests:

go_bandit([]() {
	describe("engine", []() {
		it("is empty", [&]() {
			AssertThat(true, IsTrue());
		});

		describe("bmp", [&]() {
			it("open", [&]() {
				AssertThat(false, IsTrue());
			});

			it("display first frame", [&]() {
				AssertThat(false, IsTrue());
			});
		});
	});
});

If I run it with --only="is empty" parameter, I have the following expected output:

./BanditTest --only="is empty"                                                                                                                  Fri 
.SS
Success!

Unfortunately, passing the same parameter to the debugger doesn't behave in the same way:

.S
F
There were failures!

engine bmp display first frame:
../../../../test/qt/BanditTest/main.cpp:18: Expected: true
Actual: 0

Test run complete. 2 tests run. 1 succeeded. 1 skipped. 1 failed.

Why is the spec engine bmp display first frame executed?

I put the corresponding code here: https://github.com/MartinDelille/BanditTest

Strangely this problem happens only in Qt Creator debugger (not when starting the debugger from the command line).

I have no installation of Qt Creator, so I can't test. But my simple guess is that Qt Creator does not interpret the space between "is" and "empty" correctly. Assuming that Qt Creator runs ./BanditTest --only=is, the first and the last test title match.

edit: What if you run --only=empty?

edit2: To work around this problem in cases where you need many words to get the right result, you can use multple --only arguments, like --only=is --only=empty.

Yes using several --only arguments works indeed in both case.