experiments/JavaIncrementalCompilerTests.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sat, 15 Dec 2012 23:25:19 +0100
branchdevelopment
changeset 1883 b36e52129040
parent 1869 0ae14ac1c9af
permissions -rw-r--r--
Initial implementation of JavaCompiler using Oracle javac toolbox. Not yet finished.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1869
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
     1
"
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
     2
 Copyright (c) 2010-2011 Jan Vrany, Jan Kurs & Marcel Hlopko,
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
     3
                         SWING Research Group, Czech Technical University 
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
     4
                         in Prague
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
     5
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
     6
 Permission is hereby granted, free of charge, to any person
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
     7
 obtaining a copy of this software and associated documentation
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
     8
 files (the 'Software'), to deal in the Software without
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
     9
 restriction, including without limitation the rights to use,
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    10
 copy, modify, merge, publish, distribute, sublicense, and/or sell
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    11
 copies of the Software, and to permit persons to whom the
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    12
 Software is furnished to do so, subject to the following
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    13
 conditions:
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    14
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    15
 The above copyright notice and this permission notice shall be
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    16
 included in all copies or substantial portions of the Software.
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    17
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    18
 THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    19
 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    20
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    21
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    22
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    23
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    24
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    25
 OTHER DEALINGS IN THE SOFTWARE.
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    26
"
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    27
"{ Package: 'stx:libjava/experiments' }"
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    28
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    29
ClassReloadingTests subclass:#JavaIncrementalCompilerTests
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    30
	instanceVariableNames:''
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    31
	classVariableNames:''
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    32
	poolDictionaries:''
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    33
	category:'Languages-Java-Tests-ClassReloading'
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    34
!
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    35
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    36
!JavaIncrementalCompilerTests class methodsFor:'documentation'!
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    37
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    38
copyright
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    39
"
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    40
 Copyright (c) 2010-2011 Jan Vrany, Jan Kurs & Marcel Hlopko,
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    41
                         SWING Research Group, Czech Technical University 
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    42
                         in Prague
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    43
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    44
 Permission is hereby granted, free of charge, to any person
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    45
 obtaining a copy of this software and associated documentation
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    46
 files (the 'Software'), to deal in the Software without
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    47
 restriction, including without limitation the rights to use,
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    48
 copy, modify, merge, publish, distribute, sublicense, and/or sell
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    49
 copies of the Software, and to permit persons to whom the
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    50
 Software is furnished to do so, subject to the following
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    51
 conditions:
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    52
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    53
 The above copyright notice and this permission notice shall be
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    54
 included in all copies or substantial portions of the Software.
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    55
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    56
 THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    57
 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    58
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    59
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    60
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    61
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    62
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    63
 OTHER DEALINGS IN THE SOFTWARE.
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    64
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    65
"
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    66
!
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    67
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    68
history
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    69
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    70
    "Created: #callFooMethodSource / 08-12-2012 / 18:13:52 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    71
! !
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    72
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    73
!JavaIncrementalCompilerTests class methodsFor:'resources'!
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    74
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    75
resources
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    76
    ^ Array with: JavaFreshlyInitializedResource.
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    77
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    78
    "Created: / 06-12-2012 / 21:53:01 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    79
! !
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    80
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    81
!JavaIncrementalCompilerTests methodsFor:'tests'!
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    82
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    83
testAddingMethod
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    84
    | changingClass |
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    85
    changingClass := self changingClass.
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    86
    self assert: (changingClass lookupMethodFor: #'foo()V') javaClass 
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    87
                ~= changingClass
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    88
        message: 'Initially, changing class should not have the method defined'.
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    89
    (JavaIncrementalCompiler for: changingClass) 
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    90
        addMethod: self callFooMethodSource.
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    91
    self assert: (changingClass lookupMethodFor: #'foo()V') javaClass 
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    92
                = changingClass
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    93
        message: 'Initially, changing class should not have the method defined'.
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    94
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    95
    "Created: / 06-12-2012 / 22:12:31 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    96
    "Modified (format): / 08-12-2012 / 18:40:55 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    97
! !
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    98
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
    99
!JavaIncrementalCompilerTests class methodsFor:'documentation'!
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
   100
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
   101
version_SVN
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
   102
    ^ '$Id::                                                                                                                        $'
0ae14ac1c9af java compiler (javac wrapper) and basic class reloading tests
hlopkmar
parents:
diff changeset
   103
! !