diff options
author | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2014-07-07 22:31:00 +0200 |
---|---|---|
committer | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2014-07-07 22:31:00 +0200 |
commit | d488b0a4ac03db5b8f6611d7aaf395de7660fe54 (patch) | |
tree | 1c71238c33633b616a3595f6640e95ecf495e24d | |
parent | e7528a5ad032bd8e062e983ff4cefac705c672ea (diff) | |
parent | 74a79501bb14df8b92ed373b88c638f2b20e86d3 (diff) | |
download | jacoco-d488b0a4ac03db5b8f6611d7aaf395de7660fe54.tar.gz |
Merge pull request #225 from jacoco/issue-225
The class dumped by jacocoagent with same name will be replaced
3 files changed, 10 insertions, 4 deletions
diff --git a/org.jacoco.agent.rt.test/src/org/jacoco/agent/rt/internal/ClassFileDumperTest.java b/org.jacoco.agent.rt.test/src/org/jacoco/agent/rt/internal/ClassFileDumperTest.java index 50b68e10..0ce3c7e3 100644 --- a/org.jacoco.agent.rt.test/src/org/jacoco/agent/rt/internal/ClassFileDumperTest.java +++ b/org.jacoco.agent.rt.test/src/org/jacoco/agent/rt/internal/ClassFileDumperTest.java @@ -19,7 +19,6 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -import org.jacoco.agent.rt.internal.ClassFileDumper; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -45,7 +44,8 @@ public class ClassFileDumperTest { final File location = new File(folder.getRoot(), "classes"); final ClassFileDumper dumper = new ClassFileDumper(location.toString()); dumper.dump("org/jacoco/examples/Foo$Inner", contents); - assertContents(location, "org/jacoco/examples/Foo$Inner.class"); + assertContents(location, + "org/jacoco/examples/Foo$Inner.aff06045a340cd62.class"); } @Test @@ -53,7 +53,7 @@ public class ClassFileDumperTest { final File location = new File(folder.getRoot(), "classes"); final ClassFileDumper dumper = new ClassFileDumper(location.toString()); dumper.dump("Main", contents); - assertContents(location, "Main.class"); + assertContents(location, "Main.aff06045a340cd62.class"); } @Test diff --git a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/ClassFileDumper.java b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/ClassFileDumper.java index 84ac5d4c..4da99b7e 100644 --- a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/ClassFileDumper.java +++ b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/ClassFileDumper.java @@ -16,6 +16,8 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; +import org.jacoco.core.internal.data.CRC64; + /** * Internal dumper for class files. */ @@ -62,7 +64,9 @@ class ClassFileDumper { localname = name; } outputdir.mkdirs(); - final File file = new File(outputdir, localname + ".class"); + final Long id = Long.valueOf(CRC64.checksum(contents)); + final File file = new File(outputdir, String.format( + "%s.%016x.class", localname, id)); final OutputStream out = new FileOutputStream(file); out.write(contents); out.close(); diff --git a/org.jacoco.doc/docroot/doc/changes.html b/org.jacoco.doc/docroot/doc/changes.html index 8a93d2d9..79e2521c 100644 --- a/org.jacoco.doc/docroot/doc/changes.html +++ b/org.jacoco.doc/docroot/doc/changes.html @@ -26,6 +26,8 @@ <code>inclbootstrapclasses</code> to also instrument classes from the bootstrap class loader. (GitHub <a href="https://github.com/jacoco/jacoco/issues/49">#49</a>).</li> + <li>Agent uses unique file names to dump class files. + (GitHub <a href="https://github.com/jacoco/jacoco/issues/225">#225</a>).</li> </ul> <h2>Release 0.7.1 (2014/05/08)</h2> |