Skip to content

Commit 41aff1b

Browse files
committed
Fix reporting invalid multi-value seeds
Instead of "78, ", print "7, 8".
1 parent 45a1c3a commit 41aff1b

File tree

3 files changed

+13
-7
lines changed

3 files changed

+13
-7
lines changed

e2e_tests/functional_test.cc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,10 +134,12 @@ TEST_F(UnitTestModeTest, InvalidSeedsAreSkippedAndReported) {
134134
EXPECT_THAT(std_err,
135135
HasSubstr("Could not turn value into corpus type:\n{17}"));
136136
EXPECT_THAT(std_err, HasSubstr("The value 17 is not InRange(0, 10):\n{17}"));
137+
EXPECT_THAT(std_err,
138+
HasSubstr("The value 8 is not InRange(10, 20):\n{7, 8}"));
137139
// Valid seeds are not reported.
138140
EXPECT_THAT(std_err, Not(HasSubstr("{6}")));
139141
// Tests should still run.
140-
EXPECT_THAT(std_out, HasSubstr("[ PASSED ] 3 tests."));
142+
EXPECT_THAT(std_out, HasSubstr("[ PASSED ] 4 tests."));
141143
EXPECT_THAT(status, ExitCode(0));
142144
}
143145

e2e_tests/testdata/fuzz_tests_with_invalid_seeds.cc

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,17 @@ FUZZ_TEST(MySuite, InvalidSeedDueToUserValueNotConvertibleToCorpusValue)
2525
// Map does not support seeds.
2626
.WithDomains(fuzztest::Map([](int) { return 0; },
2727
fuzztest::Arbitrary<int>()))
28-
.WithSeeds({{17}});
28+
.WithSeeds({17});
2929

3030
void InvalidSeedDueToCorpusValueOutOfDomain(int) {}
3131
FUZZ_TEST(MySuite, InvalidSeedDueToCorpusValueOutOfDomain)
3232
.WithDomains(fuzztest::InRange(0, 10))
33-
.WithSeeds({{2}, {17}, {6}});
33+
.WithSeeds({2, 17, 6});
34+
35+
void InvalidMultiValueSeedDueToOneValueOutOfDomain(int, int) {}
36+
FUZZ_TEST(MySuite, InvalidMultiValueSeedDueToOneValueOutOfDomain)
37+
.WithDomains(fuzztest::InRange(0, 10), fuzztest::InRange(10, 20))
38+
.WithSeeds({{7, 8}});
3439

3540
struct MyTest {
3641
void ShouldNotCrash(int) {}

fuzztest/internal/registration.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,14 +182,13 @@ class Registration : private Base {
182182

183183
// We use a direct call to PrintUserValue because we don't have a
184184
// corpus_type object to pass to PrintValue.
185-
bool first = true;
186-
const auto print_one_arg = [&](auto I) {
185+
auto print_one_arg = [seed, first = true](auto I) mutable {
186+
if (!first) absl::FPrintF(stderr, ", ");
187+
first = false;
187188
using value_type = std::decay_t<std::tuple_element_t<I, SeedT>>;
188189
AutodetectTypePrinter<value_type>().PrintUserValue(
189190
std::get<I>(seed), &std::cerr,
190191
domain_implementor::PrintMode::kHumanReadable);
191-
if (!first) absl::FPrintF(stderr, ", ");
192-
first = false;
193192
};
194193
ApplyIndex<Base::kNumArgs>([&](auto... I) { (print_one_arg(I), ...); });
195194
absl::FPrintF(stderr, "}\n\n");

0 commit comments

Comments
 (0)