Helios-SUnit.st 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. Smalltalk createPackage: 'Helios-SUnit'!
  2. HLWidget subclass: #HLSUnit
  3. instanceVariableNames: 'model packagesListWidget resultWidget'
  4. package: 'Helios-SUnit'!
  5. !HLSUnit commentStamp!
  6. I am the main widget for running unit tests in Helios.
  7. I provide the ability to select set of tests to run per package, and a detailed result log with passed tests, failed tests and errors.!
  8. !HLSUnit methodsFor: 'accessing'!
  9. model
  10. ^ model ifNil: [ model := HLSUnitModel new ]
  11. ! !
  12. !HLSUnit methodsFor: 'rendering'!
  13. renderContentOn: html
  14. html with: (HLVerticalSplitter
  15. with: self packagesListWidget
  16. with: self resultWidget).
  17. self packagesListWidget focus
  18. ! !
  19. !HLSUnit methodsFor: 'widgets'!
  20. packagesListWidget
  21. ^ packagesListWidget ifNil: [
  22. packagesListWidget := HLSUnitPackagesListWidget on: self model ]
  23. !
  24. resultWidget
  25. ^ resultWidget ifNil: [
  26. resultWidget := HLWidget new ]
  27. ! !
  28. !HLSUnit class methodsFor: 'accessing'!
  29. tabClass
  30. ^ 'sunit'
  31. !
  32. tabLabel
  33. ^ 'SUnit'
  34. !
  35. tabPriority
  36. ^ 1000
  37. ! !
  38. !HLSUnit class methodsFor: 'testing'!
  39. canBeOpenAsTab
  40. ^ true
  41. ! !
  42. HLModel subclass: #HLSUnitModel
  43. instanceVariableNames: 'selectedPackages'
  44. package: 'Helios-SUnit'!
  45. !HLSUnitModel methodsFor: 'accessing'!
  46. selectedPackages
  47. ^ selectedPackages ifNil: [ selectedPackages := Set new ]
  48. !
  49. testPackages
  50. "Answer all packages containing concrete subclasses of TestCase"
  51. ^ self environment packages
  52. select: [ :each | each isTestPackage ]
  53. ! !
  54. !HLSUnitModel methodsFor: 'actions'!
  55. selectPackage: aPackage
  56. self packages add: aPackage
  57. !
  58. unselectPackage: aPackage
  59. self packages remove: aPackage ifAbsent: []
  60. ! !
  61. HLWidget subclass: #HLSUnitPackagesListWidget
  62. instanceVariableNames: 'model'
  63. package: 'Helios-SUnit'!
  64. !HLSUnitPackagesListWidget commentStamp!
  65. I display a list of packages for which unit tests are associated (packages containing subclasses of `TestCase`).!
  66. !HLSUnitPackagesListWidget methodsFor: 'accessing'!
  67. model
  68. ^ model
  69. !
  70. model: anObject
  71. model := anObject
  72. ! !
  73. !HLSUnitPackagesListWidget class methodsFor: 'instance creation'!
  74. on: aSUnitModel
  75. ^ self new
  76. model: aSUnitModel;
  77. yourself
  78. ! !