@@ -75,13 +75,48 @@ public void pinTest() {
75
75
List <Multihash > add2 = ipfs .pin .add (hash );
76
76
// adding something already pinned should succeed
77
77
List <Multihash > add3 = ipfs .pin .add (hash );
78
- Map <Multihash , Object > ls = ipfs .pin .ls ();
78
+ Map <Multihash , Object > ls = ipfs .pin .ls (IPFS .PinType .recursive );
79
+ ipfs .repo .gc ();
80
+ // object should still be present after gc
81
+ Map <Multihash , Object > ls2 = ipfs .pin .ls (IPFS .PinType .recursive );
82
+ boolean stillPinned = ls2 .containsKey (hash );
79
83
System .out .println (ls );
80
84
} catch (IOException e ) {
81
85
throw new RuntimeException (e );
82
86
}
83
87
}
84
88
89
+ @ org .junit .Test
90
+ public void indirectPinTest () {
91
+ try {
92
+ Multihash EMPTY = ipfs .object ._new (Optional .empty ()).hash ;
93
+ org .ipfs .api .MerkleNode data = ipfs .object .patch (EMPTY , "set-data" , Optional .of ("childdata" .getBytes ()), Optional .empty (), Optional .empty ());
94
+ Multihash child = data .hash ;
95
+
96
+ org .ipfs .api .MerkleNode tmp1 = ipfs .object .patch (EMPTY , "set-data" , Optional .of ("parent1_data" .getBytes ()), Optional .empty (), Optional .empty ());
97
+ Multihash parent1 = ipfs .object .patch (tmp1 .hash , "add-link" , Optional .empty (), Optional .of (child .toString ()), Optional .of (child )).hash ;
98
+ ipfs .pin .add (parent1 );
99
+
100
+ org .ipfs .api .MerkleNode tmp2 = ipfs .object .patch (EMPTY , "set-data" , Optional .of ("parent2_data" .getBytes ()), Optional .empty (), Optional .empty ());
101
+ Multihash parent2 = ipfs .object .patch (tmp2 .hash , "add-link" , Optional .empty (), Optional .of (child .toString ()), Optional .of (child )).hash ;
102
+ ipfs .pin .add (parent2 );
103
+ ipfs .pin .rm (parent1 , true );
104
+
105
+ Map <Multihash , Object > ls = ipfs .pin .ls (IPFS .PinType .all );
106
+ boolean childPresent = ls .containsKey (child );
107
+ if (!childPresent )
108
+ throw new IllegalStateException ("Child not present!" );
109
+
110
+ ipfs .repo .gc ();
111
+ Map <Multihash , Object > ls2 = ipfs .pin .ls (IPFS .PinType .all );
112
+ boolean childPresentAfterGC = ls2 .containsKey (child );
113
+ if (!childPresentAfterGC )
114
+ throw new IllegalStateException ("Child not present!" );
115
+ } catch (IOException e ) {
116
+ throw new RuntimeException (e );
117
+ }
118
+ }
119
+
85
120
@ org .junit .Test
86
121
public void objectPatch () {
87
122
try {
0 commit comments