[plt-scheme] contracts.ss: Can you disable them at runtime?
The change management software I worked on had test cases in the
shipped deliverable. If the client couldn't connect to the server, it
would print out this:
--------
Couldn't connect: http://localHost:7999/
Check your .csf-prefs file.
This can also be caused by a temporary network problem.
In this case, simply re-issue the command.
Your request was not serviced.
Use the client_self_test command to check client settings.
--------
The client_self_test command would do something like this:
--------
ChangeSafe client self-test.
os.name: Windows XP
java.vendor: Sun Microsystems Inc.
java.version: 1.6.0_01
java.class.path:
\Home\Jrm\workspace-a\java\cm;\Home\Jrm\workspace-a\java\fsa
User name is jmarshall
Your home directory is C:\Documents and Settings\jmarshall
Current directory is C:\Home\Jrm\workspace-a\java\cm\
.csf file found at C:\Home\Jrm\workspace-a\.csf
Time zone is America/Los_Angeles
Daylight savings is in effect.
File system agent protocol version: 1
Preferences will be read from .csf-prefs in the same directory
as class CM file.
No user preferences file (C:\Documents and
Settings\jmarshall\.csf-prefs) found.
CHANGESAFE_SERVER_URI = http://localHost:7999/
SET_FILE_READ_ONLY = ATTRIB.EXE +R
SET_FILE_READ_WRITE = ATTRIB.EXE -R
SET_FILE_LAST_MODIFIED =
"C:\cygnus\cygwin-b20\H-i586-cygwin32\bin\touch.exe" -t
MMDDhhmmCCYY.ss
Success: File modes will be correctly set.
Failed: java.io.IOException: Cannot run program
""C:\cygnus\cygwin-b20\H-i586-cygwin32\bin\touch.exe"": CreateProcess
error=3, The system cannot find the path specified
WARNING: Failed to set file timestamp. Check value of
SET_FILE_LAST_MODIFIED.
End of ChangeSafe client self-test.
--------
There were further commands that would test the connection and
instruct the server to run tests.
These tests were *amazingly* useful to us, but our customers loved
them as well. They would run these self-tests before submitting bug
reports and send the output along with the bug report (anyone who
fields customer support complaints will tell you how wonderful *that*
is!) We had logging diagnostics that were intended to be `turned off'
at the customer site. We never turned those off, either.
If you have tests, assertions, and contracts that you `turn off' when
shipping, then the code the customer gets is *not* the same as the
code you use in-house. It may be your intention that it be, but you
probably intended to ship bug-free software, too. In a complex
system, you should ship *exactly* the same bits to your customer as
you use in-house.
On 5/17/07, Shriram Krishnamurthi <sk at cs.brown.edu> wrote:
> > Long: Tony Hoare once said that assertions are like life vests. Why
> > use them on land during practice and leave them back when you go to sea?
>
> This is a poor analogy.
>
> I bet you turn off test cases, too, in software that you ship. Why?
>
> Shriram
> _________________________________________________
> For list-related administrative tasks:
> http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>
--
~jrm