@@ -804,13 +804,25 @@ impl KeyManager {
804
804
805
805
#[ cfg( test) ]
806
806
mod tests {
807
+ use std:: sync:: atomic;
807
808
use std:: thread;
808
809
809
810
use super :: * ;
810
811
812
+ // For testing, each test gets a new keyring attached to the Thread keyring.
813
+ // This makes sure tests don't interfere with eachother, and keys are not
814
+ // prematurely garbage collected.
815
+ fn new_test_keyring ( ) -> Result < Keyring > {
816
+ let mut thread_keyring = Keyring :: attach_or_create ( SpecialKeyring :: Thread ) ?;
817
+
818
+ static KEYRING_COUNT : atomic:: AtomicUsize = atomic:: AtomicUsize :: new ( 0 ) ;
819
+ let num = KEYRING_COUNT . fetch_add ( 1 , atomic:: Ordering :: SeqCst ) ;
820
+ thread_keyring. add_keyring ( format ! ( "test:rust-keyutils{}" , num) )
821
+ }
822
+
811
823
#[ test]
812
824
fn test_add_key ( ) {
813
- let mut keyring = Keyring :: attach_or_create ( SpecialKeyring :: Thread ) . unwrap ( ) ;
825
+ let mut keyring = new_test_keyring ( ) . unwrap ( ) ;
814
826
815
827
// Create the key.
816
828
let description = "test:rust-keyutils:add_key" ;
@@ -830,7 +842,7 @@ mod tests {
830
842
831
843
#[ test]
832
844
fn test_clear_keyring ( ) {
833
- let mut keyring = Keyring :: attach_or_create ( SpecialKeyring :: Thread ) . unwrap ( ) ;
845
+ let mut keyring = new_test_keyring ( ) . unwrap ( ) ;
834
846
835
847
let ( keys, keyrings) = keyring. read ( ) . unwrap ( ) ;
836
848
assert_eq ! ( keys. len( ) , 0 ) ;
@@ -862,7 +874,7 @@ mod tests {
862
874
863
875
#[ test]
864
876
fn test_describe_key ( ) {
865
- let mut keyring = Keyring :: attach_or_create ( SpecialKeyring :: Thread ) . unwrap ( ) ;
877
+ let mut keyring = new_test_keyring ( ) . unwrap ( ) ;
866
878
867
879
// Create the key.
868
880
let desc = "test:rust-keyutils:describe_key" ;
@@ -883,7 +895,7 @@ mod tests {
883
895
884
896
#[ test]
885
897
fn test_invalidate_key ( ) {
886
- let mut keyring = Keyring :: attach_or_create ( SpecialKeyring :: Thread ) . unwrap ( ) ;
898
+ let mut keyring = new_test_keyring ( ) . unwrap ( ) ;
887
899
888
900
// Create the key.
889
901
let description = "test:rust-keyutils:invalidate_key" ;
@@ -903,7 +915,7 @@ mod tests {
903
915
904
916
#[ test]
905
917
fn test_link_key ( ) {
906
- let mut keyring = Keyring :: attach_or_create ( SpecialKeyring :: Thread ) . unwrap ( ) ;
918
+ let mut keyring = new_test_keyring ( ) . unwrap ( ) ;
907
919
let mut new_keyring = keyring. add_keyring ( "new_keyring" ) . unwrap ( ) ;
908
920
909
921
// Create the key.
@@ -928,7 +940,7 @@ mod tests {
928
940
929
941
#[ test]
930
942
fn test_link_keyring ( ) {
931
- let mut keyring = Keyring :: attach_or_create ( SpecialKeyring :: Thread ) . unwrap ( ) ;
943
+ let mut keyring = new_test_keyring ( ) . unwrap ( ) ;
932
944
let mut new_keyring = keyring. add_keyring ( "new_keyring" ) . unwrap ( ) ;
933
945
let new_inner_keyring = keyring. add_keyring ( "new_inner_keyring" ) . unwrap ( ) ;
934
946
@@ -947,7 +959,7 @@ mod tests {
947
959
948
960
#[ test]
949
961
fn test_read_keyring ( ) {
950
- let mut keyring = Keyring :: attach_or_create ( SpecialKeyring :: Thread ) . unwrap ( ) ;
962
+ let mut keyring = new_test_keyring ( ) . unwrap ( ) ;
951
963
952
964
let ( keys, keyrings) = keyring. read ( ) . unwrap ( ) ;
953
965
assert_eq ! ( keys. len( ) , 0 ) ;
@@ -972,7 +984,7 @@ mod tests {
972
984
973
985
#[ test]
974
986
fn test_read_key ( ) {
975
- let mut keyring = Keyring :: attach_or_create ( SpecialKeyring :: Thread ) . unwrap ( ) ;
987
+ let mut keyring = new_test_keyring ( ) . unwrap ( ) ;
976
988
977
989
// Create the key.
978
990
let description = "test:rust-keyutils:read_key" ;
@@ -992,7 +1004,7 @@ mod tests {
992
1004
993
1005
#[ test]
994
1006
fn test_create_keyring ( ) {
995
- let mut keyring = Keyring :: attach_or_create ( SpecialKeyring :: Thread ) . unwrap ( ) ;
1007
+ let mut keyring = new_test_keyring ( ) . unwrap ( ) ;
996
1008
let new_keyring = keyring. add_keyring ( "new_keyring" ) . unwrap ( ) ;
997
1009
998
1010
let ( keys, keyrings) = keyring. read ( ) . unwrap ( ) ;
@@ -1007,7 +1019,7 @@ mod tests {
1007
1019
1008
1020
#[ test]
1009
1021
fn test_chmod_keyring ( ) {
1010
- let mut keyring = Keyring :: attach_or_create ( SpecialKeyring :: Thread ) . unwrap ( ) ;
1022
+ let mut keyring = new_test_keyring ( ) . unwrap ( ) ;
1011
1023
let description = keyring. description ( ) . unwrap ( ) ;
1012
1024
let perms = description. perms ;
1013
1025
let new_perms = {
@@ -1033,7 +1045,7 @@ mod tests {
1033
1045
1034
1046
#[ test]
1035
1047
fn test_request_key ( ) {
1036
- let mut keyring = Keyring :: attach_or_create ( SpecialKeyring :: Thread ) . unwrap ( ) ;
1048
+ let mut keyring = new_test_keyring ( ) . unwrap ( ) ;
1037
1049
1038
1050
// Create the key.
1039
1051
let description = "test:rust-keyutils:request_key" ;
@@ -1054,7 +1066,7 @@ mod tests {
1054
1066
1055
1067
#[ test]
1056
1068
fn test_revoke_key ( ) {
1057
- let mut keyring = Keyring :: attach_or_create ( SpecialKeyring :: Thread ) . unwrap ( ) ;
1069
+ let mut keyring = new_test_keyring ( ) . unwrap ( ) ;
1058
1070
1059
1071
// Create the key.
1060
1072
let description = "test:rust-keyutils:revoke_key" ;
@@ -1076,7 +1088,7 @@ mod tests {
1076
1088
1077
1089
#[ test]
1078
1090
fn test_search_key ( ) {
1079
- let mut keyring = Keyring :: attach_or_create ( SpecialKeyring :: Thread ) . unwrap ( ) ;
1091
+ let mut keyring = new_test_keyring ( ) . unwrap ( ) ;
1080
1092
let mut new_keyring = keyring. add_keyring ( "new_keyring" ) . unwrap ( ) ;
1081
1093
let mut new_inner_keyring = new_keyring. add_keyring ( "new_inner_keyring" ) . unwrap ( ) ;
1082
1094
@@ -1101,7 +1113,7 @@ mod tests {
1101
1113
1102
1114
#[ test]
1103
1115
fn test_search_keyring ( ) {
1104
- let mut keyring = Keyring :: attach_or_create ( SpecialKeyring :: Thread ) . unwrap ( ) ;
1116
+ let mut keyring = new_test_keyring ( ) . unwrap ( ) ;
1105
1117
let mut new_keyring = keyring. add_keyring ( "new_keyring" ) . unwrap ( ) ;
1106
1118
let new_inner_keyring = new_keyring. add_keyring ( "new_inner_keyring" ) . unwrap ( ) ;
1107
1119
@@ -1116,7 +1128,7 @@ mod tests {
1116
1128
1117
1129
#[ test]
1118
1130
fn test_key_timeout ( ) {
1119
- let mut keyring = Keyring :: attach_or_create ( SpecialKeyring :: Thread ) . unwrap ( ) ;
1131
+ let mut keyring = new_test_keyring ( ) . unwrap ( ) ;
1120
1132
1121
1133
// Create the key.
1122
1134
let description = "test:rust-keyutils:key_timeout" ;
@@ -1144,7 +1156,7 @@ mod tests {
1144
1156
1145
1157
#[ test]
1146
1158
fn test_unlink_keyring ( ) {
1147
- let mut keyring = Keyring :: attach_or_create ( SpecialKeyring :: Thread ) . unwrap ( ) ;
1159
+ let mut keyring = new_test_keyring ( ) . unwrap ( ) ;
1148
1160
1149
1161
// Create the keyring.
1150
1162
let description = "test:rust-keyutils:unlink_keyring" ;
@@ -1171,7 +1183,7 @@ mod tests {
1171
1183
1172
1184
#[ test]
1173
1185
fn test_unlink_key ( ) {
1174
- let mut keyring = Keyring :: attach_or_create ( SpecialKeyring :: Thread ) . unwrap ( ) ;
1186
+ let mut keyring = new_test_keyring ( ) . unwrap ( ) ;
1175
1187
1176
1188
// Create the key.
1177
1189
let description = "test:rust-keyutils:unlink_key" ;
@@ -1201,7 +1213,7 @@ mod tests {
1201
1213
1202
1214
#[ test]
1203
1215
fn test_update_key ( ) {
1204
- let mut keyring = Keyring :: attach_or_create ( SpecialKeyring :: Thread ) . unwrap ( ) ;
1216
+ let mut keyring = new_test_keyring ( ) . unwrap ( ) ;
1205
1217
1206
1218
// Create the key.
1207
1219
let description = "test:rust-keyutils:update_key" ;
0 commit comments