diff --git a/src/Tool-ExternalBrowser/ExternalBrowser.class.st b/src/Tool-ExternalBrowser/ExternalBrowser.class.st index 2e2e0be407c..0b2b6b1fd56 100644 --- a/src/Tool-ExternalBrowser/ExternalBrowser.class.st +++ b/src/Tool-ExternalBrowser/ExternalBrowser.class.st @@ -87,7 +87,7 @@ ExternalBrowser class >> serviceBrowseCode [ selector: #browseStream: description: 'Open a "file-contents browser" on this file, allowing you to view and selectively load its code' buttonLabel: 'Code') - argumentGetter: [ :file| file readOnlyStream ] + argumentGetter: [ :file| file readStream] ] { #category : #'System-FileRegistry' } diff --git a/src/Tool-ExternalBrowser/ExternalBrowserTest.class.st b/src/Tool-ExternalBrowser/ExternalBrowserTest.class.st new file mode 100644 index 00000000000..1f1afe29a01 --- /dev/null +++ b/src/Tool-ExternalBrowser/ExternalBrowserTest.class.st @@ -0,0 +1,85 @@ +Class { + #name : #ExternalBrowserTest, + #superclass : #TestCase, + #instVars : [ + 'initialWindows', + 'file' + ], + #category : #'Tool-ExternalBrowser-Test' +} + +{ #category : #running } +ExternalBrowserTest >> assert: serviceProvider dropFileWithSuffix: suffix [ + | allMatchingServices service | + allMatchingServices := serviceProvider fileReaderServicesForFile: file pathString suffix: suffix. + self deny: allMatchingServices isEmpty. + service := allMatchingServices anyOne. + self shouldnt: [service performServiceFor: file] raise: MessageNotUnderstood. + +] + +{ #category : #running } +ExternalBrowserTest >> classNameForTest [ + ^#MyWonderfulClass +] + +{ #category : #running } +ExternalBrowserTest >> fileForTestContent [ + ^'''From Pharo7.0.0rc1 of 4 December 2018 [Build information: Pharo-7.0.0+rc1.build.1435.sha.4cd23cf7be1a90c7c52e9f8786860a6290b7c2a6 (64 Bit)] on 5 December 2018 at 9:30:34.922838 am''! +Object subclass: #', self classNameForTest,' + instanceVariableNames: ''some iv'' + classVariableNames: '''' + poolDictionaries: '''' + category: #MyCategory! +!', self classNameForTest,' commentStamp: ''NouryBouraqadi 12/4/2018 17:19'' prior: 0! +My unique and explicit comment! + + +!', self classNameForTest,' methodsFor: ''protocol'' stamp: ''NouryBouraqadi 12/4/2018 17:12''! +myMethod + ! ! +' +] + +{ #category : #running } +ExternalBrowserTest >> fileNameForTest [ + ^ 'fileForExternalBrowserTest' +] + +{ #category : #running } +ExternalBrowserTest >> initFileWithSuffix: suffix [ + file := FileSystem workingDirectory / self fileNameForTest, '.', suffix. + file + writeStreamDo: [ :stream | stream nextPutAll: self fileForTestContent ]. + initialWindows := World windowsSatisfying: [: each| true ]. +] + +{ #category : #running } +ExternalBrowserTest >> setUp [ + super setUp. + initialWindows := World windowsSatisfying: [: each| true ]. +] + +{ #category : #running } +ExternalBrowserTest >> tearDown [ + | newWindows | + super tearDown. + file deleteIfAbsent: [ ]. + Smalltalk at: self classNameForTest ifPresent: [ : cl | cl removeFromSystem ]. + newWindows := World windowsSatisfying: [ : each | (initialWindows includes: each) not ]. + newWindows do: #delete. +] + +{ #category : #running } +ExternalBrowserTest >> testDropChangeFile [ + self initFileWithSuffix: 'changes'. + self assert: ExternalChangesBrowser dropFileWithSuffix: 'changes' + +] + +{ #category : #running } +ExternalBrowserTest >> testDropStFile [ + self initFileWithSuffix: 'st'. + self assert: ExternalBrowser dropFileWithSuffix: 'st' + +] diff --git a/src/Tool-ExternalBrowser/ExternalChangesBrowser.class.st b/src/Tool-ExternalBrowser/ExternalChangesBrowser.class.st index b890a32e7c1..20f0b76eb7b 100644 --- a/src/Tool-ExternalBrowser/ExternalChangesBrowser.class.st +++ b/src/Tool-ExternalBrowser/ExternalChangesBrowser.class.st @@ -114,7 +114,7 @@ ExternalChangesBrowser class >> serviceBrowseCSOrSTFile [ selector: #openOnStream: description: 'Open a changelist tool on this file' buttonLabel: 'Changes') - argumentGetter: [ :stream | stream readOnlyStream ] + argumentGetter: [ :stream | stream readStream ] ] { #category : #'file service' }