@@ -6,35 +6,35 @@ module Smithy
66 module Client
77 describe Features do
88 it 'tracks and removes a feature' do
9- Features . track ( 'A' ) { expect ( Features . tracked ) . to eq ( %w[ A ] ) }
9+ Features . track ( 'A' ) { expect ( Features . tracked ) . to eq ( %w[ A ] . to_set ) }
1010 expect ( Features . tracked ) . to be_empty
1111 end
1212
1313 it 'tracks and removes multiple features' do
14- features = %w[ A B C ]
14+ features = %w[ A B C ] . to_set
1515 Features . track ( *features ) { expect ( Features . tracked ) . to eq ( features ) }
1616 expect ( Features . tracked ) . to be_empty
1717 end
1818
1919 it 'tracks and removes features in stack order' do
2020 Features . track ( 'A' ) do
21- expect ( Features . tracked ) . to eq ( %w[ A ] )
21+ expect ( Features . tracked ) . to eq ( %w[ A ] . to_set )
2222 Features . track ( 'B' ) do
23- expect ( Features . tracked ) . to eq ( %w[ A B ] )
23+ expect ( Features . tracked ) . to eq ( %w[ A B ] . to_set )
2424 Features . track ( 'C' ) do
25- expect ( Features . tracked ) . to eq ( %w[ A B C ] )
25+ expect ( Features . tracked ) . to eq ( %w[ A B C ] . to_set )
2626 end
27- expect ( Features . tracked ) . to eq ( %w[ A B ] )
27+ expect ( Features . tracked ) . to eq ( %w[ A B ] . to_set )
2828 end
29- expect ( Features . tracked ) . to eq ( %w[ A ] )
29+ expect ( Features . tracked ) . to eq ( %w[ A ] . to_set )
3030 end
3131 expect ( Features . tracked ) . to be_empty
3232 end
3333
3434 it 'ensures that features are removed' do
3535 begin
3636 Features . track ( 'A' ) do
37- expect ( Features . tracked ) . to eq ( %w[ A ] )
37+ expect ( Features . tracked ) . to eq ( %w[ A ] . to_set )
3838 raise StandardError
3939 end
4040 rescue StandardError
@@ -45,15 +45,30 @@ module Client
4545
4646 it 'tracks features in multiple threads' do
4747 Features . track ( 'A' ) do
48- expect ( Features . tracked ) . to eq ( %w[ A ] )
48+ expect ( Features . tracked ) . to eq ( %w[ A ] . to_set )
4949 Thread . new do
5050 expect ( Features . tracked ) . to be_empty
5151 Features . track ( 'B' ) do
52- expect ( Features . tracked ) . to eq ( %w[ B ] )
52+ expect ( Features . tracked ) . to eq ( %w[ B ] . to_set )
5353 end
5454 expect ( Features . tracked ) . to be_empty
5555 end . join
56- expect ( Features . tracked ) . to eq ( %w[ A ] )
56+ expect ( Features . tracked ) . to eq ( %w[ A ] . to_set )
57+ end
58+ expect ( Features . tracked ) . to be_empty
59+ end
60+
61+ it 'does not track duplicate features' do
62+ Features . track ( 'A' ) do
63+ expect ( Features . tracked ) . to eq ( %w[ A ] . to_set )
64+ Features . track ( 'B' ) do
65+ expect ( Features . tracked ) . to eq ( %w[ A B ] . to_set )
66+ Features . track ( 'A' ) do
67+ expect ( Features . tracked ) . to eq ( %w[ A B ] . to_set )
68+ end
69+ expect ( Features . tracked ) . to eq ( %w[ A B ] . to_set )
70+ end
71+ expect ( Features . tracked ) . to eq ( %w[ A ] . to_set )
5772 end
5873 expect ( Features . tracked ) . to be_empty
5974 end
0 commit comments