fitnessefitnesse-slim

FItNesse: Convert Fit fixture to Slim


Looking for a solution to convert Fit fixture for FitNesse test to Slim.

I got the Command-Line Fit fixture.

Since all my Fitnesse test system is running on Slim I need to have CommandLineFixture as Slim to execute bash script from my test.

Any other workaround for this should work for me.

I am trying to execute a script from FitNesse test and this script writes some text in file present in a server where my Fitnesse server is running.

But what I am observing with the provided fixture its opening file and not writing any text into it.

So just wanted to check do we have any constraint with Fitnesse to execute a script which writes into a file.

Also, I have given all rwx permission to the text file

Below is my modified script:

!define TEST_SYSTEM {slim} 
!path ../fixtures/*.jar  
|Import                                            |  
| nl.hsac.fitnesse.fixture.slim.ExecuteProgramTest | 
|script                                            | 
|set    |-c            |as argument|0              |  
|set    |ls -l /       |as argument|1              |  
|execute|/bin/bash                                 |  
|check  |exit code     |0                          |  
|show   |standard out                              |  
|check  |standard error|!--!                       |

Executing the above test fetched no response and gives the result as:

Test Pages: 0 right, 0 wrong, 1 ignored, 0 exceptions

Assertions: 0 right, 0 wrong, 0 ignored, 0 exceptions

(0.456 seconds)


Solution

  • I had a helper method to start a program in my my fixture library already, but I started work on fixture today. Would the execute program test fixture work for you?

    Example usage:

    We can run a program with some arguments, check its exit code and show its output.

    |script |execute program test        |
    |set    |-c            |as argument|0|
    |set    |ls -l /       |as argument|1|
    |execute|/bin/bash                   |
    |check  |exit code     |0            |
    |show   |standard out                |
    |check  |standard error|!--!         |
    

    The default timeout for program execution is one minute, but we can set a custom timeout. Furthermore we can control the directory it is invoked from, set all arguments using a list and get its output 'unformatted'.

    |script               |execute program test           |
    |check                |timeout           |60000       |
    |set timeout of       |100               |milliseconds|
    |set working directory|/                              |
    |set                  |-c, ls -l         |as arguments|
    |execute              |/bin/bash                      |
    |check                |exit code         |0           |
    |show                 |raw standard out               |
    |check                |raw standard error|!--!        |
    

    The timeout can also be set in seconds, and pass environment variables (and the process's output is escaped to ensure it is displayed properly).

    |script        |execute program test           |
    |set timeout of|1              |seconds        |
    |set value     |Hi <there>     |for        |BLA|
    |set           |-c             |as argument|0  |
    |set           |!-echo ${BLA}-!|as argument|1  |
    |execute       |/bin/bash                      |
    |check         |exit code      |0              |
    |check         |raw standard out               |!-Hi <there>
    -!|
    |check|standard out|{{{Hi <there>
    }}}|