; Licensed to the .NET Foundation under one or more agreements.
; The .NET Foundation licenses this file to you under the MIT license.
; See the LICENSE file in the project root for more information.

===========================================================================


1.   ENVIRONMENT SETUP

2.   RUNNING THE SUITES

3.   ENVIRONMENT VARIABLES AND AUTOMATED TESTING SPECIFICS
3.1  PAL_DISABLE_MESSAGEBOX
3.2  Other Notes

4.   ADDITIONAL NOTES ON TESTING/SPECIFIC TEST CASE ISSUES
     C_runtime: _fdopen testing issues
     File_IO: getfiletime/test5
     File_IO: getfilesize/test1, setfilepointer/test(5,6,7)
     File_IO: gettempfilename(a,w)/test2
     File_IO: setfileattributesa/test(1,4), setfileattributesw/test(1,4)
     Miscellaneous: messageboxw/test(1,2)
     Pal_specific:: pal_get_stdin/test1, pal_get_stdout/test1, pal_get_stderr/test1
     Threading: setconsolectrlhandler/test(3,4)


===========================================================================

1.  ENVIRONMENT SETUP
~~~~~~~~~~~~~~~~~~~~~

Within a Rotor build window (env.sh/env.csh/env.bat), no additional
configuration needs to be done.


2. RUNNING THE SUITES
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Run %ROTOR_DIR%\tests\pvtrun.pl to launch the test suites.  It will
display information about each test as it runs, then report a
summary of the results upon completion.

The results are logged to %ROTOR_DIR%\tests\pvtResults.log.


3. ENVIRONMENT VARIABLES AND AUTOMATED TESTING SPECIFICS
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
3.1 PAL_DISABLE_MESSAGEBOX

For automated testing on the WIN32 PAL, the following environment
variable is useful to prevent pop-up message boxes from interupting the
execution of the MessageBoxW test cases:

set PAL_DISABLE_MESSAGEBOX=1  


3.2 Other Notes

See notes in section 4 on the following test cases if running automated tests:

     Miscellaneous: messageboxw/test(1,2)
     Threading: setconsolectrlhandler/test(3,4)


4. ADDITIONAL NOTES ON TESTING/SPECIFIC TEST CASE ISSUES
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

C Runtime: _fdopen testing issues

There is a very specific manner in which _fdopen has been documented to work,
this will determine how the function will be tested.

_fdopen takes a parameter of a c run-time file handle, to open a stream to the
file. This file handle can only be returned from the _open_osfhandle function.
The Rotor documentation states that _open_osfhandle will only return a 
READ-ONLY file handle, from an operating-system file handle returned from
CreatePipe().

With these restrictions _fdopen will only be tested with a mode of read(r).
The other modes are not possible to test. _open_osfhandle returns an error
when attempting to open a write pipe handle in a mode of read-only. As well,
it is not possible to read and write to the same handle that is returned from
CreatePipe().

The modes that will not be tested are as follows:

    "w" -  Opens an empty file for writing. 
    "a" -  Opens for writing at the end of the file (appending).
    "r+" - Opens for both reading and writing.
    "w+" - Opens an empty file for both reading and writing.
    "a+" - Opens for reading and appending.



File_IO: getfiletime/test5

This test case is NTFS specific.


File_IO: getfilesize/test1, getfilesizeex/test1 setfilepointer/test(5,6,7)

These tests cases create a large number of temporary files which require  
ample disk space.  On systems with less than 6Gb free disk space expect 
these test cases to fail.


File_IO: gettempfilename(a,w)/test2

These test cases take longer than 60 seconds to run.  Currently, the Test 
Harness will timeout any test case that exceeds 60 seconds.


File_IO: setfileattributesa/test(1,4), SetFileAttributesW/test(1,4)

These test cases ensure restricted file permissions are respected.  Administrators 
or super users (root) are not affected by file permissions and, as a result, these
test cases will fail for such users.


Miscellaneous: messageboxw/test(1,2)

Setting PAL_MESSAGEBOX_DISABLE=1 for these test cases prevents message box pop
ups that occur during the tests' execution on Windows.  For automated testing
where user interaction is not desired/possible, setting this environment 
variable will prevent a pause in the automated test run.


ic: pal_get_stdin/test1, pal_get_stdout/test1, pal_get_stderr/test1

These test cases should be manually inspected to ensure the information being returned
is correct.  The pal_get_stdin test case requires user input.  The pal_get_stdout and 
pal_get_stderr test cases do not require user input, but their output should be inspected 
to verify that correct messages are being displayed.


Threading: setconsolectrlhandler/test(3,4)

These test cases require user response in order to produce a meaningful results.
For automated testing, this test case is disabled.
