@@ -2927,6 +2927,47 @@ def test_xtrim(self, r):
2927
2927
# 1 message is trimmed
2928
2928
assert r .xtrim (stream , 3 , approximate = False ) == 1
2929
2929
2930
+ @skip_if_server_version_lt ('6.2.4' )
2931
+ def test_xtrim_minlen_and_length_args (self , r ):
2932
+ stream = 'stream'
2933
+
2934
+ r .xadd (stream , {'foo' : 'bar' })
2935
+ r .xadd (stream , {'foo' : 'bar' })
2936
+ r .xadd (stream , {'foo' : 'bar' })
2937
+ r .xadd (stream , {'foo' : 'bar' })
2938
+
2939
+ # Future self: No limits without approximate, according to the api
2940
+ with pytest .raises (redis .ResponseError ):
2941
+ assert r .xtrim (stream , 3 , approximate = False , limit = 2 )
2942
+
2943
+ # maxlen with a limit
2944
+ assert r .xtrim (stream , 3 , approximate = True , limit = 2 ) == 0
2945
+ r .delete (stream )
2946
+
2947
+ with pytest .raises (redis .DataError ):
2948
+ assert r .xtrim (stream , maxlen = 3 , minid = "sometestvalue" )
2949
+
2950
+ # minid with a limit
2951
+ m1 = r .xadd (stream , {'foo' : 'bar' })
2952
+ r .xadd (stream , {'foo' : 'bar' })
2953
+ r .xadd (stream , {'foo' : 'bar' })
2954
+ r .xadd (stream , {'foo' : 'bar' })
2955
+ assert r .xtrim (stream , None , approximate = True , minid = m1 , limit = 3 ) == 0
2956
+
2957
+ # pure minid
2958
+ r .xadd (stream , {'foo' : 'bar' })
2959
+ r .xadd (stream , {'foo' : 'bar' })
2960
+ r .xadd (stream , {'foo' : 'bar' })
2961
+ m4 = r .xadd (stream , {'foo' : 'bar' })
2962
+ assert r .xtrim (stream , None , approximate = False , minid = m4 ) == 7
2963
+
2964
+ # minid approximate
2965
+ r .xadd (stream , {'foo' : 'bar' })
2966
+ r .xadd (stream , {'foo' : 'bar' })
2967
+ m3 = r .xadd (stream , {'foo' : 'bar' })
2968
+ r .xadd (stream , {'foo' : 'bar' })
2969
+ assert r .xtrim (stream , None , approximate = True , minid = m3 ) == 0
2970
+
2930
2971
def test_bitfield_operations (self , r ):
2931
2972
# comments show affected bits
2932
2973
bf = r .bitfield ('a' )
0 commit comments