|
@@ -663,7 +663,7 @@ smalltalk.TestResult);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-smalltalk.addClass('TestSuiteRunner', smalltalk.Object, ['suite', 'result', 'announcer'], 'SUnit');
|
|
|
|
|
|
+smalltalk.addClass('TestSuiteRunner', smalltalk.Object, ['suite', 'result', 'announcer', 'worker'], 'SUnit');
|
|
smalltalk.addMethod(
|
|
smalltalk.addMethod(
|
|
"_announcer",
|
|
"_announcer",
|
|
smalltalk.method({
|
|
smalltalk.method({
|
|
@@ -690,10 +690,19 @@ var self=this;
|
|
smalltalk.send(self,"_initialize",[],smalltalk.Object);
|
|
smalltalk.send(self,"_initialize",[],smalltalk.Object);
|
|
self["@announcer"]=smalltalk.send((smalltalk.Announcer || Announcer),"_new",[]);
|
|
self["@announcer"]=smalltalk.send((smalltalk.Announcer || Announcer),"_new",[]);
|
|
self["@result"]=smalltalk.send((smalltalk.TestResult || TestResult),"_new",[]);
|
|
self["@result"]=smalltalk.send((smalltalk.TestResult || TestResult),"_new",[]);
|
|
|
|
+self["@worker"]=(function(){
|
|
|
|
+return smalltalk.send(self["@result"],"_nextRunDo_",[(function(index){
|
|
|
|
+return smalltalk.send((function(){
|
|
|
|
+return smalltalk.send(self["@result"],"_runCase_",[smalltalk.send(self["@suite"],"_at_",[index])]);
|
|
|
|
+}),"_ensure_",[(function(){
|
|
|
|
+return smalltalk.send(self,"_resume",[]);
|
|
|
|
+})]);
|
|
|
|
+})]);
|
|
|
|
+});
|
|
return self},
|
|
return self},
|
|
args: [],
|
|
args: [],
|
|
-source: "initialize\x0a\x09super initialize.\x0a\x09announcer := Announcer new.\x0a result := TestResult new",
|
|
|
|
-messageSends: ["initialize", "new"],
|
|
|
|
|
|
+source: "initialize\x0a\x09super initialize.\x0a\x09announcer := Announcer new.\x0a result := TestResult new.\x0a worker := [ result nextRunDo: [ :index |\x0a\x09\x09[ result runCase: (suite at: index) ]\x0a\x09\x09ensure: [ self resume ]]].\x0a",
|
|
|
|
+messageSends: ["initialize", "new", "nextRunDo:", "ensure:", "resume", "runCase:", "at:"],
|
|
referencedClasses: ["Announcer", "TestResult"]
|
|
referencedClasses: ["Announcer", "TestResult"]
|
|
}),
|
|
}),
|
|
smalltalk.TestSuiteRunner);
|
|
smalltalk.TestSuiteRunner);
|
|
@@ -714,6 +723,23 @@ referencedClasses: []
|
|
}),
|
|
}),
|
|
smalltalk.TestSuiteRunner);
|
|
smalltalk.TestSuiteRunner);
|
|
|
|
|
|
|
|
+smalltalk.addMethod(
|
|
|
|
+"_resume",
|
|
|
|
+smalltalk.method({
|
|
|
|
+selector: "resume",
|
|
|
|
+category: 'actions',
|
|
|
|
+fn: function (){
|
|
|
|
+var self=this;
|
|
|
|
+smalltalk.send(self["@worker"],"_fork",[]);
|
|
|
|
+smalltalk.send(self["@announcer"],"_announce_",[smalltalk.send(smalltalk.send((smalltalk.ResultAnnouncement || ResultAnnouncement),"_new",[]),"_result_",[self["@result"]])]);
|
|
|
|
+return self},
|
|
|
|
+args: [],
|
|
|
|
+source: "resume\x0a\x09worker fork.\x0a announcer announce: (ResultAnnouncement new result: result)\x0a",
|
|
|
|
+messageSends: ["fork", "announce:", "result:", "new"],
|
|
|
|
+referencedClasses: ["ResultAnnouncement"]
|
|
|
|
+}),
|
|
|
|
+smalltalk.TestSuiteRunner);
|
|
|
|
+
|
|
smalltalk.addMethod(
|
|
smalltalk.addMethod(
|
|
"_run",
|
|
"_run",
|
|
smalltalk.method({
|
|
smalltalk.method({
|
|
@@ -721,25 +747,13 @@ selector: "run",
|
|
category: 'actions',
|
|
category: 'actions',
|
|
fn: function (){
|
|
fn: function (){
|
|
var self=this;
|
|
var self=this;
|
|
-var worker;
|
|
|
|
smalltalk.send(self["@result"],"_total_",[smalltalk.send(self["@suite"],"_size",[])]);
|
|
smalltalk.send(self["@result"],"_total_",[smalltalk.send(self["@suite"],"_size",[])]);
|
|
-smalltalk.send(self["@announcer"],"_announce_",[smalltalk.send(smalltalk.send((smalltalk.ResultAnnouncement || ResultAnnouncement),"_new",[]),"_result_",[self["@result"]])]);
|
|
|
|
-worker=(function(){
|
|
|
|
-return smalltalk.send(self["@result"],"_nextRunDo_",[(function(index){
|
|
|
|
-return smalltalk.send((function(){
|
|
|
|
-return smalltalk.send(self["@result"],"_runCase_",[smalltalk.send(self["@suite"],"_at_",[index])]);
|
|
|
|
-}),"_ensure_",[(function(){
|
|
|
|
-smalltalk.send(worker,"_fork",[]);
|
|
|
|
-return smalltalk.send(self["@announcer"],"_announce_",[smalltalk.send(smalltalk.send((smalltalk.ResultAnnouncement || ResultAnnouncement),"_new",[]),"_result_",[self["@result"]])]);
|
|
|
|
-})]);
|
|
|
|
-})]);
|
|
|
|
-});
|
|
|
|
-smalltalk.send(worker,"_fork",[]);
|
|
|
|
|
|
+smalltalk.send(self,"_resume",[]);
|
|
return self},
|
|
return self},
|
|
args: [],
|
|
args: [],
|
|
-source: "run\x0a\x09| worker |\x0a\x09result total: suite size.\x0a announcer announce: (ResultAnnouncement new result: result).\x0a worker := [ result nextRunDo: [ :index |\x0a\x09\x09[ result runCase: (suite at: index) ]\x0a\x09\x09ensure: [ worker fork.\x0a \x09announcer announce: (ResultAnnouncement new result: result) ]]].\x0a\x09worker fork",
|
|
|
|
-messageSends: ["total:", "size", "announce:", "result:", "new", "nextRunDo:", "ensure:", "fork", "runCase:", "at:"],
|
|
|
|
-referencedClasses: ["ResultAnnouncement"]
|
|
|
|
|
|
+source: "run\x0a\x09result total: suite size.\x0a\x09self resume",
|
|
|
|
+messageSends: ["total:", "size", "resume"],
|
|
|
|
+referencedClasses: []
|
|
}),
|
|
}),
|
|
smalltalk.TestSuiteRunner);
|
|
smalltalk.TestSuiteRunner);
|
|
|
|
|