Skip to content

Commit 4a4cfb5

Browse files
authored
Merge pull request #27 from josephlr/test
Have each test use its own keyring
2 parents 11092fe + 02c3f9f commit 4a4cfb5

File tree

1 file changed

+30
-18
lines changed

1 file changed

+30
-18
lines changed

src/api.rs

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -804,13 +804,25 @@ impl KeyManager {
804804

805805
#[cfg(test)]
806806
mod tests {
807+
use std::sync::atomic;
807808
use std::thread;
808809

809810
use super::*;
810811

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+
811823
#[test]
812824
fn test_add_key() {
813-
let mut keyring = Keyring::attach_or_create(SpecialKeyring::Thread).unwrap();
825+
let mut keyring = new_test_keyring().unwrap();
814826

815827
// Create the key.
816828
let description = "test:rust-keyutils:add_key";
@@ -830,7 +842,7 @@ mod tests {
830842

831843
#[test]
832844
fn test_clear_keyring() {
833-
let mut keyring = Keyring::attach_or_create(SpecialKeyring::Thread).unwrap();
845+
let mut keyring = new_test_keyring().unwrap();
834846

835847
let (keys, keyrings) = keyring.read().unwrap();
836848
assert_eq!(keys.len(), 0);
@@ -862,7 +874,7 @@ mod tests {
862874

863875
#[test]
864876
fn test_describe_key() {
865-
let mut keyring = Keyring::attach_or_create(SpecialKeyring::Thread).unwrap();
877+
let mut keyring = new_test_keyring().unwrap();
866878

867879
// Create the key.
868880
let desc = "test:rust-keyutils:describe_key";
@@ -883,7 +895,7 @@ mod tests {
883895

884896
#[test]
885897
fn test_invalidate_key() {
886-
let mut keyring = Keyring::attach_or_create(SpecialKeyring::Thread).unwrap();
898+
let mut keyring = new_test_keyring().unwrap();
887899

888900
// Create the key.
889901
let description = "test:rust-keyutils:invalidate_key";
@@ -903,7 +915,7 @@ mod tests {
903915

904916
#[test]
905917
fn test_link_key() {
906-
let mut keyring = Keyring::attach_or_create(SpecialKeyring::Thread).unwrap();
918+
let mut keyring = new_test_keyring().unwrap();
907919
let mut new_keyring = keyring.add_keyring("new_keyring").unwrap();
908920

909921
// Create the key.
@@ -928,7 +940,7 @@ mod tests {
928940

929941
#[test]
930942
fn test_link_keyring() {
931-
let mut keyring = Keyring::attach_or_create(SpecialKeyring::Thread).unwrap();
943+
let mut keyring = new_test_keyring().unwrap();
932944
let mut new_keyring = keyring.add_keyring("new_keyring").unwrap();
933945
let new_inner_keyring = keyring.add_keyring("new_inner_keyring").unwrap();
934946

@@ -947,7 +959,7 @@ mod tests {
947959

948960
#[test]
949961
fn test_read_keyring() {
950-
let mut keyring = Keyring::attach_or_create(SpecialKeyring::Thread).unwrap();
962+
let mut keyring = new_test_keyring().unwrap();
951963

952964
let (keys, keyrings) = keyring.read().unwrap();
953965
assert_eq!(keys.len(), 0);
@@ -972,7 +984,7 @@ mod tests {
972984

973985
#[test]
974986
fn test_read_key() {
975-
let mut keyring = Keyring::attach_or_create(SpecialKeyring::Thread).unwrap();
987+
let mut keyring = new_test_keyring().unwrap();
976988

977989
// Create the key.
978990
let description = "test:rust-keyutils:read_key";
@@ -992,7 +1004,7 @@ mod tests {
9921004

9931005
#[test]
9941006
fn test_create_keyring() {
995-
let mut keyring = Keyring::attach_or_create(SpecialKeyring::Thread).unwrap();
1007+
let mut keyring = new_test_keyring().unwrap();
9961008
let new_keyring = keyring.add_keyring("new_keyring").unwrap();
9971009

9981010
let (keys, keyrings) = keyring.read().unwrap();
@@ -1007,7 +1019,7 @@ mod tests {
10071019

10081020
#[test]
10091021
fn test_chmod_keyring() {
1010-
let mut keyring = Keyring::attach_or_create(SpecialKeyring::Thread).unwrap();
1022+
let mut keyring = new_test_keyring().unwrap();
10111023
let description = keyring.description().unwrap();
10121024
let perms = description.perms;
10131025
let new_perms = {
@@ -1033,7 +1045,7 @@ mod tests {
10331045

10341046
#[test]
10351047
fn test_request_key() {
1036-
let mut keyring = Keyring::attach_or_create(SpecialKeyring::Thread).unwrap();
1048+
let mut keyring = new_test_keyring().unwrap();
10371049

10381050
// Create the key.
10391051
let description = "test:rust-keyutils:request_key";
@@ -1054,7 +1066,7 @@ mod tests {
10541066

10551067
#[test]
10561068
fn test_revoke_key() {
1057-
let mut keyring = Keyring::attach_or_create(SpecialKeyring::Thread).unwrap();
1069+
let mut keyring = new_test_keyring().unwrap();
10581070

10591071
// Create the key.
10601072
let description = "test:rust-keyutils:revoke_key";
@@ -1076,7 +1088,7 @@ mod tests {
10761088

10771089
#[test]
10781090
fn test_search_key() {
1079-
let mut keyring = Keyring::attach_or_create(SpecialKeyring::Thread).unwrap();
1091+
let mut keyring = new_test_keyring().unwrap();
10801092
let mut new_keyring = keyring.add_keyring("new_keyring").unwrap();
10811093
let mut new_inner_keyring = new_keyring.add_keyring("new_inner_keyring").unwrap();
10821094

@@ -1101,7 +1113,7 @@ mod tests {
11011113

11021114
#[test]
11031115
fn test_search_keyring() {
1104-
let mut keyring = Keyring::attach_or_create(SpecialKeyring::Thread).unwrap();
1116+
let mut keyring = new_test_keyring().unwrap();
11051117
let mut new_keyring = keyring.add_keyring("new_keyring").unwrap();
11061118
let new_inner_keyring = new_keyring.add_keyring("new_inner_keyring").unwrap();
11071119

@@ -1116,7 +1128,7 @@ mod tests {
11161128

11171129
#[test]
11181130
fn test_key_timeout() {
1119-
let mut keyring = Keyring::attach_or_create(SpecialKeyring::Thread).unwrap();
1131+
let mut keyring = new_test_keyring().unwrap();
11201132

11211133
// Create the key.
11221134
let description = "test:rust-keyutils:key_timeout";
@@ -1144,7 +1156,7 @@ mod tests {
11441156

11451157
#[test]
11461158
fn test_unlink_keyring() {
1147-
let mut keyring = Keyring::attach_or_create(SpecialKeyring::Thread).unwrap();
1159+
let mut keyring = new_test_keyring().unwrap();
11481160

11491161
// Create the keyring.
11501162
let description = "test:rust-keyutils:unlink_keyring";
@@ -1171,7 +1183,7 @@ mod tests {
11711183

11721184
#[test]
11731185
fn test_unlink_key() {
1174-
let mut keyring = Keyring::attach_or_create(SpecialKeyring::Thread).unwrap();
1186+
let mut keyring = new_test_keyring().unwrap();
11751187

11761188
// Create the key.
11771189
let description = "test:rust-keyutils:unlink_key";
@@ -1201,7 +1213,7 @@ mod tests {
12011213

12021214
#[test]
12031215
fn test_update_key() {
1204-
let mut keyring = Keyring::attach_or_create(SpecialKeyring::Thread).unwrap();
1216+
let mut keyring = new_test_keyring().unwrap();
12051217

12061218
// Create the key.
12071219
let description = "test:rust-keyutils:update_key";

0 commit comments

Comments
 (0)