undefect. CWE-407 — 63 sites patched across 27 ecosystems
Authors: russell@unturf.com · brackishbert@gmail.com · foxhop.net · TimeHexOn.com Patches, unit tests, benchmarks, whitepaper, and outreach briefs. Public domain — no copyright claimed. Use freely.
This commit is contained in:
commit
0a580b313d
70422 changed files with 17213626 additions and 0 deletions
124
test/jdk/com/sun/jdi/sde/MangleStepTest.java
Normal file
124
test/jdk/com/sun/jdi/sde/MangleStepTest.java
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
/**
|
||||
* @test
|
||||
* @bug 4390869
|
||||
* @bug 4460328
|
||||
* @summary Test Stepping in the new SourceDebugExtension facility
|
||||
* @author Robert Field
|
||||
*
|
||||
* @library ..
|
||||
*
|
||||
* @run build TestScaffold VMConnection TargetListener TargetAdapter InstallSDE
|
||||
* @run compile MangleStepTest.java
|
||||
* @run compile -g onion/pickle/Mangle.java
|
||||
* @run driver MangleStepTest unset
|
||||
* @run driver MangleStepTest Java
|
||||
* @run driver MangleStepTest XYZ
|
||||
* @run driver MangleStepTest Rats
|
||||
* @run driver MangleStepTest bogus
|
||||
*/
|
||||
import com.sun.jdi.*;
|
||||
import com.sun.jdi.event.*;
|
||||
import com.sun.jdi.request.*;
|
||||
|
||||
import java.util.*;
|
||||
import java.io.File;
|
||||
|
||||
public class MangleStepTest extends TestScaffold {
|
||||
static final String op = "onion" + File.separator + "pickle" + File.separator;
|
||||
ReferenceType targetClass;
|
||||
final String stratum;
|
||||
static boolean aTestFailed = false;
|
||||
|
||||
MangleStepTest (String stratum) {
|
||||
super(new String[0]);
|
||||
this.stratum = stratum;
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
testSetUp();
|
||||
new MangleStepTest(args[0]).startTests();
|
||||
if (aTestFailed) {
|
||||
throw new Exception("MangleStepTest: failed");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/********** test set-up **********/
|
||||
|
||||
static void testSetUp() throws Exception {
|
||||
InstallSDE.install(new File(System.getProperty("test.classes", "."),
|
||||
op + "Mangle.class"),
|
||||
new File(System.getProperty("test.src", "."),
|
||||
"Mangle.sde"));
|
||||
}
|
||||
|
||||
/********** test assist **********/
|
||||
|
||||
void lineMatch(Location loc, int javaLine, int defaultLine) {
|
||||
if (loc.lineNumber() != defaultLine) {
|
||||
failure("FAIL: at " + loc.lineNumber() +
|
||||
", expected " + defaultLine);
|
||||
} else {
|
||||
println("at: " + loc.lineNumber());
|
||||
}
|
||||
if (loc.lineNumber("Java") != javaLine) {
|
||||
failure("FAIL: at Java line " + loc.lineNumber("Java") +
|
||||
", expected " + javaLine);
|
||||
}
|
||||
}
|
||||
|
||||
/********** test core **********/
|
||||
|
||||
protected void runTests() throws Exception {
|
||||
/*
|
||||
* Get to the top of main()
|
||||
*/
|
||||
int[] lines;
|
||||
int[] jLines;
|
||||
String targetName = "onion.pickle.Mangle";
|
||||
startUp(targetName);
|
||||
if (!stratum.equals("unset")) {
|
||||
vm().setDefaultStratum(stratum);
|
||||
}
|
||||
BreakpointEvent bpe = resumeTo(targetName, "main",
|
||||
"([Ljava/lang/String;)V");
|
||||
|
||||
ThreadReference thread = bpe.thread();
|
||||
|
||||
if (stratum.equals("Java")) {
|
||||
lines = new int[] {4, 5, 6, 7, 8, 9};
|
||||
jLines = new int[] {4, 5, 6, 7, 8, 9};
|
||||
} else if (stratum.equals("Rats")) {
|
||||
lines = new int[] {1000, 1111, 1112};
|
||||
jLines = new int[] {4, 5, 7};
|
||||
} else { /* XYZ (the class default) */
|
||||
lines = new int[] {200, 210, 217, 218};
|
||||
jLines = new int[] {4, 7, 8, 9};
|
||||
}
|
||||
|
||||
println("Testing stratum: " + stratum);
|
||||
|
||||
lineMatch(bpe.location(), jLines[0], lines[0]);
|
||||
|
||||
for (int i = 1; i < lines.length; ++i) {
|
||||
StepEvent se = stepOverLine(thread);
|
||||
lineMatch(se.location(), jLines[i], lines[i]);
|
||||
}
|
||||
|
||||
/*
|
||||
* resume the target to completion
|
||||
*/
|
||||
listenUntilVMDisconnect();
|
||||
|
||||
/*
|
||||
* deal with results of test
|
||||
* if anything has called failure("foo") testFailed will be true
|
||||
*/
|
||||
if (!testFailed) {
|
||||
println("MangleStepTest (" + stratum + "): passed");
|
||||
} else {
|
||||
println("MangleStepTest (" + stratum + "): failed");
|
||||
aTestFailed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue