# running Build.PL Set up gcc environment - 3.3 Set up gcc environment - 3.3 Set up gcc environment - 3.3 /export/home/cpanrun/build/5.10.0/bin/perl Build.PL Set up gcc environment - 3.3 Set up gcc environment - 3.3 * Optional prerequisite GraphViz is not installed ERRORS/WARNINGS FOUND IN PREREQUISITES. You may wish to install the versions of the modules indicated above before proceeding with this installation Checking whether your kit is complete... Looks good Checking prerequisites... Creating new 'Build' script for 'FSA-Rules' version '0.26' Set up gcc environment - 3.3 /export/home/cpanrun/build/5.10.0/bin/perl Build --makefile_env_macros 1 Set up gcc environment - 3.3 Set up gcc environment - 3.3 Set up gcc environment - 3.3 Set up gcc environment - 3.3 Copying lib/FSA/Rules.pm -> blib/lib/FSA/Rules.pm Manifying blib/lib/FSA/Rules.pm -> blib/libdoc/FSA::Rules.3 Build: blib/lib/FSA/Rules.pm: cannot resolve L in paragraph 20. Build: blib/lib/FSA/Rules.pm: cannot resolve L in paragraph 238. Build: blib/lib/FSA/Rules.pm: cannot resolve L in paragraph 238. HTMLifying blib/lib/FSA/Rules.pm -> blib/libhtml/site/lib/FSA/Rules.html /export/home/cpanrun/build/5.10.0/bin/perl Build --makefile_env_macros 1 test Set up gcc environment - 3.3 Set up gcc environment - 3.3 Set up gcc environment - 3.3 Set up gcc environment - 3.3 t/base............1..316 ok 1 - use FSA::Rules; ok 2 - Construct an empty state machine ok 3 - The object isa FSA::Rules ok 4 - Construct with a single state ok 5 - ... The current state should be undefined ok 6 - ... We should be able to set the state ok 7 - The object isa FSA::State ok 8 - ... The name of the current state should be 'foo' ok 9 - ... The label should be undef ok 10 - ... The state object should return the machine ok 11 - ... The current state should be 'foo' ok 12 - ... It should not be done ok 13 - ... But we can set doneness ok 14 - ... And then retreive that value ok 15 - ... It should not be strict ok 16 - ... But we can set strict ok 17 - ... And now strict is turned on ok 18 - ... Assigning a bogus state should fail ok 19 - ... And throw the proper exception ok 20 - Construct with a single state with an action ok 21 - ... The current state should be undefined ok 22 - ... The code should not have been executed ok 23 - ... We should be able to set the state ok 24 - The object isa FSA::State ok 25 - ... The name of the current state should be 'foo' ok 26 - The label should be set ok 27 - ... The current state should be 'foo' ok 28 - ... The code should now have been executed ok 29 - Construct with a single state with two actions ok 30 - ... The current state should be undefined ok 31 - ... The code should not have been executed ok 32 - ... We should be able to set the state ok 33 - The object isa FSA::State ok 34 - ... The name of the current state should be 'foo' ok 35 - ... The current state should be 'foo' ok 36 - ... Both actions should now have been executed ok 37 - Construct with a single state with an enter action ok 38 - ... The current state should be undefined ok 39 - ... The code should not have been executed ok 40 - ... The enter code should not have executed ok 41 - ... We should be able to set the state ok 42 - The object isa FSA::State ok 43 - ... The name of the current state should be 'foo' ok 44 - ... The current state should be 'foo' ok 45 - ... The code should now have been executed ok 46 - ... The enter code should have executed ok 47 - Construct with a single state with multiple enter actions ok 48 - ... The current state should be undefined ok 49 - ... The code should not have been executed ok 50 - ... The enter code should not have executed ok 51 - ... We should be able to set the state ok 52 - The object isa FSA::State ok 53 - ... The name of the current state should be 'foo' ok 54 - ... The current state should be 'foo' ok 55 - ... The code should now have been executed ok 56 - ... Both enter actions should have executed ok 57 - Construct with a two states and a exit action ok 58 - ... The current state should be undefined ok 59 - ... The foo code should not have been executed ok 60 - ... The 'foo' enter code should not have executed ok 61 - ... The bar code should not have been executed ok 62 - ... The enter code should not have executed ok 63 - ... We should be able to set the state ok 64 - The object isa FSA::State ok 65 - ... The name of the current state should be 'foo' ok 66 - ... The current state should be 'foo' ok 67 - ... The 'foo' code should now have been executed ok 68 - ... The 'foo' enter action should have executed ok 69 - ... The 'foo' exit action should not have executed ok 70 - ... We should be able to change the state to 'bar' ok 71 - The object isa FSA::State ok 72 - ... The name of the current state should be 'bar' ok 73 - ... The current state should be 'bar' ok 74 - ... The 'foo' exit action should have executed ok 75 - ... The 'bar' code should now have been executed ok 76 - ... The 'bar' enter action should have executed ok 77 - Construct with a two states and multiple exit actions ok 78 - ... The current state should be undefined ok 79 - ... The foo code should not have been executed ok 80 - ... The 'foo' enter code should not have executed ok 81 - ... The bar code should not have been executed ok 82 - ... The enter code should not have executed ok 83 - ... We should be able to set the state ok 84 - The object isa FSA::State ok 85 - ... The name of the current state should be 'foo' ok 86 - ... The current state should be 'foo' ok 87 - ... The 'foo' code should now have been executed ok 88 - ... The 'foo' enter action should have executed ok 89 - ... The 'foo' exit action should not have executed ok 90 - ... We should be able to change the state to 'bar' ok 91 - The object isa FSA::State ok 92 - ... The name of the current state should be 'bar' ok 93 - ... The current state should be 'bar' ok 94 - ... Both 'foo' exit actions should have executed ok 95 - ... The 'bar' code should now have been executed ok 96 - ... The 'bar' enter action should have executed ok 97 - Construct with a two states and a switch rule ok 98 - ... The current state should be undefined ok 99 - ... The foo code should not have been executed ok 100 - ... The 'foo' enter code should not have executed ok 101 - ... The bar code should not have been executed ok 102 - ... The enter code should not have executed ok 103 - ... We should be able to set the state ok 104 - The object isa FSA::State ok 105 - ... The name of the current state should be 'foo' ok 106 - ... The current state should be 'foo' ok 107 - ... The 'foo' code should now have been executed ok 108 - ... The 'foo' enter action should have executed ok 109 - ... The 'foo' exit action should not have executed ok 110 - ... The try_switch method should return the 'bar' state ok 111 - The object isa FSA::State ok 112 - ... The name of the current state should be 'bar' ok 113 - ... The current state should be 'bar' ok 114 - ... Now the 'foo' exit action should have executed ok 115 - ... And the 'bar' code should now have been executed ok 116 - ... And the 'bar' enter action should have executed ok 117 - ... Another attempt to switch should fail ok 118 - ... And throw the proper exception ok 119 - Construct with a two states and a switch rule ok 120 - Adding labels to rules should not affect behavior ok 121 - ... The foo code should not have been executed ok 122 - ... The 'foo' enter code should not have executed ok 123 - ... The bar code should not have been executed ok 124 - ... The enter code should not have executed ok 125 - ... We should be able to set the state ok 126 - The object isa FSA::State ok 127 - ... The name of the current state should be 'foo' ok 128 - ... The current state should be 'foo' ok 129 - ... The 'foo' code should now have been executed ok 130 - ... The 'foo' enter action should have executed ok 131 - ... The 'foo' exit action should not have executed ok 132 - ... The try_switch method should return the 'bar' state ok 133 - The object isa FSA::State ok 134 - ... The name of the current state should be 'bar' ok 135 - ... The current state should be 'bar' ok 136 - ... Now the 'foo' exit action should have executed ok 137 - ... And the 'bar' code should now have been executed ok 138 - ... And the 'bar' enter action should have executed ok 139 - FSA::Rules->can('states') ok 140 - ... and states should have messages automatically added ok 141 - ... but asking for a state that was never defined should die ok 142 - ... with an appropriate error message ok 143 - Construct with a two states and a switch rule with its own action ok 144 - ... The current state should be undefined ok 145 - ... The foo code should not have been executed ok 146 - ... The 'foo' enter code should not have executed ok 147 - ... The bar code should not have been executed ok 148 - ... The enter code should not have executed ok 149 - ... We should be able to set the state ok 150 - The object isa FSA::State ok 151 - ... The name of the current state should be 'foo' ok 152 - ... The current state should be 'foo' ok 153 - ... The 'foo' code should now have been executed ok 154 - ... The 'foo' enter action should have executed ok 155 - ... The 'foo' exit action should not have executed ok 156 - The object isa FSA::State ok 157 - The object isa FSA::State ok 158 - The first parameter is "foo" ok 159 - The second parameter is "bar" ok 160 - ... The switch method should return the 'bar' state ok 161 - The object isa FSA::State ok 162 - ... The name of the current state should be 'bar' ok 163 - ... The current state should be 'bar' ok 164 - ... Now the 'foo' exit action should have executed ok 165 - ... And the 'bar' code should now have been executed ok 166 - ... And the 'foo' to 'bar' switch action should have executed ok 167 - ... And the 'bar' enter action should have executed ok 168 - Construct with a two states and a switch rule of '1' ok 169 - ... The current state should be undefined ok 170 - ... The foo code should not have been executed ok 171 - ... The 'foo' enter code should not have executed ok 172 - ... The bar code should not have been executed ok 173 - ... The enter code should not have executed ok 174 - ... We should be able to set the state ok 175 - The object isa FSA::State ok 176 - ... The name of the current state should be 'foo' ok 177 - ... The current state should be 'foo' ok 178 - ... The 'foo' code should now have been executed ok 179 - ... The 'foo' enter action should have executed ok 180 - ... The 'foo' exit action should not have executed ok 181 - ... The switch method should return the 'bar' state ok 182 - The object isa FSA::State ok 183 - ... The name of the current state should be 'bar' ok 184 - ... The current state should be 'bar' ok 185 - ... Now the 'foo' exit action should have executed ok 186 - ... And the 'bar' code should now have been executed ok 187 - ... And the 'bar' enter action should have executed ok 188 - Construct with a two states, a switch rule of '1', and a switch action ok 189 - ... The current state should be undefined ok 190 - ... The foo code should not have been executed ok 191 - ... The 'foo' enter code should not have executed ok 192 - ... The bar code should not have been executed ok 193 - ... The enter code should not have executed ok 194 - ... We should be able to set the state ok 195 - The object isa FSA::State ok 196 - ... The name of the current state should be 'foo' ok 197 - ... The current state should be 'foo' ok 198 - ... The 'foo' code should now have been executed ok 199 - ... The 'foo' enter action should have executed ok 200 - ... The 'foo' exit action should not have executed ok 201 - ... The switch method should return the 'bar' state ok 202 - The object isa FSA::State ok 203 - ... The name of the current state should be 'bar' ok 204 - ... The current state should be 'bar' ok 205 - ... Now the 'foo' exit action should have executed ok 206 - ... And the 'foo' to 'bar' switch action should have executed ok 207 - ... And the 'bar' code should now have been executed ok 208 - ... And the 'bar' enter action should have executed ok 209 - Construct with a single state with an enter action ok 210 - ... The current state should be undefined ok 211 - ... The code should not have been executed ok 212 - ... The start method should return the start state ok 213 - The object isa FSA::State ok 214 - ... The name of the current state should be 'foo' ok 215 - ... The current state should be 'foo' ok 216 - ... The code should now have been executed ok 217 - ... Calling start on a running machine should die ok 218 - ... And it should throw the proper exception ok 219 - Construct with a single state with an enter action ok 220 - ... The current state should be undefined ok 221 - ... The 'foo' code should not have been executed ok 222 - ... The 'bar' code should not have been executed ok 223 - ... The start method should return the start state ok 224 - The object isa FSA::State ok 225 - ... The name of the current state should be 'foo' ok 226 - ... The current state should be 'foo' ok 227 - ... The code should now have been executed ok 228 - ... The 'bar' code still should not have been executed ok 229 - A bad state name in rules should fail ok 230 - ... And give the appropriate error message ok 231 - Construct with numbered states ok 232 - ... Call to start() should return state '0' ok 233 - The object isa FSA::State ok 234 - ... The name of the current state should be '0' ok 235 - ... The current state should be '0' ok 236 - ... Call to switch should return '1' state ok 237 - The object isa FSA::State ok 238 - ... The name of the current state should be '1' ok 239 - ... The current state should be '1' ok 240 - Construct with simple states to run ok 241 - ... Run should return the FSA object ok 242 - ... And it should have run through the proper number of iterations. ok 243 - ... We should be able to reset done ok 244 - ... We should be left in state '0' ok 245 - The object isa FSA::State ok 246 - ... The name of the current state should be '0' ok 247 - ... Run should still work. ok 248 - ... And it should have run through the proper number of again. ok 249 - Construct with simple states to test a done code ref ok 250 - Set done to a code reference ok 251 - ... Run should still work. ok 252 - ... And it should have run through the proper number of again. ok 253 - Attempt to specify the same state twice should throw an error ok 254 - ... And that exception should have the proper message ok 255 - Construct with switch rules that expect parameters. ok 256 - ... It should start with 'foo' ok 257 - The object isa FSA::State ok 258 - ... The name of the current state should be 'foo' ok 259 - ... The current state should be 'foo' ok 260 - ...state->prev_state should return a state object isa FSA::State ok 261 - ... state->prev_state should return the previous state ok 262 - ... It should switch to 'bar' when passed 'bar' ok 263 - The object isa FSA::State ok 264 - ... The name of the current state should be 'bar' ok 265 - ... The current state should be 'bar' ok 266 - ...state->prev_state should return a state object isa FSA::State ok 267 - ... state->prev_state should return the previous state ok 268 - ... It should stay as 'bar' when passed 'bar' again ok 269 - ... So the state should still be 'bar' ok 270 - ... It should switch back to 'foo' when passed 'foo' ok 271 - ... So the state should now be back to 'foo' ok 272 - Notes should start out empty ok 273 - ... And should get the machine back when setting a note ok 274 - ... And passing in the key should return the corresponding value ok 275 - We should get the machine back when setting another note ok 276 - ... And passing in the key should return the new value ok 277 - ... And passing in no arguments should return the complete notes hashref ok 278 - Set done to a true value ok 279 - ... Calling reset() should return the machine ok 280 - ... it should be an empty hashref ok 281 - ... and 'done' should be reset to undef ok 282 - ... and the states should be empty, too ok 283 - ... And now passing in a key should return undef ok 284 - ... and with no arguments, we should get an empty hash ok 285 - Construct with a optional parameters ok 286 - ... And the engine should be started with the 'bar' state ok 287 - ... And done should be set to "done" ok 288 - ... And strict should be turned on ok 289 - Constuct with strict enabled and multiple possible paths ok 290 - ... The engine should be started ok 291 - ... Strict should be enabled ok 292 - ... The switch to 'bar' should succeed ok 293 - ... Try to switch from bar should throw an exception ok 294 - ... And the error message should be appropriate (and verbose) ok 295 - FSA::Rules->can('at') ok 296 - ... and it should croak() if you do not supply a state name ok 297 - ... or if no state with the supplied name exists ok 298 - ... and it should terminate when I want it to. ok 299 - ... and execute the "do" action. ok 300 - Constuct with strict enabled and valid paths ok 301 - ... The engine should be started ok 302 - ... Strict should be enabled ok 303 - ... The switch to 'bar' should succeed ok 304 - ... The switch back to 'foo' should succeed ok 305 - Construct with state_class ok 306 - Get "foo" state ok 307 - The object isa FSA::Stately ok 308 - The object isa FSA::State ok 309 - ... messages should be set even if the final state dies ok 310 - Construct to test for hashref rule actions ok 311 - Start the machine ok 312 - ... Beta rule action should have executed ok 313 - ... Omega rule action should have executed ok 314 - ... Second omega rule action should have executed ok 315 - Create new rules with strict and dependency on do block ok 316 - ... And they should run properly. ok t/graph...........1..0 # Skip GraphViz or Text::Wrap cannot be loaded. skipped all skipped: GraphViz or Text::Wrap cannot be loaded. t/pingpong........1..16 ok 1 - use FSA::Rules; ok 2 - Create the ping pong FSA machine ok 3 - Start the game ok 4 - The object isa FSA::State ok 5 ok 6 - Number 1: pong ok 7 - Number 2: ping ok 8 - Number 2: pong ok 9 - Number 3: ping ok 10 - Number 3: pong ok 11 - Number 4: ping ok 12 - Number 4: pong ok 13 - Number 5: ping ok 14 - Number 5: pong ok 15 - Number 6: ping ok 16 - Check that the messages are in the right order ok t/pod-coverage....1..0 # Skip Test::Pod::Coverage 1.06 required for testing POD coverage skipped all skipped: Test::Pod::Coverage 1.06 required for testing POD coverage t/pod.............1..1 ok 1 - blib/lib/FSA/Rules.pm ok t/state...........1..57 ok 1 - use FSA::Rules; ok 2 - Construct an empty state machine ok 3 - Construct with switch rules that expect parameters. ok 4 - ... Start up the machine ok 5 - The object isa FSA::State ok 6 - ... It should start with 'foo' ok 7 - ... Switch to the next state ok 8 - The object isa FSA::State ok 9 - ... It should start with 'bar' ok 10 - ... It should switch to 'bar' when passed 'bar' ok 11 - ... So the state should now be 'bar' ok 12 - ... It should stay as 'bar' when passed 'bar' again ok 13 - ... So the state should still be 'bar' ok 14 - ... It should switch back to 'foo' when passed 'foo' ok 15 - ... So the state should now be back to 'foo' ok 16 - FSA::Rules->can('stack') ok 17 - ... and it should have a stack of the state transformations ok 18 - FSA::Rules->can('reset') ok 19 - ... It should clear out the stack ok 20 - ... It set the current state to undef ok 21 - ... It should start with 'foo' ok 22 - ... It should switch to 'bar' when passed 'bar' ok 23 - ... So the state should now be 'bar' ok 24 - ... It should stay as 'bar' when passed 'bar' again ok 25 - ... So the state should still be 'bar' ok 26 - ... It should switch back to 'foo' when passed 'foo' ok 27 - ... So the state should now be back to 'foo' ok 28 - ... and it should have a stack of the state transformations ok 29 - FSA::State->can('result') ok 30 - FSA::State->can('message') ok 31 - FSA::Rules->can('last_message') ok 32 - FSA::Rules->can('last_result') ok 33 - Construct with switch rules that expect parameters. ok 34 - ... We should get states back from states() ok 35 - ... There should be two states ok 36 - ... State \# 0 should be an FSA::State object isa FSA::State ok 37 - ... State \# 1 should be an FSA::State object isa FSA::State ok 38 - ...The first state should be 'foo' ok 39 - ...The second state should be 'foo' ok 40 - ... Called with a 'foo', states() should return the appropriate state ok 41 - ... Called with a 'bar', states() should return the appropriate state ok 42 - ... Called with two arguments, it should return both states in the order of the arguments ok 43 - ... and last_result() should return the last result ok 44 - ... and last_result() shoul return the last result for a specified state ok 45 - ... and result should return its last result ok 46 - ... and the last result on bar should be returned in a scalar context ok 47 - ... or all results of the state if called in list context ok 48 - ... and last_message should return undef if the last state had no message set ok 49 - ... and last_message should return the message for a specified state ok 50 - ... and the last result on bar should be returned in a scalar context ok 51 - ... or all messages of of the state if called in list context ok 52 - FSA::Rules->can('stacktrace') ok 53 - ... and it should return a human readable trace ok 54 - FSA::Rules->can('raw_stacktrace') ok 55 - ... and it should return the raw data structure of the state stack. ok 56 - FSA::Rules->can('prev_state') ok 57 - ... and it should correctly return the the previous state object ok t/storable........1..12 ok 1 - use FSA::Rules; ok 2 - Construct a rules object for serialization ok 3 - The object isa FSA::Rules ok 4 - ... Run should return the FSA object ok 5 - ... And it should have run through the proper number of iterations. ok 6 - Freeze the FSA object ok 7 - Thaw the FSA object ok 8 - The thawed object isa FSA::Rules ok 9 - ... And it should still have its internal data ok 10 - ... We should be able to reset ok 11 - ... Run should still return the FSA object ok 12 - ... And it should have run through the proper number of iterations. ok All tests successful, 2 tests skipped. Files=7, Tests=402, 8 wallclock secs ( 3.26 cusr + 0.37 csys = 3.63 CPU) /export/home/cpanrun/build/5.10.0/bin/perl Build --makefile_env_macros 1 install Set up gcc environment - 3.3 Set up gcc environment - 3.3 Set up gcc environment - 3.3 Set up gcc environment - 3.3 Installing /export/home/cpanrun/build/5.10.0/site/lib/FSA/Rules.pm Installing /export/home/cpanrun/build/5.10.0/site/man/man3/FSA::Rules.3 Installing /export/home/cpanrun/build/5.10.0/html/site/lib/FSA/Rules.html Writing /export/home/cpanrun/build/5.10.0/site/lib/auto/FSA/Rules/.packlist