1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.graph;
20
21 import java.util.concurrent.atomic.AtomicReference;
22
23 import org.eclipse.aether.artifact.DefaultArtifact;
24 import org.junit.jupiter.api.Test;
25
26 import static org.junit.jupiter.api.Assertions.assertTrue;
27 import static org.junit.jupiter.api.Assertions.fail;
28
29
30
31 public class DefaultDependencyNodeTest {
32 @Test
33 void testVisitorInterrupt() throws Exception {
34 DefaultDependencyNode node =
35 new DefaultDependencyNode(new Dependency(new DefaultArtifact("gid:aid:ver"), "compile"));
36
37 DependencyVisitor visitor = new DependencyVisitor() {
38 @Override
39 public boolean visitEnter(DependencyNode node) {
40 return true;
41 }
42
43 @Override
44 public boolean visitLeave(DependencyNode node) {
45 return true;
46 }
47 };
48 AtomicReference<Exception> thrown = new AtomicReference<>(null);
49 Thread t = new Thread(() -> {
50 Thread.currentThread().interrupt();
51 try {
52 node.accept(visitor);
53 fail("Should fail");
54 } catch (Exception e) {
55 thrown.set(e);
56 }
57 });
58 t.start();
59 t.join();
60
61 assertTrue(thrown.get() instanceof RuntimeException, String.valueOf(thrown.get()));
62 assertTrue(thrown.get().getCause() instanceof InterruptedException, String.valueOf(thrown.get()));
63 assertTrue(t.isInterrupted());
64 }
65 }