@@ -45,7 +45,7 @@ final class BacktraceBreadcrumbTests: QuickSpec {
4545 }
4646 }
4747 context ( " when constructed " ) {
48- it ( " Clear clears the file" ) {
48+ it ( " Clears the file" ) {
4949 expect { manager? . addBreadcrumb ( " this is a Breadcrumb " ,
5050 attributes: nil ,
5151 type: BacktraceBreadcrumbType . system,
@@ -151,6 +151,37 @@ final class BacktraceBreadcrumbTests: QuickSpec {
151151 }
152152 }
153153 context ( " rollover and async tests " ) {
154+ it ( " should remove old breadcrumb and add a new one " ) {
155+ let settings = BacktraceBreadcrumbSettings ( )
156+ let maximumNumberOfBreadcrumbs = 4
157+ let breadcrumbMessage = " this is test "
158+ let breadcrumbLevel = BacktraceBreadcrumbLevel . debug
159+ let breadcrumbType = BacktraceBreadcrumbType . log
160+ let breadcrumb : [ String : Any ] = [ " timestamp " : Date ( ) . millisecondsSince1970,
161+ " id " : 1 ,
162+ " level " : breadcrumbLevel. description,
163+ " type " : breadcrumbType. description,
164+ " message " : breadcrumbMessage]
165+
166+ let breadcrumbJsonData = try JSONSerialization . data ( withJSONObject: breadcrumb)
167+ let breadcrumbJsonString = String ( data: breadcrumbJsonData, encoding: . utf8)
168+ let breadcrumbSize = breadcrumbJsonString!. count
169+
170+
171+ settings. maxQueueFileSizeBytes = breadcrumbSize * maximumNumberOfBreadcrumbs + maximumNumberOfBreadcrumbs
172+ breadcrumbs. enableBreadcrumbs ( settings)
173+
174+ for index in ( 0 ... maximumNumberOfBreadcrumbs) {
175+ _ = breadcrumbs. addBreadcrumb ( " \( breadcrumbMessage) \( index) " , type: breadcrumbType, level: breadcrumbLevel)
176+ }
177+
178+ // expect to clean up the file
179+ _ = breadcrumbs. addBreadcrumb ( " \( breadcrumbMessage) cleanup " , type: breadcrumbType, level: breadcrumbLevel)
180+ let breadcrumbText = self . readBreadcrumbText ( )
181+ expect { breadcrumbText } . notTo ( contain ( " \( breadcrumbMessage) 0 " ) )
182+ expect { breadcrumbText } . to ( contain ( " \( breadcrumbMessage) cleanup " ) )
183+ }
184+
154185 it ( " rolls over after enough breadcrumbs are added to get to the maximum file size " ) {
155186 let settings = BacktraceBreadcrumbSettings ( )
156187 settings. maxQueueFileSizeBytes = 32 * 1024
0 commit comments