diff --git a/DebuggingSpy-Browser-Tests/DSRecordBrowserTest.class.st b/DebuggingSpy-Browser-Tests/DSRecordBrowserTest.class.st index 940f3cd..3474932 100644 --- a/DebuggingSpy-Browser-Tests/DSRecordBrowserTest.class.st +++ b/DebuggingSpy-Browser-Tests/DSRecordBrowserTest.class.st @@ -19,9 +19,11 @@ DSRecordBrowserTest >> filesPresenter [ DSRecordBrowserTest >> generateRecordFile: aNumberOfRecords [ | recordFileRef records | - browser startRecording. - recordFileRef := logger ensureCreateLoggingFileReference. + DSSpy recordingSession ifFalse: [ browser startRecording ]. + + recordFileRef := self updateLoggerFileName. records := OrderedCollection new. + 1 to: aNumberOfRecords do: [ :i | records add: (DSMouseEnterWindowRecord new windowId: 'test' , i asString; @@ -45,6 +47,8 @@ DSRecordBrowserTest >> setUp [ DSSpy testingSession: true. logger := DSSpy logger loggingDirectory: self temporaryDirectory. + self updateLoggerFileName. + browser := DSRecordBrowser new ] @@ -52,7 +56,8 @@ DSRecordBrowserTest >> setUp [ DSRecordBrowserTest >> tearDown [ DSRecordRegistry current reset. - browser stopRecording. + DSSpy recordingSession ifTrue: [ browser stopRecording ]. + super tearDown ] @@ -112,6 +117,22 @@ DSRecordBrowserTest >> testGetHistoryOf [ self assert: (DSRecordBrowser getHistoryOf: fileRef) records size equals: 5 ] +{ #category : 'tests' } +DSRecordBrowserTest >> testRemoveFile [ + + | fileRef1 fileRef2 | + fileRef1 := self generateRecordFile: 42. + fileRef2 := self generateRecordFile: 42. + + browser addFile: fileRef1. + browser addFile: fileRef2. + browser removeFile: fileRef1. + + self assert: browser files size equals: 1. + self assert: self filesPresenter items size equals: 1. + self assert: self filesPresenter selectedItem equals: fileRef2 +] + { #category : 'tests' } DSRecordBrowserTest >> testStartRecording [ @@ -122,7 +143,7 @@ DSRecordBrowserTest >> testStartRecording [ browser startRecording. self assert: DSSpy recordingSession. self assert: DSRecordRegistry autoSerialize. - self deny: browser recorderWindow isNil + self deny: browser recorderWindow isNil. ] { #category : 'helpers' } @@ -136,3 +157,15 @@ DSRecordBrowserTest >> toolbarPresenter [ ^ browser presenterAt: #toolbar ] + +{ #category : 'helpers' } +DSRecordBrowserTest >> updateLoggerFileName [ + "Changes the logging file name, needs to be called everytime a new file is created for the logger to be updated for future logs. +Using a UUID ensures that multiple files created at the same date and time dont have the same file name." + + | fr | + logger loggingFileName: UUID new asString. + fr := logger ensureCreateLoggingFileReference. + logger loggingFileReference: fr. + ^ fr +] diff --git a/DebuggingSpy-Browser/DSRecordBrowser.class.st b/DebuggingSpy-Browser/DSRecordBrowser.class.st index 35aaebd..ada4041 100644 --- a/DebuggingSpy-Browser/DSRecordBrowser.class.st +++ b/DebuggingSpy-Browser/DSRecordBrowser.class.st @@ -103,11 +103,10 @@ DSRecordBrowser class >> toggleBrowser [ ^ presenter window isOpen ifTrue: [ presenter window close ] ifFalse: [ presenter window open ] ]. - self browser open ] -{ #category : 'adding' } +{ #category : 'files' } DSRecordBrowser >> addFile: aFileReference [ "Adds a file in the presenter and set is as selected, which updates the records displayed." @@ -135,9 +134,8 @@ DSRecordBrowser >> connectPresenters [ "Updates the records and the timeline whenever the selected file is changed." addedFilesPresenter whenSelectionChangedDo: [ :presenter | - presenter selectedItem ifNotNil: [ - self updateSelectedRecords: presenter. - self updateTimelineChart ] ]. + self updateSelectedRecords: presenter. + self updateTimelineChart ]. recordsFilter whenChangedDo: [ addedFilesPresenter selectedItem ifNotNil: [ @@ -206,15 +204,24 @@ DSRecordBrowser >> listAddedFilesActions [ addActionWith: [ :anItem | anItem name: 'Inspect'; + iconName: #inspect; description: 'Inspect the raw records'; shortcutKey: $i meta; action: [ (DSSpy materialize: addedFilesPresenter selectedItem) inspect ] ]; addActionWith: [ :anItem | anItem name: 'Inspect history'; + iconName: #history; description: 'Inspect the record history'; shortcutKey: $h meta; action: [ (self class getHistoryOf: addedFilesPresenter selectedItem) inspect ] ]; + addActionWith: [ :anItem | + anItem + name: 'Remove'; + iconName: #remove; + description: 'Remove the record from list'; + shortcutKey: $x meta; + action: [ self removeFile: addedFilesPresenter selectedItem ] ]; yourself ] @@ -225,6 +232,7 @@ DSRecordBrowser >> listRecordActions [ addActionWith: [ :anItem | anItem name: 'Inspect'; + iconName: #inspect; description: 'Inspect the raw records'; shortcutKey: $i meta; action: [ selectedRecordsPresenter selectedItem record inspect ] ]; @@ -282,6 +290,16 @@ DSRecordBrowser >> recordsTable [ yourself ] +{ #category : 'files' } +DSRecordBrowser >> removeFile: aFileReference [ + + files := files reject: [ :fileReference | fileReference = aFileReference ]. + addedFilesPresenter items: self files. + addedFilesPresenter selectItem: (files isEmpty + ifTrue: [ nil ] + ifFalse: [ files last ]) +] + { #category : 'initialization' } DSRecordBrowser >> resetBrowser [ @@ -310,7 +328,7 @@ DSRecordBrowser >> startRecording [ recorderWindow openInWorld; startTimer. - DSSpyInstrumenter instrumentSystem. + DSSpyInstrumenter instrumentSystem ] { #category : 'layout' } @@ -347,8 +365,8 @@ DSRecordBrowser >> timelineChart [ names := history windows collect: [ :i | i getWindowType ]. data := self class getTimelinePointsFrom: history. - data size < 2 ifTrue: [^ nil]. - + data size < 2 ifTrue: [ ^ nil ]. + chart := RSCompositeChart new. chart addAll: data. @@ -369,8 +387,10 @@ DSRecordBrowser >> updateSelectedRecords: aPresenter [ "Updates the selected records and processes it to be used with their respective colors." | records | - records := self class getColoredRecordsOf: (self class getHistoryOf: aPresenter selectedItem) windows. - records := records reject: [ :coloredRecord | self recordsFilter chosenItems includes: coloredRecord record class ]. + records := OrderedCollection new. + aPresenter selectedItem ifNotNil: [ + records := self class getColoredRecordsOf: (self class getHistoryOf: aPresenter selectedItem) windows. + records := records reject: [ :coloredRecord | self recordsFilter chosenItems includes: coloredRecord record class ] ]. selectedRecords := records. selectedRecordsPresenter roots: selectedRecords; @@ -382,7 +402,7 @@ DSRecordBrowser >> updateTimelineChart [ | chart | chart := self timelineChart. - chart ifNotNil: [ timeline script: [ :canvas | chart renderIn: canvas ] ]. + chart ifNil: [ timeline script: [ :canvas | ] ] ifNotNil: [ timeline script: [ :canvas | chart renderIn: canvas ] ]. timeline refresh ] diff --git a/DebuggingSpy/DSSTONFileLogger.class.st b/DebuggingSpy/DSSTONFileLogger.class.st index 778d287..c43d04a 100644 --- a/DebuggingSpy/DSSTONFileLogger.class.st +++ b/DebuggingSpy/DSSTONFileLogger.class.st @@ -93,6 +93,12 @@ DSSTONFileLogger >> loggingFileReference [ loggingFileReference := self ensureCreateLoggingFileReference ] ] +{ #category : 'accessing' } +DSSTONFileLogger >> loggingFileReference: aFileReference [ + + ^ loggingFileReference := aFileReference +] + { #category : 'initialization' } DSSTONFileLogger >> reset [