- stx_goodies_metacello_stx
added: #extensionMethodNames
changed:
#classNamesAndAttributes
#preRequisites
"{ Package: 'stx:goodies/metacello' }"
MetacelloSpecTestCase subclass:#MetacelloPackagesSpecTestCase
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'Metacello-TestsCore-Specs'
!
!MetacelloPackagesSpecTestCase methodsFor:'tests'!
testAddGroupA
"used by MetacelloAbstractVersionConstructor>>group:overrides:"
| packages group |
packages := self packagesSpec.
packages
add:
(self groupSpec
name: 'Platform';
includes: 'Core';
yourself).
packages
add:
(self groupSpec
name: 'Platform';
includes: 'Tests';
yourself).
group := packages packageNamed: 'Platform' ifAbsent: [ self assert: false ].
self deny: (group includes includes: 'Core').
self assert: (group includes includes: 'Tests')
!
testAddGroupB
"used by MetacelloAbstractVersionConstructor>>group:overrides:"
| packages group |
packages := self packagesSpec.
packages
add:
{(self groupSpec
name: 'Platform';
includes: 'Core';
yourself).
(self groupSpec
name: 'Platform';
includes: 'Tests';
yourself)}.
group := packages packageNamed: 'Platform' ifAbsent: [ self assert: false ].
self deny: (group includes includes: 'Core').
self assert: (group includes includes: 'Tests')
!
testAddProjectA
"used by MetacelloAbstractVersionConstructor>>project:overrides:"
| packages project projectReferenceSpec |
packages := self packagesSpec.
packages
add:
(self projectSpec
name: 'Project';
className: 'ConfigurationOfProjectA';
versionString: #'stable';
loads: #('MyPackage' 'MyTests');
preLoadDoIt: #'preLoadDoItB';
postLoadDoIt: #'postLoadDoItB';
yourself).
packages
add:
(self projectSpec
name: 'Project';
className: 'ConfigurationOfProject';
versionString: '1.0';
operator: #'<';
loads: #('MyPackage');
preLoadDoIt: #'preLoadDoIt';
postLoadDoIt: #'postLoadDoIt';
yourself).
projectReferenceSpec := packages packageNamed: 'Project' ifAbsent: [ self assert: false ].
self assert: projectReferenceSpec projectName = 'Project'.
self assert: projectReferenceSpec versionString = '1.0'.
self should: [ projectReferenceSpec includes: #() ] raise: Error.
self should: [ projectReferenceSpec requires: #() ] raise: Error.
self should: [ projectReferenceSpec answers: #() ] raise: Error.
projectReferenceSpec
projectDo: [ :prjct | self assert: projectReferenceSpec == prjct ]
packageDo: [ :ignored | self assert: false ]
groupDo: [ :ignored | self assert: false ].
project := projectReferenceSpec referencedSpec.
self assert: project name = 'Project'.
self assert: project className = 'ConfigurationOfProject'.
self assert: project versionString = '1.0'.
self assert: project operator == #'<'.
self assert: project loads = #('MyPackage').
self assert: project preLoadDoIt value == #'preLoadDoIt'.
self assert: project postLoadDoIt value == #'postLoadDoIt'.
project
projectDo: [ :prjct | self assert: project == prjct ]
packageDo: [ :ignored | self assert: false ]
groupDo: [ :ignored | self assert: false ]
!
testAddProjectB
"used by MetacelloAbstractVersionConstructor>>project:overrides:"
| packages project projectReferenceSpec |
packages := self packagesSpec.
packages
add:
{(self projectSpec
name: 'Project';
className: 'ConfigurationOfProjectA';
versionString: #'stable';
loads: #('MyPackage' 'MyTests');
preLoadDoIt: #'preLoadDoItB';
postLoadDoIt: #'postLoadDoItB';
yourself).
(self projectSpec
name: 'Project';
className: 'ConfigurationOfProject';
versionString: '1.0';
operator: #'<';
loads: #('MyPackage');
preLoadDoIt: #'preLoadDoIt';
postLoadDoIt: #'postLoadDoIt';
yourself)}.
projectReferenceSpec := packages packageNamed: 'Project' ifAbsent: [ self assert: false ].
self assert: projectReferenceSpec projectName = 'Project'.
self assert: projectReferenceSpec versionString = '1.0'.
self should: [ projectReferenceSpec includes: #() ] raise: Error.
self should: [ projectReferenceSpec requires: #() ] raise: Error.
self should: [ projectReferenceSpec answers: #() ] raise: Error.
projectReferenceSpec
projectDo: [ :prjct | self assert: projectReferenceSpec == prjct ]
packageDo: [ :ignored | self assert: false ]
groupDo: [ :ignored | self assert: false ].
project := projectReferenceSpec referencedSpec.
self assert: project name = 'Project'.
self assert: project className = 'ConfigurationOfProject'.
self assert: project versionString = '1.0'.
self assert: project operator == #'<'.
self assert: project loads = #('MyPackage').
self assert: project preLoadDoIt value == #'preLoadDoIt'.
self assert: project postLoadDoIt value == #'postLoadDoIt'.
project
projectDo: [ :prjct | self assert: project == prjct ]
packageDo: [ :ignored | self assert: false ]
groupDo: [ :ignored | self assert: false ]
!
testCopyToGroup
"not currently used by MetacelloAbstractVersionConstructor"
| packages group |
packages := self packagesSpec.
packages
add:
(self groupSpec
name: 'Platform';
includes: 'Core';
yourself).
packages
merge:
(self groupSpec
name: 'Platform';
includes: 'Tests';
yourself).
group := packages packageNamed: 'Platform' ifAbsent: [ self assert: false ].
self assert: (group includes includes: 'Core').
self assert: (group includes includes: 'Tests').
group := self groupSpec
name: 'PlatformCopy';
includes: 'Copy';
yourself.
packages copy: 'Platform' to: group.
group := packages packageNamed: 'PlatformCopy' ifAbsent: [ self assert: false ].
self assert: (group includes includes: 'Core').
self assert: (group includes includes: 'Copy').
self assert: (group includes includes: 'Tests')
!
testCopyToProject
"used by MetacelloAbstractVersionConstructor>>project:copyFrom:with:"
| packages project referenceSpec |
packages := self packagesSpec.
packages
add:
(self projectSpec
name: 'Project';
className: 'ConfigurationOfProjectA';
versionString: #'stable';
loads: #('MyPackage' 'MyTests');
preLoadDoIt: #'preLoadDoItB';
postLoadDoIt: #'postLoadDoItB';
yourself).
project := self projectSpec
name: 'ProjectCopy';
yourself.
referenceSpec := self project projectReferenceSpec
name: 'ProjectCopy';
projectReference: project;
yourself.
packages copy: 'Project' to: referenceSpec.
project := (packages packageNamed: 'ProjectCopy' ifAbsent: [ self assert: false ]) referencedSpec.
self assert: project name = 'ProjectCopy'.
self assert: project className = 'ConfigurationOfProjectA'.
self assert: project versionString = #'stable'.
self assert: project operator == #'>='.
self assert: project loads = #('MyPackage' 'MyTests').
self assert: project preLoadDoIt value == #'preLoadDoItB'.
self assert: project postLoadDoIt value == #'postLoadDoItB'
!
testMergeGroupA
"used by MetacelloAbstractVersionConstructor>>group:with:"
| packages group |
packages := self packagesSpec.
packages
add:
(self groupSpec
name: 'Platform';
includes: 'Core';
yourself).
packages
merge:
(self groupSpec
name: 'Platform';
includes: 'Tests';
yourself).
group := packages packageNamed: 'Platform' ifAbsent: [ self assert: false ].
self assert: (group includes includes: 'Core').
self assert: (group includes includes: 'Tests')
!
testMergeGroupB
"used by MetacelloAbstractVersionConstructor>>group:with:"
| packages group |
packages := self packagesSpec.
packages
add:
(self groupSpec
name: 'Platform';
includes: 'Core';
yourself).
packages
merge:
{(self groupSpec
name: 'Platform';
includes: 'Tests';
yourself)}.
group := packages packageNamed: 'Platform' ifAbsent: [ self assert: false ].
self assert: (group includes includes: 'Core').
self assert: (group includes includes: 'Tests')
!
testMergeProjectA
"used by MetacelloAbstractVersionConstructor>>project:with:"
| packages project projectReferenceSpec referenceSpec |
packages := self packagesSpec.
project := self projectSpec
name: 'Project';
className: 'ConfigurationOfProjectA';
versionString: #'stable';
loads: #('MyPackage' 'MyTests');
preLoadDoIt: #'preLoadDoItB';
postLoadDoIt: #'postLoadDoItB';
yourself.
referenceSpec := self project projectReferenceSpec
name: project name;
projectReference: project;
yourself.
packages add: referenceSpec.
project := self projectSpec
name: 'Project';
className: 'ConfigurationOfProject';
versionString: '1.0';
operator: #'<';
loads: #('MyPackage');
preLoadDoIt: #'preLoadDoIt';
postLoadDoIt: #'postLoadDoIt';
yourself.
referenceSpec := self project projectReferenceSpec
name: project name;
projectReference: project;
yourself.
packages merge: referenceSpec.
projectReferenceSpec := packages packageNamed: 'Project' ifAbsent: [ self assert: false ].
project := projectReferenceSpec referencedSpec.
self assert: project name = 'Project'.
self assert: project className = 'ConfigurationOfProject'.
self assert: project versionString = '1.0'.
self assert: project operator == #'<'.
self assert: project loads = #('MyPackage').
self assert: project preLoadDoIt value == #'preLoadDoIt'.
self assert: project postLoadDoIt value == #'postLoadDoIt'.
project
projectDo: [ :prjct | self assert: project == prjct ]
packageDo: [ :ignored | self assert: false ]
groupDo: [ :ignored | self assert: false ]
!
testMergeProjectB
"used by MetacelloAbstractVersionConstructor>>project:with:"
| packages project projectReferenceSpec referenceSpec |
packages := self packagesSpec.
project := self projectSpec
name: 'Project';
className: 'ConfigurationOfProjectA';
versionString: #'stable';
loads: #('MyPackage' 'MyTests');
preLoadDoIt: #'preLoadDoItB';
postLoadDoIt: #'postLoadDoItB';
yourself.
referenceSpec := self project projectReferenceSpec
name: project name;
projectReference: project;
yourself.
packages add: referenceSpec.
project := self projectSpec
name: 'Project';
className: 'ConfigurationOfProject';
versionString: '1.0';
operator: #'<';
loads: #('MyPackage');
preLoadDoIt: #'preLoadDoIt';
postLoadDoIt: #'postLoadDoIt';
yourself.
referenceSpec := self project projectReferenceSpec
name: project name;
projectReference: project;
yourself.
packages merge: {referenceSpec}.
projectReferenceSpec := packages packageNamed: 'Project' ifAbsent: [ self assert: false ].
project := projectReferenceSpec referencedSpec.
self assert: project name = 'Project'.
self assert: project className = 'ConfigurationOfProject'.
self assert: project versionString = '1.0'.
self assert: project operator == #'<'.
self assert: project loads = #('MyPackage').
self assert: project preLoadDoIt value == #'preLoadDoIt'.
self assert: project postLoadDoIt value == #'postLoadDoIt'.
project
projectDo: [ :prjct | self assert: project == prjct ]
packageDo: [ :ignored | self assert: false ]
groupDo: [ :ignored | self assert: false ]
!
testRemoveGroupA
"used by MetacelloAbstractVersionConstructor>>removeGroup:"
| packages group removed |
packages := self packagesSpec.
packages
add:
(self groupSpec
name: 'Platform';
includes: 'Core';
yourself).
packages
merge:
(self groupSpec
name: 'Platform';
includes: 'Tests';
yourself).
group := packages packageNamed: 'Platform' ifAbsent: [ self assert: false ].
self assert: (group includes includes: 'Core').
self assert: (group includes includes: 'Tests').
packages
remove:
(self groupSpec
name: 'Platform';
includes: 'Core';
yourself).
removed := false.
packages packageNamed: 'Platform' ifAbsent: [ removed := true ].
self assert: removed
!
testRemoveGroupB
"used by MetacelloAbstractVersionConstructor>>removeGroup:"
| packages group removed |
packages := self packagesSpec.
packages
add:
{(self groupSpec
name: 'Platform';
includes: 'Core';
yourself).
(self groupSpec
name: 'Base';
includes: 'Base';
yourself).
(self groupSpec
name: 'Tests';
includes: 'Tests';
yourself)}.
packages packageNamed: 'Platform' ifAbsent: [ self assert: false ].
packages packageNamed: 'Base' ifAbsent: [ self assert: false ].
packages packageNamed: 'Tests' ifAbsent: [ self assert: false ].
packages
remove:
{'Base'.
'Tests'}.
packages packageNamed: 'Platform' ifAbsent: [ self assert: false ].
removed := false.
packages packageNamed: 'Base' ifAbsent: [ removed := true ].
self assert: removed.
removed := false.
packages packageNamed: 'Tests' ifAbsent: [ removed := true ].
self assert: removed
!
testRemoveGroupC
"used by MetacelloAbstractVersionConstructor>>removeGroup:"
| packages group removed |
packages := self packagesSpec.
packages
add:
{(self groupSpec
name: 'Platform';
includes: 'Core';
yourself).
(self groupSpec
name: 'Base';
includes: 'Base';
yourself).
(self groupSpec
name: 'Tests';
includes: 'Tests';
yourself)}.
packages packageNamed: 'Platform' ifAbsent: [ self assert: false ].
packages packageNamed: 'Base' ifAbsent: [ self assert: false ].
packages packageNamed: 'Tests' ifAbsent: [ self assert: false ].
packages remove: 'Tests'.
packages packageNamed: 'Platform' ifAbsent: [ self assert: false ].
packages packageNamed: 'Base' ifAbsent: [ self assert: false ].
removed := false.
packages packageNamed: 'Tests' ifAbsent: [ removed := true ].
self assert: removed
!
testRemoveProjectA
"used by MetacelloAbstractVersionConstructor>>removeProject:"
| packages project projectReferenceSpec removed |
packages := self packagesSpec.
packages
add:
(self projectSpec
name: 'Project';
className: 'ConfigurationOfProject';
versionString: '1.0';
operator: #'<';
loads: #('MyPackage');
preLoadDoIt: #'preLoadDoIt';
postLoadDoIt: #'postLoadDoIt';
yourself).
projectReferenceSpec := packages packageNamed: 'Project' ifAbsent: [ self assert: false ].
project := projectReferenceSpec referencedSpec.
self assert: project name = 'Project'.
self assert: project className = 'ConfigurationOfProject'.
self assert: project versionString = '1.0'.
self assert: project operator == #'<'.
self assert: project loads = #('MyPackage').
self assert: project preLoadDoIt value == #'preLoadDoIt'.
self assert: project postLoadDoIt value == #'postLoadDoIt'.
packages
remove:
(self projectReferenceSpec
name: 'Project';
yourself).
removed := false.
packages packageNamed: 'Project' ifAbsent: [ removed := true ].
self assert: removed
!
testRemoveProjectB
"used by MetacelloAbstractVersionConstructor>>removeProject:"
| packages project projectReferenceSpec removed |
packages := self packagesSpec.
packages
add:
(self projectSpec
name: 'Project';
className: 'ConfigurationOfProject';
versionString: '1.0';
operator: #'<';
loads: #('MyPackage');
preLoadDoIt: #'preLoadDoIt';
postLoadDoIt: #'postLoadDoIt';
yourself).
projectReferenceSpec := packages packageNamed: 'Project' ifAbsent: [ self assert: false ].
project := projectReferenceSpec referencedSpec.
self assert: project name = 'Project'.
self assert: project className = 'ConfigurationOfProject'.
self assert: project versionString = '1.0'.
self assert: project operator == #'<'.
self assert: project loads = #('MyPackage').
self assert: project preLoadDoIt value == #'preLoadDoIt'.
self assert: project postLoadDoIt value == #'postLoadDoIt'.
packages
remove:
{(self projectReferenceSpec
name: 'Project';
yourself)}.
removed := false.
packages packageNamed: 'Project' ifAbsent: [ removed := true ].
self assert: removed
! !
!MetacelloPackagesSpecTestCase class methodsFor:'documentation'!
version_SVN
^ '$Id:: $'
! !