sqlite> SELECT
t1.provider AS provider1,
t2.provider AS provider2,
t1.groupId,
t1.artifactId,
t1.version,
t1.test,
count(*) AS nMethodsCoveredByProvider1Only
FROM tests t1
JOIN tests t2 ON (t2.groupId, t2.artifactId, t2.version, t2.test) = (t1.groupId, t1.artifactId, t1.version, t1.test)
JOIN covered_methods cm1 ON (cm1.provider, cm1.groupId, cm1.artifactId, cm1.version, cm1.test) = (t1.provider, t1.groupId, t1.artifactId, t1.version, t1.test)
WHERE t1.provider <> t2.provider
AND NOT EXISTS (
SELECT 1 FROM covered_methods cm2
WHERE (cm2.provider, cm2.groupId, cm2.artifactId, cm2.version, cm2.test, cm2.package, cm2.class, cm2.method, cm2.descriptor) = (t2.provider, cm1.groupId, cm1.artifactId, cm1.version, cm1.test, cm1.package, cm1.class, cm1.method, cm1.descriptor)
)
GROUP BY 1, 2, 3, 4, 5, 6
ORDER BY 1, 2, 3, 4, 5, 6
;
┌───────────┬───────────┬────────────────────┬────────────────────────┬───────────────┬─────────────────────────────────────────────────────────────────┬────────────────────────────────┐
│ provider1 │ provider2 │ groupId │ artifactId │ version │ test │ nMethodsCoveredByProvider1Only │
├───────────┼───────────┼────────────────────┼────────────────────────┼───────────────┼─────────────────────────────────────────────────────────────────┼────────────────────────────────┤
│ gaoss │ mvnc │ com/google/guava │ guava │ 31.0.1-jre │ com.google.common.collect.Sets_ESTest │ 1 │
│ gaoss │ mvnc │ com/google/guava │ guava │ 31.0.1-jre │ com.google.common.reflect.ClassPath_ESTest │ 1 │
│ gaoss │ mvnc │ com/google/guava │ guava │ 31.0.1-jre │ com.google.common.util.concurrent.AbstractCatchingFuture_ESTest │ 11 │
│ gaoss │ mvnc │ com/google/guava │ guava │ 31.0.1-jre │ com.google.common.util.concurrent.AbstractFuture_ESTest │ 6 │
│ gaoss │ mvnc │ com/google/guava │ guava │ 31.0.1-jre │ com.google.common.util.concurrent.AggregateFuture_ESTest │ 10 │
│ gaoss │ mvnc │ com/google/guava │ guava │ 31.0.1-jre │ com.google.common.util.concurrent.ExecutionSequencer_ESTest │ 21 │
│ gaoss │ mvnc │ com/google/guava │ guava │ 31.0.1-jre │ com.google.common.util.concurrent.Futures_ESTest │ 5 │
│ gaoss │ mvnc │ io/netty │ netty-buffer │ 4.1.102.Final │ io.netty.buffer.AbstractByteBufAllocator_ESTest │ 1 │
│ mvnc │ gaoss │ com/google/guava │ guava │ 31.0.1-jre │ com.google.common.util.concurrent.AggregateFuture_ESTest │ 6 │
│ mvnc │ gaoss │ com/google/guava │ guava │ 31.0.1-jre │ com.google.common.util.concurrent.Futures_ESTest │ 2 │
│ mvnc │ gaoss │ commons-io │ commons-io │ 2.15.0 │ org.apache.commons.io.filefilter.NotFileFilter_ESTest │ 3 │
│ mvnc │ gaoss │ commons-io │ commons-io │ 2.15.0 │ org.apache.commons.io.monitor.FileAlterationObserver_ESTest │ 5 │
│ mvnc │ gaoss │ io/undertow │ undertow-servlet │ 2.2.23.Final │ io.undertow.servlet.spec.UpgradeServletInputStream_ESTest │ 3 │
│ mvnc │ gaoss │ io/undertow │ undertow-servlet │ 2.2.24.Final │ io.undertow.servlet.spec.UpgradeServletInputStream_ESTest │ 13 │
│ mvnc │ gaoss │ io/undertow │ undertow-servlet │ 2.2.25.Final │ io.undertow.servlet.spec.UpgradeServletInputStream_ESTest │ 4 │
│ mvnc │ gaoss │ io/undertow │ undertow-servlet │ 2.2.26.Final │ io.undertow.servlet.spec.UpgradeServletInputStream_ESTest │ 3 │
│ mvnc │ gaoss │ io/undertow │ undertow-servlet │ 2.2.28.Final │ io.undertow.servlet.spec.UpgradeServletInputStream_ESTest │ 4 │
│ mvnc │ gaoss │ io/undertow │ undertow-servlet │ 2.2.28.Final │ io.undertow.servlet.spec.UpgradeServletOutputStream_ESTest │ 1 │
│ mvnc │ gaoss │ io/undertow │ undertow-servlet │ 2.2.31.Final │ io.undertow.servlet.spec.UpgradeServletInputStream_ESTest │ 4 │
│ mvnc │ gaoss │ io/undertow │ undertow-servlet │ 2.2.32.Final │ io.undertow.servlet.spec.UpgradeServletInputStream_ESTest │ 3 │
│ mvnc │ gaoss │ org/apache/commons │ commons-configuration2 │ 2.7 │ org.apache.commons.configuration2.DataConfiguration_ESTest │ 1 │
│ mvnc │ obfs │ commons-io │ commons-io │ 2.15.0 │ org.apache.commons.io.filefilter.NotFileFilter_ESTest │ 3 │
│ mvnc │ obfs │ commons-io │ commons-io │ 2.15.0 │ org.apache.commons.io.monitor.FileAlterationObserver_ESTest │ 5 │
└───────────┴───────────┴────────────────────┴────────────────────────┴───────────────┴─────────────────────────────────────────────────────────────────┴────────────────────────────────┘
sqlite>
Investigate them in more detail.
Since #41, we can easily count the methods that JaCoCo says are covered by one provider's tests, but not another's:
Investigate them in more detail.