[squeak-dev] The Trunk: ToolsTests-ct.117.mcz
commits at source.squeak.org
commits at source.squeak.org
Fri Nov 25 17:19:53 UTC 2022
Christoph Thiede uploaded a new version of ToolsTests to project The Trunk:
http://source.squeak.org/trunk/ToolsTests-ct.117.mcz
==================== Summary ====================
Name: ToolsTests-ct.117
Author: ct
Time: 25 November 2022, 6:19:53.110214 pm
UUID: 8fd1a806-e8a6-a942-8dcd-28e258d88d39
Ancestors: ToolsTests-jar.116
Complements Kernel-ct.1493 (recursive process-faithful debugging)/merges recursive-profaide. Also adds an e2e test for simple process-faithful debugging.
=============== Diff against ToolsTests-jar.116 ===============
Item was added:
+ ----- Method: DebuggerTests>>test25ProcessFaithfulDebugging (in category 'tests') -----
+ test25ProcessFaithfulDebugging
+ "Debugging a process which sends Processor activeProcess should have the same effect as running the process directly. End-to-end equivalent for ProcessTest>>#testProcessFaithfulSimulation."
+
+ | userProcess |
+ process := Process forBlock: [
+ Processor activeProcess environmentAt: #plonk put: 42.
+ Processor activeProcess suspend.
+ Processor activeProcess environmentAt: #plonk].
+ process resume.
+ Processor yield.
+ self assert: (process environmentAt: #plonk) = 42.
+
+ debugger := process debug.
+
+ [userProcess := [debugger stepOver "suspend"; stepOver "activeProcess"; stepOver "environmentAt:"] fork.
+ Processor yield.
+
+ self deny: [process isTerminated].
+ self assert: [userProcess isTerminated].
+ self assert: [process suspendedContext willReturn and: [process suspendedContext top = 42]].
+ self assert: (userProcess environmentAt: #plonk ifAbsent: []) = nil]
+
+ ensure: [
+ process terminateAggressively.
+ debugger close.
+ process := userProcess.
+ self findDebugger "for correct tearDown"].!
Item was added:
+ ----- Method: DebuggerTests>>test26RecursiveProcessFaithfulDebugging (in category 'tests') -----
+ test26RecursiveProcessFaithfulDebugging
+ "Debugging the debugger for a process which sends Processor activeProcess should have the same effect as running the original debugger directly. End-to-end equivalent for ProcessTest>>#testProcessFaithfulSimulationMeta."
+
+ | userProcess metaDebugger metaProcess |
+ process := Process forBlock: [
+ Processor activeProcess environmentAt: #plonk put: 42.
+ Processor activeProcess suspend.
+ Processor activeProcess environmentAt: #plonk].
+ process resume.
+ Processor yield.
+ self assert: (process environmentAt: #plonk) = 42.
+
+ debugger := process debug.
+ metaProcess := Process forBlock: [
+ [debugger stepOver "suspend"; stepOver "activeProcess"; stepOver "environmentAt:"] value].
+ metaDebugger := metaProcess debug.
+
+ [userProcess := [metaDebugger stepOver "value"] fork.
+ Processor yield.
+
+ self deny: [process isTerminated].
+ self assert: [userProcess isTerminated].
+ self assert: [process suspendedContext willReturn and: [process suspendedContext top = 42]].
+ self assert: (userProcess environmentAt: #plonk ifAbsent: []) = nil]
+
+ ensure: [
+ process terminateAggressively.
+ debugger close.
+ metaProcess terminateAggressively.
+ metaDebugger close.
+ process := userProcess.
+ self findDebugger "for correct tearDown"].!
More information about the Squeak-dev
mailing list
|