From 13977794b6a4b36e3627228ddfdf47d84bf79780 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 15 Aug 2021 11:43:25 +0200 Subject: [PATCH 1/5] Change ascii to utf8 encoding for text files in Pharo 9 --- .../instance/readFileStreamOn.do.binary..st | 2 +- .../instance/writeFileStreamOn.do.binary..st | 2 +- .../instance/testReadWriteToFileInFolderText.st | 11 +++++------ 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/readFileStreamOn.do.binary..st b/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/readFileStreamOn.do.binary..st index f9dda145..1852f83e 100644 --- a/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/readFileStreamOn.do.binary..st +++ b/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/readFileStreamOn.do.binary..st @@ -3,4 +3,4 @@ readFileStreamOn: aString do: aBlock binary: aBoolean ^ aBoolean ifTrue: [ aString asFileReference binaryReadStreamDo: aBlock ] - ifFalse: [ aString asFileReference readStreamEncoded: 'ascii' do: aBlock ] \ No newline at end of file + ifFalse: [ aString asFileReference readStreamEncoded: 'utf-8' do: aBlock ] \ No newline at end of file diff --git a/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/writeFileStreamOn.do.binary..st b/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/writeFileStreamOn.do.binary..st index c06164c8..0b43135e 100644 --- a/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/writeFileStreamOn.do.binary..st +++ b/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/writeFileStreamOn.do.binary..st @@ -2,4 +2,4 @@ file library writeFileStreamOn: aString do: aBlock binary: aBoolean ^ aBoolean ifTrue: [ aString asFileReference binaryWriteStreamDo: aBlock ] - ifFalse: [ aString asFileReference writeStreamEncoded: 'ascii' do: [ :str | aBlock value: (ZnNewLineWriterStream on: str) ] ] \ No newline at end of file + ifFalse: [ aString asFileReference writeStreamEncoded: 'utf-8' do: [ :str | aBlock value: (ZnNewLineWriterStream on: str) ] ] \ No newline at end of file diff --git a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteToFileInFolderText.st b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteToFileInFolderText.st index 2d9fc845..247fc165 100644 --- a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteToFileInFolderText.st +++ b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteToFileInFolderText.st @@ -1,8 +1,7 @@ tests-filestreams testReadWriteToFileInFolderText - | text | - text := 'Ph''nglui mglw''nafh Cthulhu R''lyeh wgah''nagl fhtagn'. - self - writeToFile: text - withFileNameDo:[ :fileName | - self assert: (text = (GRPlatform current contentsOfFile: fileName binary: false)) ] \ No newline at end of file + #('Ph''nglui mglw''nafh Cthulhu R''lyeh wgah''nagl fhtagn' 'Übèrstrîñgé') do:[ :text | + self + writeToFile: text + withFileNameDo:[ :fileName | + self assert: text equals: (GRPlatform current contentsOfFile: fileName binary: false) ] ]. \ No newline at end of file From 652acb562c2d3f39c2572f38e0a05b7737382dca Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Mon, 16 Aug 2021 09:28:29 +0200 Subject: [PATCH 2/5] Change ascii to utf8 encoding for text files in Pharo 7 --- .../instance/readFileStreamOn.do.binary..st | 2 +- .../instance/writeFileStreamOn.do.binary..st | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/readFileStreamOn.do.binary..st b/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/readFileStreamOn.do.binary..st index 2b7331ab..22443227 100644 --- a/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/readFileStreamOn.do.binary..st +++ b/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/readFileStreamOn.do.binary..st @@ -4,4 +4,4 @@ readFileStreamOn: aString do: aBlock binary: aBoolean ^ aBoolean ifTrue: [ aString asFileReference binaryReadStreamDo: aBlock ] - ifFalse: [ aString asFileReference readStreamEncoded: 'ascii' do: aBlock ] \ No newline at end of file + ifFalse: [ aString asFileReference readStreamEncoded: 'utf-8' do: aBlock ] \ No newline at end of file diff --git a/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/writeFileStreamOn.do.binary..st b/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/writeFileStreamOn.do.binary..st index 762e9cca..22cf6c64 100644 --- a/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/writeFileStreamOn.do.binary..st +++ b/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/writeFileStreamOn.do.binary..st @@ -2,4 +2,4 @@ file library writeFileStreamOn: aString do: aBlock binary: aBoolean ^ aBoolean ifTrue: [ aString asFileReference binaryWriteStreamDo: aBlock ] - ifFalse: [ aString asFileReference writeStreamEncoded: 'ascii' do: aBlock ] \ No newline at end of file + ifFalse: [ aString asFileReference writeStreamEncoded: 'utf-8' do: aBlock ] \ No newline at end of file From d305fd5012acec83d6d773234c71ff95d594c8ba Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Mon, 16 Aug 2021 09:44:20 +0200 Subject: [PATCH 3/5] Move utf8 test file read/write test to Pharo specific test package and mark it as expected failure for Pharo 7 (and earlier) --- .../instance/testReadWriteToFileInFolderText.st | 11 ++++++----- .../instance/expectedFailures.st | 10 ++++++++++ .../instance/testReadWriteToFileInFolderTextUTF8.st | 7 +++++++ 3 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 repository/Grease-Tests-Pharo-Core.package/GRPharoPlatformTest.class/instance/expectedFailures.st create mode 100644 repository/Grease-Tests-Pharo-Core.package/GRPharoPlatformTest.class/instance/testReadWriteToFileInFolderTextUTF8.st diff --git a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteToFileInFolderText.st b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteToFileInFolderText.st index 247fc165..2d9fc845 100644 --- a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteToFileInFolderText.st +++ b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteToFileInFolderText.st @@ -1,7 +1,8 @@ tests-filestreams testReadWriteToFileInFolderText - #('Ph''nglui mglw''nafh Cthulhu R''lyeh wgah''nagl fhtagn' 'Übèrstrîñgé') do:[ :text | - self - writeToFile: text - withFileNameDo:[ :fileName | - self assert: text equals: (GRPlatform current contentsOfFile: fileName binary: false) ] ]. \ No newline at end of file + | text | + text := 'Ph''nglui mglw''nafh Cthulhu R''lyeh wgah''nagl fhtagn'. + self + writeToFile: text + withFileNameDo:[ :fileName | + self assert: (text = (GRPlatform current contentsOfFile: fileName binary: false)) ] \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Core.package/GRPharoPlatformTest.class/instance/expectedFailures.st b/repository/Grease-Tests-Pharo-Core.package/GRPharoPlatformTest.class/instance/expectedFailures.st new file mode 100644 index 00000000..d0d53741 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Core.package/GRPharoPlatformTest.class/instance/expectedFailures.st @@ -0,0 +1,10 @@ +running +expectedFailures + "UTF8 encoding/decoding for text files only available from Pharo7" + Smalltalk at: #SystemVersion ifPresent: [ :systemVersion | + | versionString | + versionString := systemVersion current version. + (versionString beginsWith: 'Pharo') ifTrue: [ + systemVersion current major <= 7 + ifTrue: [ ^ #(testReadWriteToFileInFolderTextUTF8) ] ] ]. + ^ #() \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Core.package/GRPharoPlatformTest.class/instance/testReadWriteToFileInFolderTextUTF8.st b/repository/Grease-Tests-Pharo-Core.package/GRPharoPlatformTest.class/instance/testReadWriteToFileInFolderTextUTF8.st new file mode 100644 index 00000000..a85ee772 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Core.package/GRPharoPlatformTest.class/instance/testReadWriteToFileInFolderTextUTF8.st @@ -0,0 +1,7 @@ +tests-filestreams +testReadWriteToFileInFolderTextUTF8 + #('Übèrstrîñgé' '£ęλ~') do:[ :text | + self + writeToFile: text + withFileNameDo:[ :fileName | + self assert: text equals: (GRPlatform current contentsOfFile: fileName binary: false) ] ]. \ No newline at end of file From eee09562eff1f6936177a1594f6575e2e16f8c20 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Mon, 16 Aug 2021 09:51:18 +0200 Subject: [PATCH 4/5] Fixed wrong version comparison for expected failure in test --- .../GRPharoPlatformTest.class/instance/expectedFailures.st | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repository/Grease-Tests-Pharo-Core.package/GRPharoPlatformTest.class/instance/expectedFailures.st b/repository/Grease-Tests-Pharo-Core.package/GRPharoPlatformTest.class/instance/expectedFailures.st index d0d53741..74b34dcb 100644 --- a/repository/Grease-Tests-Pharo-Core.package/GRPharoPlatformTest.class/instance/expectedFailures.st +++ b/repository/Grease-Tests-Pharo-Core.package/GRPharoPlatformTest.class/instance/expectedFailures.st @@ -5,6 +5,6 @@ expectedFailures | versionString | versionString := systemVersion current version. (versionString beginsWith: 'Pharo') ifTrue: [ - systemVersion current major <= 7 + systemVersion current major < 7 ifTrue: [ ^ #(testReadWriteToFileInFolderTextUTF8) ] ] ]. ^ #() \ No newline at end of file From 4ab1bebeff2b141a6fe0d10a7cf1716602ca5cbf Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Mon, 16 Aug 2021 11:21:40 +0200 Subject: [PATCH 5/5] Seems like the MultiByteFileStream did write utf8 already... (so this works in Pharo6 as well) --- .../instance/expectedFailures.st | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 repository/Grease-Tests-Pharo-Core.package/GRPharoPlatformTest.class/instance/expectedFailures.st diff --git a/repository/Grease-Tests-Pharo-Core.package/GRPharoPlatformTest.class/instance/expectedFailures.st b/repository/Grease-Tests-Pharo-Core.package/GRPharoPlatformTest.class/instance/expectedFailures.st deleted file mode 100644 index 74b34dcb..00000000 --- a/repository/Grease-Tests-Pharo-Core.package/GRPharoPlatformTest.class/instance/expectedFailures.st +++ /dev/null @@ -1,10 +0,0 @@ -running -expectedFailures - "UTF8 encoding/decoding for text files only available from Pharo7" - Smalltalk at: #SystemVersion ifPresent: [ :systemVersion | - | versionString | - versionString := systemVersion current version. - (versionString beginsWith: 'Pharo') ifTrue: [ - systemVersion current major < 7 - ifTrue: [ ^ #(testReadWriteToFileInFolderTextUTF8) ] ] ]. - ^ #() \ No newline at end of file