• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2023 Code Intelligence GmbH
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.example;
18 
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertTrue;
21 
22 import com.code_intelligence.jazzer.driver.FuzzTargetRunner;
23 import com.code_intelligence.jazzer.junit.FuzzTest;
24 import com.code_intelligence.jazzer.mutation.annotation.NotNull;
25 import java.util.List;
26 import org.junit.jupiter.api.AfterAll;
27 
28 class MutatorFuzzTest {
29   @FuzzTest
mutatorFuzz(List<@NotNull String> list)30   void mutatorFuzz(List<@NotNull String> list) {
31     // Check that the mutator is actually doing something.
32     if (list != null && list.size() > 3 && list.get(2).equals("mutator")) {
33       throw new AssertionError("Found expected JUnit mutator test issue");
34     }
35   }
36 
37   @AfterAll
assertFuzzTargetRunner()38   static void assertFuzzTargetRunner() {
39     // FuzzTargetRunner values are not set in JUnit engine tests.
40     String jazzerFuzz = System.getenv("JAZZER_FUZZ");
41     if (jazzerFuzz != null && !jazzerFuzz.isEmpty()) {
42       assertTrue(FuzzTargetRunner.invalidCorpusFilesPresent());
43       assertEquals(FuzzTargetRunner.mutatorDebugString(), "Arguments[Nullable<List<String>>]");
44     }
45   }
46 }
47