--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/packages/PackageTestCases.st Wed Apr 09 13:23:18 2003 +0200
@@ -0,0 +1,738 @@
+"{ Package: 'stx:libbasic3' }"
+
+"{ NameSpace: Packages }"
+
+AbstractTestCases subclass:#PackageTestCases
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Package'
+!
+
+!PackageTestCases class methodsFor:'documentation'!
+
+documentation
+"
+ documentation to be added.
+
+ [author:]
+ (james@miraculix)
+
+ [instance variables:]
+
+ [class variables:]
+
+ [see also:]
+
+"
+!
+
+history
+ "Created: / 24.1.2003 / 16:15:21 / james"
+! !
+
+!PackageTestCases methodsFor:'initialize / release'!
+
+setUp
+ "common setup - invoked before testing"
+ | class |
+ (class := Smalltalk at:#QWERTZ) ifNil:[
+ self createClassNamed:#QWERTZ.
+ self createMethodFor:QWERTZ source:'aDummyMethod 1 + 1.'.
+ self createMethodFor:QWERTZ source:'aDummyMethod2 1 + 1.'.
+ self createMethodFor:QWERTZ source:'aDummyMethod3 1 + 1.'.
+ self createMethodFor:QWERTZ source:'aDummyMethodToGo 1 + 1.'.
+ self createMethodFor:QWERTZ source:'aDummyMethodToGo2 1 + 1.'.
+ self createMethodFor:QWERTZ source:'aDummyMethodToGo3 1 + 1.'.
+ self createMethodFor:QWERTZ source:'aDummyMethodToGo4 1 + 1.'.
+ self createMethodFor:QWERTZ source:'aDummyMethodThatShouldStay 1 + 1.'.
+ self createMethodFor:QWERTZ source:'looseMethodForTest_addMethod1 1 + 1.'.
+ self createMethodFor:QWERTZ source:'looseMethodForTest_addMethod2 1 + 1.'.
+ ].
+
+ (class := Smalltalk at:#QWERTY) ifNil:[
+ self createClassNamed:#QWERTY.
+ self createMethodFor:QWERTY source:'aDummyMethod 1 + 1.'.
+ self createMethodFor:QWERTY source:'aDummyMethod2 1 + 1.'.
+ self createMethodFor:QWERTY source:'aDummyMethod3 1 + 1.'.
+ ].
+ super setUp
+!
+
+tearDown
+ "common cleanup - invoked after testing"
+ self removeClassNamed:#QWERTY.
+ self removeClassNamed:#QWERTZ.
+
+ super tearDown
+! !
+
+!PackageTestCases methodsFor:'test - accessing'!
+
+test_classNames
+ |aPackage|
+ [
+ aPackage := self packageManager newPackageNamed:'PackageTestCases_ThisBelongsToATestCase'.
+
+ self packageManager addClass:QWERTZ toPackage:aPackage.
+ self packageManager addClass:QWERTY toPackage:aPackage.
+
+ self assert:(aPackage classNames includesAll:#(#QWERTZ #QWERTY)).
+ self assert:(aPackage isDirty).
+ ] ensure:[
+ self packageManager unloadPackage:aPackage.
+ ]
+!
+
+test_isDirty
+ |aPackage|
+ [
+ aPackage := self packageManager newPackageNamed:'PackageTestCases_ThisBelongsToATestCase'.
+ self packageManager addClass:QWERTZ toPackage:aPackage.
+ self assert:(aPackage isDirty).
+
+ ] ensure:[
+ self packageManager unloadPackage:aPackage.
+ ]
+! !
+
+!PackageTestCases methodsFor:'test - adding and removing'!
+
+test_addClass
+ |aPackage|
+ [
+ aPackage := self packageManager newPackageNamed:'PackageTestCases_ThisBelongsToATestCase'.
+
+ self packageManager addClass:QWERTZ toPackage:aPackage.
+
+ self assert:(aPackage isDirty).
+ self assert:(aPackage isInstalled).
+ ] ensure:[
+ self packageManager unloadPackage:aPackage.
+ ]
+!
+
+test_addMethod
+ |aPackage method1 method2|
+ [
+ aPackage := self packageManager newPackageNamed:'PackageTestCases_ThisBelongsToATestCase'.
+
+ method1 := (QWERTZ methodDictionary at:#looseMethodForTest_addMethod1).
+ method2 := (QWERTZ methodDictionary at:#looseMethodForTest_addMethod2).
+
+ self packageManager addMethod:method1 toPackage:aPackage.
+ self packageManager addMethod:method2 toPackage:aPackage.
+
+ self assert:(aPackage isDirty).
+ self assert:(aPackage isInstalled).
+ ] ensure:[
+ self packageManager unloadPackage:aPackage.
+ ]
+!
+
+test_addMethod2
+ |aPackage|
+ [
+ aPackage := self packageManager newPackageNamed:'Bob the builder test cases'.
+
+ self packageManager moveClass:QWERTZ toPackage:aPackage.
+ aPackage isDirty:false. "i am telling it a fib here "
+
+ self shouldnt:(aPackage isDirty).
+ self assert:(aPackage isInstalled).
+
+ self createMethodFor:QWERTZ source:'aDummyMethodTest_addClass2 1 + 1.'.
+
+ self assert:((aPackage blockedMethodsAt:#QWERTZ) size == 1).
+ self assert:(aPackage isInstalled).
+ self shouldnt:(aPackage isDirty).
+ ] ensure:[
+ self packageManager unloadPackage:aPackage.
+ ]
+!
+
+test_removeClass
+ |aPackage|
+ [
+ aPackage := self packageManager newPackageNamed:'Bob the builder test cases'.
+
+ self packageManager addClass:QWERTZ toPackage:aPackage.
+ self packageManager removeClass:QWERTZ fromPackage:aPackage.
+
+ self assert:(Smalltalk at:#QWERTZ) notNil.
+ self assert:(aPackage isDirty).
+ self assert:(aPackage isInstalled).
+ self shouldnt:(aPackage includesClassNamed:#QWERTZ).
+
+ self assert:(self packageManager workingPackage includesClassNamed:#QWERTZ).
+ ] ensure:[
+ self packageManager unloadPackage:aPackage.
+ ]
+!
+
+test_removeMethod
+ |aPackage aFilename method1 method2|
+ [
+ aFilename := self testCaseDirectory filenameFor:'Test_removeMethod.pac'. "clear up"
+ self createTestCaseDirectory.
+
+ aPackage := self packageManager newPackageNamed:'PackageTestCases_ThisBelongsToATestCase'.
+ aPackage packageHandler filename:aFilename.
+
+ method1 := (QWERTZ methodDictionary at:#looseMethodForTest_addMethod1).
+ method2 := (QWERTZ methodDictionary at:#looseMethodForTest_addMethod2).
+
+ self packageManager addClass:QWERTZ toPackage:aPackage.
+
+ self packageManager addMethod:method1 toPackage:aPackage.
+ self packageManager addMethod:method2 toPackage:aPackage.
+
+ self packageManager savePackage:aPackage.
+ self shouldnt:(aPackage isDirty).
+
+ self packageManager removeMethod:method2 fromPackage:aPackage.
+
+ self assert:(Smalltalk at:#QWERTZ) notNil.
+ self assert:(aPackage isDirty).
+ self assert:(aPackage isInstalled).
+ ] ensure:[
+ self packageManager unloadPackage:aPackage.
+ ]
+! !
+
+!PackageTestCases methodsFor:'test - install/uninstall'!
+
+test_install
+ |aPackage aFilename|
+ [
+ aFilename := self testCaseDirectory filenameFor:'test_install.pac'. "clear up"
+ self createTestCaseDirectory.
+ aPackage := self packageManager newPackageNamed:'PackageTestCases_ThisBelongsToATestCase'.
+ aPackage packageHandler filename:aFilename.
+
+ self packageManager addClass:QWERTZ toPackage:aPackage.
+ self packageManager addClass:QWERTY toPackage:aPackage.
+
+ self packageManager savePackage:aPackage as:aFilename.
+ self packageManager uninstallPackage:aPackage.
+ "--------- the method tested --------- "
+ self packageManager installPackage:aPackage.
+
+ "tests"
+ self assert:(aPackage isInstalled).
+ self assert:(aPackage name = 'PackageTestCases_ThisBelongsToATestCase').
+ self assertSmalltalkIncludesAllClassNames:aPackage classNames.
+ ] ensure:[
+ self packageManager unloadPackage:aPackage.
+ ]
+!
+
+test_install1
+ "test uninstalling a package with just loose methods"
+
+ |aPackage aFilename mthd1 mthd2 mthd3|
+ [
+ aFilename := self testCaseDirectory filenameFor:'TestLoad.pac'.
+ self createTestCaseDirectory. "clear up"
+ aPackage := self packageManager newPackageNamed:'Dummy test case package'.
+ aPackage packageHandler filename:aFilename.
+ mthd1 := (QWERTZ methodDictionary at:#aDummyMethodToGo).
+ mthd2 := (QWERTZ methodDictionary at:#aDummyMethodToGo2).
+ mthd3 := (QWERTZ methodDictionary at:#aDummyMethodToGo3).
+
+ self packageManager addMethod:mthd1 toPackage:aPackage.
+ self packageManager addMethod:mthd2 toPackage:aPackage.
+ self packageManager addMethod:mthd3 toPackage:aPackage.
+
+
+ self packageManager uninstallPackage:aPackage.
+ self packageManager installPackage:aPackage. "<--------- the method tested"
+
+ "/ aPackage fileOutIn: aFilename.
+
+ "tests"
+ self assert:(self packageManager includesPackage:aPackage).
+ self assert:(aPackage isInstalled).
+ self shouldnt:(QWERTZ methodDictionary includes:#aDummyMethodToGo).
+ self shouldnt:(QWERTZ methodDictionary includes:#aDummyMethodToGo2).
+ self shouldnt:(QWERTZ methodDictionary includes:#aDummyMethodToGo3).
+ self shouldnt:(QWERTZ methodDictionary includes:#aDummyMethodToGo4).
+
+ ] ensure:[
+ self packageManager unloadPackage:aPackage.
+ ]
+!
+
+test_uninstall
+ |aPackage aFilename|
+ [
+ aFilename := self testCaseDirectory filenameFor:'TestLoad.pac'. "clear up"
+ self createTestCaseDirectory.
+ aPackage := self packageManager
+ newPackageNamed:'Dummy test case package'.
+ aPackage packageHandler filename:aFilename.
+
+ self packageManager addClass:QWERTZ toPackage:aPackage.
+ self packageManager addClass:QWERTY toPackage:aPackage.
+
+ "--------- the method tested----------------"
+ self packageManager uninstallPackage:aPackage.
+
+ "/ aPackage fileOutIn: aFilename.
+ self assert:(self packageManager includesPackage:aPackage).
+
+ "tests"
+ self shouldnt:(aPackage isInstalled).
+ self shouldntSmalltalkIncludesAllClassNames:aPackage classNames.
+ ] ensure:[
+ self packageManager unloadPackage:aPackage.
+ ]
+!
+
+test_uninstall1
+ "test uninstalling a package with just loose methods"
+
+ |aPackage aFilename mthd1 mthd2 mthd3|
+ [
+ aFilename := self testCaseDirectory filenameFor:'TestLoad.pac'.
+ self createTestCaseDirectory. "clear up"
+
+ aPackage := self packageManager
+ newPackageNamed:'Dummy test case package'.
+ aPackage packageHandler filename:aFilename.
+
+ mthd1 := (QWERTZ compiledMethodAt:#aDummyMethodToGo).
+ mthd2 := (QWERTZ compiledMethodAt:#aDummyMethodToGo2).
+ mthd3 := (QWERTZ compiledMethodAt:#aDummyMethodToGo3).
+
+ self packageManager addMethod:mthd1 toPackage:aPackage.
+ self packageManager addMethod:mthd2 toPackage:aPackage.
+ self packageManager addMethod:mthd3 toPackage:aPackage.
+ "--------- the method tested-------------"
+ self packageManager uninstallPackage:aPackage.
+
+ "/ aPackage fileOutIn: aFilename.
+
+ "tests"
+ self assert:(self packageManager includesPackage:aPackage).
+ self assert:(QWERTZ methodDictionary keys includes:#aDummyMethodThatShouldStay).
+ self shouldnt:(aPackage isInstalled).
+ self shouldnt:(QWERTZ methodDictionary includes:#aDummyMethodToGo).
+ self shouldnt:(QWERTZ methodDictionary includes:#aDummyMethodToGo2).
+ self shouldnt:(QWERTZ methodDictionary includes:#aDummyMethodToGo3).
+ self shouldntSmalltalkIncludesAllLooseMethods:aPackage looseMethods.
+ ] ensure:[
+ self packageManager unloadPackage:aPackage.
+ ]
+! !
+
+!PackageTestCases methodsFor:'test - saving'!
+
+test_save
+ |aPackage aFilename|
+ [
+ aFilename := self createTestCaseFilenameFor:'TestFileOut.pac'. "clear up"
+ self createTestCaseDirectory.
+ aPackage := self packageManager
+ newPackageNamed:'Dummy test case package'.
+ aPackage packageHandler filename:aFilename.
+
+ self packageManager addClass:QWERTZ toPackage:aPackage.
+ self packageManager addClass:QWERTY toPackage:aPackage.
+
+ self assert:(aPackage isDirty).
+ self packageManager savePackage:aPackage.
+
+ "tests"
+ self shouldnt:(aPackage isDirty).
+
+ ] ensure:[
+ self packageManager unloadPackage:aPackage.
+ ]
+!
+
+test_save1
+ "saves a package just with loose methods"
+ |aPackage aFilename mth1 mth2 |
+ [
+ aFilename := self createTestCaseFilenameFor:'TestFileOut.pac'. "clear up"
+ self createTestCaseDirectory.
+ aPackage := self packageManager newPackageNamed:'Dummy test case package'.
+
+ mth1 := (QWERTZ methodDictionary at:#aDummyMethod).
+ mth2 := (QWERTZ methodDictionary at:#aDummyMethod2).
+
+ self packageManager addMethod:mth1 toPackage:aPackage.
+ self packageManager addMethod:mth2 toPackage:aPackage.
+
+ self assert:(aPackage isDirty).
+
+ self packageManager savePackage:aPackage as:aFilename.
+
+ self shouldnt:(aPackage isDirty).
+
+ ] ensure:[
+ self packageManager unloadPackage:aPackage.
+ ]
+!
+
+test_saveAs
+ |aPackage aFilename|
+ [
+ aFilename := self testCaseDirectory filenameFor:'TestFileOutIn.pac'. "clear up"
+ self createTestCaseDirectory.
+ aPackage := self packageManager
+ newPackageNamed:'Dummy test case package'.
+ aPackage packageHandler filename:aFilename.
+
+ self packageManager addClass:QWERTZ toPackage:aPackage.
+ self packageManager addClass:QWERTY toPackage:aPackage.
+ self assert:(aPackage isDirty).
+
+ "tests"
+ self packageManager savePackage:aPackage as:aFilename.
+ self shouldnt:(aPackage isDirty).
+
+ ] ensure:[
+ self packageManager unloadPackage:aPackage.
+ ]
+! !
+
+!PackageTestCases methodsFor:'test - scripts'!
+
+test_postInstallScript
+ "tests if the postInstallScript is evaluated after installation"
+ |aPackage aFilename wasCalled|
+
+ aFilename := self testCaseDirectory filenameFor:'Test_postInstallScript.pac'. "clear up"
+ self createTestCaseDirectory.
+ [
+ aPackage := self packageManager newPackageNamed:'Testcase dummy package'.
+ aPackage packageHandler filename:aFilename.
+
+ self packageManager addClass:QWERTZ toPackage:aPackage.
+ self packageManager addClass:QWERTY toPackage:aPackage.
+
+ "setting method tested"
+ aPackage postInstallScriptString:'
+ self isInstalled ifTrue:[
+ self error:#thisWorked
+ ] ifFalse:[
+ self error:#thisFailed
+ ].
+ '.
+
+ self packageManager savePackage:aPackage.
+ self packageManager uninstallPackage:aPackage.
+
+ wasCalled := false.
+
+ Error handle:[:ex |
+ wasCalled := true.
+ self assert:(ex errorString = #thisWorked).
+ ] do:[
+ self packageManager installPackage:aPackage. "<--------- where it will be invoked"
+ self assert:(false).
+ ].
+ self assert:(wasCalled).
+
+ "tests"
+ self assert:(aPackage isInstalled).
+ self assertSmalltalkIncludesAllClassNames:aPackage classNames.
+ self assertSmalltalkIncludesAllLooseMethods:aPackage looseMethods.
+ ]
+ ensure:[
+
+ self clearUpFiles ifTrue:[
+ aFilename remove
+ ].
+ self packageManager unloadPackage:aPackage.
+ ]
+!
+
+test_postUninstallScript
+ "tests if the postUninstall script is evaluated after installation"
+ |aPackage aFilename wasCalled|
+ [
+ aPackage := self packageManager newPackageNamed:'Testcase dummy package'.
+ aPackage packageHandler filename:aFilename.
+
+ self packageManager addClass:QWERTZ toPackage:aPackage.
+ self packageManager addClass:QWERTY toPackage:aPackage.
+
+ "setting method tested"
+ aPackage postUninstallScriptString:'
+ self isInstalled ifTrue:[
+ self error:#thisFailed
+ ] ifFalse:[
+ self error:#thisWorked
+ ].
+ '.
+ wasCalled := false.
+ Error handle:[:ex |
+ wasCalled := true.
+ self assert:(ex errorString = #thisWorked).
+ ] do:[
+ "--------- where it will be invoked--------------"
+ self packageManager uninstallPackage:aPackage
+ ].
+ self assert:(wasCalled).
+ "tests"
+ self shouldnt:(aPackage isInstalled).
+ self shouldntSmalltalkIncludesAllClassNames:aPackage classNames.
+ ] ensure:[
+ self packageManager unloadPackage:aPackage.
+ ]
+!
+
+test_preInstallScript
+ "tests if the preinstall script is evaluated before installation"
+ |createdPackage aFilename loadedPackage|
+
+ aFilename := self testCaseDirectory filenameFor:'Test_preInstallScript.pac'. "clear up"
+ self createTestCaseDirectory.
+ [
+ createdPackage := self packageManager newPackageNamed:'Testcase dummy package'.
+
+ self packageManager addClass:QWERTZ toPackage:createdPackage.
+ self packageManager addClass:QWERTY toPackage:createdPackage.
+
+ createdPackage preInstallScriptString:'#thisWorked'. "<--------- the method tested"
+
+ self packageManager savePackage:createdPackage as:aFilename.
+ self packageManager unloadPackage:createdPackage.
+
+ loadedPackage := self packageManager loadPackageFromFile:aFilename.
+ self packageManager installPackage:loadedPackage.
+
+ "tests"
+ self assert:(loadedPackage preInstallScript evaluate) == #thisWorked.
+ self assert:(loadedPackage isInstalled).
+ self assertSmalltalkIncludesAllClassNames:loadedPackage classNames.
+ loadedPackage packagedClasses do:[:aPackagedClass |
+ "Does the class exists but the package has not backup?"
+ self assert:(aPackagedClass classDefinition notNil)
+ ].
+
+ ] ensure:[
+ self clearUpFiles ifTrue:[
+ aFilename remove
+ ].
+ loadedPackage ifNotNil:[
+ self packageManager unloadPackage:loadedPackage.
+ ].
+ ]
+!
+
+test_preInstallScript1
+ "tests if the preinstall script is evaluated before installation"
+ |aPackage aFilename|
+
+ aFilename := self testCaseDirectory filenameFor:'Test_preInstallScript1.pac'. "clear up"
+ self createTestCaseDirectory.
+ [
+ aPackage := self packageManager newPackageNamed:'Testcase dummy package'.
+ aPackage packageHandler filename:aFilename.
+
+ self packageManager addClass:QWERTZ toPackage:aPackage.
+ self packageManager addClass:QWERTY toPackage:aPackage.
+ "setting method tested"
+ aPackage preInstallScriptString:'
+ self isInstalled ifTrue:[
+ self error:#thisFailed
+ ] ifFalse:[
+ self error:#thisWorked
+ ].
+ '.
+ self packageManager savePackage:aPackage.
+ self packageManager uninstallPackage:aPackage.
+ Error handle:[:ex |
+ self assert:(ex errorString = #thisWorked).
+ ] do:[
+ "--------- where it will be invoked-------------"
+ self packageManager installPackage:aPackage.
+ ].
+
+ "tests"
+ self shouldnt:(aPackage isInstalled).
+ self shouldntSmalltalkIncludesAllClassNames:aPackage classNames
+ ] ensure:[
+ self clearUpFiles ifTrue:[
+ aFilename remove
+ ].
+ self packageManager unloadPackage:aPackage.
+
+ ]
+!
+
+test_preUninstallScript
+ "tests if the preUninstall script is evaluated before uninstallation"
+ |aPackage aFilename wasCalled|
+
+ aFilename := self testCaseDirectory filenameFor:'Test_preUninstallScript.pac'. "clear up"
+ self createTestCaseDirectory.
+ [
+ aPackage := self packageManager newPackageNamed:'Testcase dummy package'.
+ aPackage packageHandler filename:aFilename.
+
+ self packageManager addClass:QWERTZ toPackage:aPackage.
+ self packageManager addClass:QWERTY toPackage:aPackage.
+ "setting method tested"
+ aPackage preUninstallScriptString:'
+ self isInstalled ifTrue:[
+ self error:#thisWorked
+ ] ifFalse:[
+ self error:#thisFailed
+ ].
+ '.
+ wasCalled := false.
+ Error handle:[:ex |
+ wasCalled := true.
+ self assert:(ex errorString = #thisWorked).
+ ] do:[
+ "--------- where it will be invoked-------------"
+ self packageManager uninstallPackage:aPackage.
+ ].
+ self assert:(wasCalled).
+ "tests"
+ self assert:(aPackage isInstalled).
+ self assertSmalltalkIncludesAllClassNames:aPackage classNames
+ ] ensure:[
+ self clearUpFiles ifTrue:[
+ aFilename remove
+ ].
+ aPackage preUninstallScriptString:''.
+ self packageManager unloadPackage:aPackage.
+
+ ]
+! !
+
+!PackageTestCases methodsFor:'test_package prerequisites'!
+
+test_classPrerequisite
+ "tests if the classPrerequisite is evaluated before installation"
+ "
+ | inst |
+ inst := self basicNew.
+ inst setUp.
+ inst test_classPrerequisite.
+ inst tearDown
+ "
+ |aPackage aFilename |
+ aFilename := self testCaseDirectory filenameFor:'Test_classPrerequisite.pac'. "clear up"
+ self createTestCaseDirectory.
+ [
+ aPackage := self packageManager newPackageNamed:'Testcase dummy package'.
+ aPackage packageHandler filename:aFilename.
+
+ self packageManager addClass:QWERTZ toPackage:aPackage.
+ self packageManager addClass:QWERTY toPackage:aPackage.
+
+ "setting method tested"
+ aPackage addClassNamePrerequisite:#Object
+ ifFailString:'Packages::AbstractTestCase::PackageTestCaseNotification raiseErrorString:#thisWasCalled'.
+ self packageManager savePackage:aPackage.
+
+ self packageManager uninstallPackage:aPackage.
+ self packageTestCaseNotification handle:[:ex |
+ self assert:(ex errorString = #failed).
+ ] do:[
+ self packageManager installPackage:aPackage. "<--------- where it will be invoked"
+ "this should never be called. The prerequisite was never called or the class
+ ClassThatDoesNotExist does indeed exist!!"
+ ].
+
+ "tests"
+ self assert:(aPackage isInstalled).
+ self assertSmalltalkIncludesAllClassNames:aPackage classNames
+ ] ensure:[
+ self clearUpFiles ifTrue:[
+ aFilename remove
+ ].
+ ]
+!
+
+test_classPrerequisite1
+ "tests if the packagePrerequisite is evaluated before installation"
+ |aPackage aFilename |
+
+ aFilename := self testCaseDirectory filenameFor:'Test_classPrerequisite1.pac'. "clear up"
+ self createTestCaseDirectory.
+ [
+ aPackage := self packageManager newPackageNamed:'Testcase dummy package'.
+ aPackage packageHandler filename:aFilename.
+
+ self packageManager addClass:QWERTZ toPackage:aPackage.
+ self packageManager addClass:QWERTY toPackage:aPackage.
+
+ "setting method tested"
+ aPackage addClassNamePrerequisite:#ClassThatDoesNotExist
+ ifFailString:'Packages::AbstractTestCases::PackageTestCaseNotification raiseErrorString:#thisWorked'.
+
+ self packageManager savePackage:aPackage.
+ self packageManager uninstallPackage:aPackage.
+
+ self packageTestCaseNotification handle:[:ex |
+ self assert:(ex errorString = #thisWorked).
+ ] do:[
+
+ self packageManager installPackage:aPackage. "<--------- where it will be invoked"
+ "this should never be called. The prerequisite was never called or the class
+ ClassThatDoesNotExist does indeed exist!!"
+ self assert:(false).
+ ].
+
+ "tests"
+ self shouldnt:(aPackage isInstalled).
+ self shouldntSmalltalkIncludesAllClassNames:aPackage classNames
+ ] ensure:[
+ self clearUpFiles ifTrue:[
+ aFilename remove
+ ].
+ ]
+!
+
+test_packagePrerequisite1
+ "tests if the packagePrerequisite is evaluated before installation"
+ |aPackage aFilename |
+ aFilename := self testCaseDirectory filenameFor:'Test_packagePrerequisite1.pac'. "clear up"
+ self createTestCaseDirectory.
+ [
+ aPackage := self packageManager newPackageNamed:'Testcase dummy package'.
+ aPackage packageHandler filename:aFilename.
+
+ self packageManager addClass:QWERTY toPackage:aPackage.
+ self packageManager addClass:QWERTZ toPackage:aPackage.
+
+ "setting method tested"
+ aPackage addPackageNamePrerequisite:#PackageThatDoesNotExist
+ ifFailString:'Packages::AbstractTestCases::PackageTestCaseNotification raiseErrorString:#thisWorked'.
+ self packageManager savePackage:aPackage.
+ self packageManager uninstallPackage:aPackage.
+
+ self packageTestCaseNotification handle:[:ex |
+ self assert:(ex errorString = #thisWorked).
+ ] do:[
+ self packageManager installPackage:aPackage."<--------- where it will be invoked"
+
+ "this should never be called. The prerequisite was never called or the class
+ PackageThatDoesNotExist does indeed exist!!"
+ self assert:(false).
+ ].
+
+ "tests"
+ self shouldnt:(aPackage isInstalled).
+ self shouldntSmalltalkIncludesAllClassNames:aPackage classNames
+ ] ensure:[
+ self clearUpFiles ifTrue:[
+ aFilename remove
+ ].
+ self packageManager unloadPackage:aPackage.
+ ]
+! !
+
+!PackageTestCases class methodsFor:'documentation'!
+
+version
+ ^ '$Header: /cvs/stx/stx/libbasic3/packages/PackageTestCases.st,v 1.1 2003-04-09 11:23:18 james Exp $'
+! !