In the beginning there was a single standalone test program; and the coders felt that life was good. But then a second test was needed, and so the first test was copied and modified, this giving birth to a second standalone test program, and so again the coders felt that life was pretty good. But then things started to go wrong. The original test was copied again and again and again, this leading to many similar standlone test programs, each doing what they needed but each also duplicating much of work of the older tests. There was much confusing duplication within the source code, and much slowness of the testsuite run. There were rumblings, but on the whole, the coders still felt that life was good. But then the architect declared "Thou shall go forth and tests using JUnit." And all the coders celebrated, for they had been given a challenging task, and again they felt happy. But then a voice in the wilderness cried, "but what of those old tests", and the architect replied "thou shall refactor". And many tasks were refactored, and there was much use of JUnit, and coders celebrated and life seemed good. But unfortunatly a few tests remained. These were the oldest tests, that contained the most complex code, these were the tests that refused to change. But the coders kept refactoring, and the most complex code could see if nothing was done it too would soon be clensed of complexity and converted to JUnit. And so it hatched a plan. Late one morning, when all the coders were sleeping, the most complex code would slip into a coders office, create an Invisibility Internals class, and hide itself. That way, in the afternoon, when the coders awoke, they would find the complex code gone and assume that all was refactored and coding life could return to normal. And so the most complex code hatched its plan, and the coders were indeed fooled in to thinking all was refactored and things appeared to return to normal. But unfortunatly the most complex code, no longer pround and visible, and fed by programmers hiding the other complex code, festered under the Invisibility Internals class turning into evilly complex code. Things were most definitly not good.
$ frep 'Timers, observers, counters, etc.. needed for the test.' frysk-core/frysk/proc/TestRegMemModify.java:62: // Timers, observers, counters, etc.. needed for the test. frysk-core/frysk/proc/TestRegMemModify.java:220: // Timers, observers, counters, etc.. needed for the test. frysk-core/frysk/proc/TestModify.java:61: // Timers, observers, counters, etc.. needed for the test. frysk-core/frysk/proc/SyscallExaminer.java:58: // Timers, observers, counters, etc.. needed for the test. frysk-core/frysk/proc/TestTaskSyscallObserver.java:499: // Timers, observers, counters, etc.. needed for the test.
Index: frysk-core/frysk/proc/ChangeLog 2006-12-14 Andrew Cagney <cagney@redhat.com> * TestTaskSyscallObserver.java (TestSyscallInterruptXXXX): Rename TestSyscallInterruptInternals. * TestRegs.java (TestI386RegsXXX): Rename TestI386RegsInternals. (TestX8664RegsXXX): Rename TestX8664RegsInternals. (TestPPC64RegsXXX): Rename TestPPC64RegsInternals. * TestRegMemModify.java (TestI386ModifyXXX): Rename TestI386ModifyInternals. (TestX8664ModifyXXX): Rename TestX8664ModifyInternals. (TestPPC64ModifyXXX): Rename TestPPC64ModifyInternals. * TestModify.java (TestModifyXXX): Rename TestModifyInternals.