|
@@ -2,7 +2,105 @@ define("helios/Helios-SUnit", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_
|
|
|
smalltalk.addPackage('Helios-SUnit');
|
|
|
smalltalk.packages["Helios-SUnit"].transport = {"type":"amd","amdNamespace":"helios"};
|
|
|
|
|
|
-smalltalk.addClass('HLSUnit', globals.HLWidget, [], 'Helios-SUnit');
|
|
|
+smalltalk.addClass('HLSUnit', globals.HLWidget, ['model', 'packagesListWidget', 'resultWidget'], 'Helios-SUnit');
|
|
|
+globals.HLSUnit.comment="I am the main widget for running unit tests in Helios.\x0a\x0aI provide the ability to select set of tests to run per package, and a detailed result log with passed tests, failed tests and errors.";
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "model",
|
|
|
+protocol: 'accessing',
|
|
|
+fn: function (){
|
|
|
+var self=this;
|
|
|
+function $HLSUnitModel(){return globals.HLSUnitModel||(typeof HLSUnitModel=="undefined"?nil:HLSUnitModel)}
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
+var $2,$1;
|
|
|
+$2=self["@model"];
|
|
|
+if(($receiver = $2) == nil || $receiver == null){
|
|
|
+self["@model"]=_st($HLSUnitModel())._new();
|
|
|
+$1=self["@model"];
|
|
|
+} else {
|
|
|
+$1=$2;
|
|
|
+};
|
|
|
+return $1;
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"model",{},globals.HLSUnit)})},
|
|
|
+args: [],
|
|
|
+source: "model\x0a\x09^ model ifNil: [ model := HLSUnitModel new ]",
|
|
|
+messageSends: ["ifNil:", "new"],
|
|
|
+referencedClasses: ["HLSUnitModel"]
|
|
|
+}),
|
|
|
+globals.HLSUnit);
|
|
|
+
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "packagesListWidget",
|
|
|
+protocol: 'widgets',
|
|
|
+fn: function (){
|
|
|
+var self=this;
|
|
|
+function $HLSUnitPackagesListWidget(){return globals.HLSUnitPackagesListWidget||(typeof HLSUnitPackagesListWidget=="undefined"?nil:HLSUnitPackagesListWidget)}
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
+var $2,$1;
|
|
|
+$2=self["@packagesListWidget"];
|
|
|
+if(($receiver = $2) == nil || $receiver == null){
|
|
|
+self["@packagesListWidget"]=_st($HLSUnitPackagesListWidget())._on_(self._model());
|
|
|
+$1=self["@packagesListWidget"];
|
|
|
+} else {
|
|
|
+$1=$2;
|
|
|
+};
|
|
|
+return $1;
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"packagesListWidget",{},globals.HLSUnit)})},
|
|
|
+args: [],
|
|
|
+source: "packagesListWidget\x0a\x09^ packagesListWidget ifNil: [ \x0a\x09\x09packagesListWidget := HLSUnitPackagesListWidget on: self model ]",
|
|
|
+messageSends: ["ifNil:", "on:", "model"],
|
|
|
+referencedClasses: ["HLSUnitPackagesListWidget"]
|
|
|
+}),
|
|
|
+globals.HLSUnit);
|
|
|
+
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "renderContentOn:",
|
|
|
+protocol: 'rendering',
|
|
|
+fn: function (html){
|
|
|
+var self=this;
|
|
|
+function $HLVerticalSplitter(){return globals.HLVerticalSplitter||(typeof HLVerticalSplitter=="undefined"?nil:HLVerticalSplitter)}
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
+var $2,$1;
|
|
|
+$2=self._packagesListWidget();
|
|
|
+$ctx1.sendIdx["packagesListWidget"]=1;
|
|
|
+$1=_st($HLVerticalSplitter())._with_with_($2,self._resultWidget());
|
|
|
+_st(html)._with_($1);
|
|
|
+_st(self._packagesListWidget())._focus();
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},globals.HLSUnit)})},
|
|
|
+args: ["html"],
|
|
|
+source: "renderContentOn: html\x0a\x09html with: (HLVerticalSplitter\x0a with: self packagesListWidget \x0a with: self resultWidget).\x0a\x09\x0a\x09self packagesListWidget focus",
|
|
|
+messageSends: ["with:", "with:with:", "packagesListWidget", "resultWidget", "focus"],
|
|
|
+referencedClasses: ["HLVerticalSplitter"]
|
|
|
+}),
|
|
|
+globals.HLSUnit);
|
|
|
+
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "resultWidget",
|
|
|
+protocol: 'widgets',
|
|
|
+fn: function (){
|
|
|
+var self=this;
|
|
|
+function $HLWidget(){return globals.HLWidget||(typeof HLWidget=="undefined"?nil:HLWidget)}
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
+var $2,$1;
|
|
|
+$2=self["@resultWidget"];
|
|
|
+if(($receiver = $2) == nil || $receiver == null){
|
|
|
+self["@resultWidget"]=_st($HLWidget())._new();
|
|
|
+$1=self["@resultWidget"];
|
|
|
+} else {
|
|
|
+$1=$2;
|
|
|
+};
|
|
|
+return $1;
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"resultWidget",{},globals.HLSUnit)})},
|
|
|
+args: [],
|
|
|
+source: "resultWidget\x0a\x09^ resultWidget ifNil: [\x0a\x09\x09resultWidget := HLWidget new ]",
|
|
|
+messageSends: ["ifNil:", "new"],
|
|
|
+referencedClasses: ["HLWidget"]
|
|
|
+}),
|
|
|
+globals.HLSUnit);
|
|
|
+
|
|
|
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
@@ -64,4 +162,143 @@ referencedClasses: []
|
|
|
}),
|
|
|
globals.HLSUnit.klass);
|
|
|
|
|
|
+
|
|
|
+smalltalk.addClass('HLSUnitModel', globals.HLModel, ['selectedPackages'], 'Helios-SUnit');
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "selectPackage:",
|
|
|
+protocol: 'actions',
|
|
|
+fn: function (aPackage){
|
|
|
+var self=this;
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
+_st(self._packages())._add_(aPackage);
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"selectPackage:",{aPackage:aPackage},globals.HLSUnitModel)})},
|
|
|
+args: ["aPackage"],
|
|
|
+source: "selectPackage: aPackage\x0a\x09self packages add: aPackage",
|
|
|
+messageSends: ["add:", "packages"],
|
|
|
+referencedClasses: []
|
|
|
+}),
|
|
|
+globals.HLSUnitModel);
|
|
|
+
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "selectedPackages",
|
|
|
+protocol: 'accessing',
|
|
|
+fn: function (){
|
|
|
+var self=this;
|
|
|
+function $Set(){return globals.Set||(typeof Set=="undefined"?nil:Set)}
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
+var $2,$1;
|
|
|
+$2=self["@selectedPackages"];
|
|
|
+if(($receiver = $2) == nil || $receiver == null){
|
|
|
+self["@selectedPackages"]=_st($Set())._new();
|
|
|
+$1=self["@selectedPackages"];
|
|
|
+} else {
|
|
|
+$1=$2;
|
|
|
+};
|
|
|
+return $1;
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"selectedPackages",{},globals.HLSUnitModel)})},
|
|
|
+args: [],
|
|
|
+source: "selectedPackages\x0a\x09^ selectedPackages ifNil: [ selectedPackages := Set new ]",
|
|
|
+messageSends: ["ifNil:", "new"],
|
|
|
+referencedClasses: ["Set"]
|
|
|
+}),
|
|
|
+globals.HLSUnitModel);
|
|
|
+
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "testPackages",
|
|
|
+protocol: 'accessing',
|
|
|
+fn: function (){
|
|
|
+var self=this;
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
+var $1;
|
|
|
+$1=_st(_st(self._environment())._packages())._select_((function(each){
|
|
|
+return smalltalk.withContext(function($ctx2) {
|
|
|
+return _st(each)._isTestPackage();
|
|
|
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
|
|
|
+return $1;
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"testPackages",{},globals.HLSUnitModel)})},
|
|
|
+args: [],
|
|
|
+source: "testPackages\x0a\x09\x22Answer all packages containing concrete subclasses of TestCase\x22\x0a\x09\x0a\x09^ self environment packages \x0a\x09\x09select: [ :each | each isTestPackage ]",
|
|
|
+messageSends: ["select:", "packages", "environment", "isTestPackage"],
|
|
|
+referencedClasses: []
|
|
|
+}),
|
|
|
+globals.HLSUnitModel);
|
|
|
+
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "unselectPackage:",
|
|
|
+protocol: 'actions',
|
|
|
+fn: function (aPackage){
|
|
|
+var self=this;
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
+_st(self._packages())._remove_ifAbsent_(aPackage,(function(){
|
|
|
+}));
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"unselectPackage:",{aPackage:aPackage},globals.HLSUnitModel)})},
|
|
|
+args: ["aPackage"],
|
|
|
+source: "unselectPackage: aPackage\x0a\x09self packages remove: aPackage ifAbsent: []",
|
|
|
+messageSends: ["remove:ifAbsent:", "packages"],
|
|
|
+referencedClasses: []
|
|
|
+}),
|
|
|
+globals.HLSUnitModel);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+smalltalk.addClass('HLSUnitPackagesListWidget', globals.HLWidget, ['model'], 'Helios-SUnit');
|
|
|
+globals.HLSUnitPackagesListWidget.comment="I display a list of packages for which unit tests are associated (packages containing subclasses of `TestCase`).";
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "model",
|
|
|
+protocol: 'accessing',
|
|
|
+fn: function (){
|
|
|
+var self=this;
|
|
|
+var $1;
|
|
|
+$1=self["@model"];
|
|
|
+return $1;
|
|
|
+},
|
|
|
+args: [],
|
|
|
+source: "model\x0a\x09^ model",
|
|
|
+messageSends: [],
|
|
|
+referencedClasses: []
|
|
|
+}),
|
|
|
+globals.HLSUnitPackagesListWidget);
|
|
|
+
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "model:",
|
|
|
+protocol: 'accessing',
|
|
|
+fn: function (anObject){
|
|
|
+var self=this;
|
|
|
+self["@model"]=anObject;
|
|
|
+return self},
|
|
|
+args: ["anObject"],
|
|
|
+source: "model: anObject\x0a\x09model := anObject",
|
|
|
+messageSends: [],
|
|
|
+referencedClasses: []
|
|
|
+}),
|
|
|
+globals.HLSUnitPackagesListWidget);
|
|
|
+
|
|
|
+
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "on:",
|
|
|
+protocol: 'instance creation',
|
|
|
+fn: function (aSUnitModel){
|
|
|
+var self=this;
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
+var $2,$3,$1;
|
|
|
+$2=self._new();
|
|
|
+_st($2)._model_(aSUnitModel);
|
|
|
+$3=_st($2)._yourself();
|
|
|
+$1=$3;
|
|
|
+return $1;
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"on:",{aSUnitModel:aSUnitModel},globals.HLSUnitPackagesListWidget.klass)})},
|
|
|
+args: ["aSUnitModel"],
|
|
|
+source: "on: aSUnitModel\x0a\x09^ self new\x0a\x09\x09model: aSUnitModel;\x0a\x09\x09yourself",
|
|
|
+messageSends: ["model:", "new", "yourself"],
|
|
|
+referencedClasses: []
|
|
|
+}),
|
|
|
+globals.HLSUnitPackagesListWidget.klass);
|
|
|
+
|
|
|
});
|