RegressionTests__FilenameTests.st
author Claus Gittinger <cg@exept.de>
Tue, 25 Feb 2020 17:19:49 +0100
changeset 2586 7dc7be5a6f3d
parent 2398 d6896f5dc88a
permissions -rw-r--r--
#OTHER by cg s
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2398
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
     1
"{ Encoding: utf8 }"
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
     2
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 869
diff changeset
     3
"{ Package: 'stx:goodies/regression' }"
822
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
"{ NameSpace: RegressionTests }"
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
TestCase subclass:#FilenameTests
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	instanceVariableNames:'filename'
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	classVariableNames:''
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
	poolDictionaries:''
869
32dea6c8b627 class: RegressionTests::FilenameTests
Claus Gittinger <cg@exept.de>
parents: 822
diff changeset
    11
	category:'tests-Regression'
822
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
!
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
2161
17265ac15ada #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
    15
!FilenameTests methodsFor:'initialize / release'!
822
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
tearDown
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
    filename notNil ifTrue:[
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 869
diff changeset
    19
	filename exists ifTrue:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 869
diff changeset
    20
	    filename remove
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 869
diff changeset
    21
	]
822
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
    ].
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
    "Created: / 21-02-2013 / 17:56:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
! !
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
!FilenameTests methodsFor:'tests'!
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
test_01
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
    "
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
    Tests whether filenames are properly encoded before
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
    passed to an operating system (i.e. whether paths
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
    are string-type transparent)
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
    "
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
    | path |
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
    filename := 'abcd' asFilename.
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
    "Create the file"
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 869
diff changeset
    40
    filename writingFileDo:[:s|].
822
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
    path := filename pathName.
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
    "Make sure it is all ascii"
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
    self assert: (path allSatisfy:[:c|c codePoint <= 127]).
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
    self assert: path asFilename exists.
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
    self assert: path asUnicode16String asFilename exists.
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
    self assert: path asUnicode32String asFilename exists.
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    "Created: / 21-02-2013 / 17:45:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
!
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
test_01_unix
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
    "
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
    Tests whether filenames are properly encoded before
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
    passed to an operating system (i.e. whether paths
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
    are string-type transparent)
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    This has been fixed in JV's stx:libbasic rev 7766f4524d50.
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
    See https://swing.fit.cvut.cz/hg/stx.libbasic/rev/7766f4524d50
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
    "
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
    | path locale |
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    OperatingSystem isUNIXlike ifFalse:[ ^ self ].
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
    filename := 'unix' asFilename.
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    "Create the file"
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 869
diff changeset
    71
    filename writingFileDo:[:s|].
822
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
    path := filename pathName.
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    "Make sure it is all ascii"
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
    self assert: (path allSatisfy:[:c|c codePoint <= 127]).
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
    "Now, pretend standard locale..."
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    locale := OperatingSystem getEnvironment: 'LANG'.
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    [
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 869
diff changeset
    81
	OperatingSystem setEnvironment: 'LANG' to: 'C'.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 869
diff changeset
    82
	OperatingSystem initialize. "/reinitialize locale definitions
822
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 869
diff changeset
    84
	self assert: path asFilename exists.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 869
diff changeset
    85
	self assert: path asUnicode16String asFilename exists.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 869
diff changeset
    86
	self assert: path asUnicode32String asFilename exists.
822
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
    ] ensure:[
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 869
diff changeset
    89
	OperatingSystem setEnvironment: 'LANG' to: locale.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 869
diff changeset
    90
	OperatingSystem initialize. "/reinitialize locale definitions
822
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
    ]
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
    "Created: / 21-02-2013 / 17:56:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2398
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
    94
!
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
    95
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
    96
test_02_parentDirectory
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
    97
    |  |
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
    98
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
    99
    OperatingSystem isUNIXlike ifTrue:[
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
   100
        self assert:('.' asFilename directoryName = '..').
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
   101
        self assert:('.' asFilename directory directoryName = '../..').
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
   102
        self assert:('./foo' asFilename directoryName = '.').
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
   103
        self assert:('./foo/bar' asFilename directoryName = './foo').
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
   104
        self assert:('./..' asFilename directoryName = './../..').
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
   105
        self assert:('../..' asFilename directoryName = '../../..').
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
   106
        self assert:('../foo/..' asFilename directoryName = '../foo/../..').
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
   107
        self assert:('../foo/../bar' asFilename directoryName = '../foo/..').
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
   108
    ] ifFalse:[ 
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
   109
        self assert:('.' asFilename directoryName = '..').
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
   110
        self assert:('.' asFilename directory directoryName = '..\..').
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
   111
        self assert:('.\foo' asFilename directoryName = '.').
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
   112
        self assert:('.\foo\bar' asFilename directoryName = '.\foo').
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
   113
        self assert:('.\..' asFilename directoryName = '.\..\..').
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
   114
        self assert:('..\..' asFilename directoryName = '..\..\..').
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
   115
        self assert:('..\foo\..' asFilename directoryName = '..\foo\..\..').
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
   116
        self assert:('..\foo\..\bar' asFilename directoryName = '..\foo\..').
d6896f5dc88a #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
   117
    ].
822
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
! !
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
!FilenameTests class methodsFor:'documentation'!
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
version
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
    ^ '$Header$'
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
!
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
version_CVS
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
    ^ '$Header$'
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
! !
de92df99daf4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129