The FileFixture allows file manipulation, either in the wiki's files section[?], or on the file system.
Files can be generated using Freemarker templates, directly from strings or by copying files.
File's content and size may be retrieved.
Filenames may be manipulated.
script | file fixture | ||||
note | default directory used by the fixture is inside the files section | ||||
$def_dir<-[/home/travis/build/fhoeben/hsac-fitnesse-fixtures/target/fitnesse-results/index1/files/fileFixture/] | get directory | ||||
$created<-[bye1.txt] | create | bye1.txt | containing | Bye Bye 1 | |
repeat at most | 50 | times | |||
Do not forget to set 'repeat at most times', or else the loop may run endlessly! | |||||
poll until | $created->[bye1.txt] | exists | |||
poll until size of | $created->[bye1.txt] | exceeds | 0 | ||
check | text in | $created->[bye1.txt] | Bye Bye 1 | ||
check | filename of | $created->[bye1.txt] | bye1.txt | ||
check | base name of | $created->[bye1.txt] | bye1 | ||
check | extension of | $created->[bye1.txt] | txt | ||
ensure | exists | $created->[bye1.txt] | |||
delete | $created->[bye1.txt] | ||||
reject | exists | $created->[bye1.txt] | |||
deleting non-existing file does not work: throws exception | |||||
but ensuring non-existing file does not exist is no problem, returns false | |||||
reject | delete | $created->[bye1.txt] | if exists | ||
poll until | $created->[bye1.txt] | does not exist | |||
note | directory to be used by the fixture can be set to inside the files section | ||||
set directory | http://files/test | ||||
$created2<-[bye2.txt] | create | bye2.txt | containing | Bye Bye 2 | |
check | text in | $created2->[bye2.txt] | Bye Bye 2 | ||
delete | $created2->[bye2.txt] | if exists | |||
note | directory to be used by the fixture can be set to system path | ||||
set directory | . | ||||
$created3<-[bye.txt] | create | bye.txt | containing | Bye Bye 3 | |
check | filename of | $created3->[bye.txt] | bye.txt | ||
check | size of | bye.txt | 9 | ||
check | text in | bye.txt | Bye Bye 3 | ||
set value | John | for | name | ||
show | create | greeting.txt | using | greeting.ftl | greeting.txt |
check | text in | greeting.txt | Hello John | ||
set value | John | for | name | ||
show | create | greeting.html | using | greeting.ftl.html | greeting.html |
show | text in | greeting.html | <html> <body> Hello<br/> <h1>John</h1> </body> </html> | ||
show | content of | greeting.html | <html> <body> Hello<br/> <h1>John</h1> </body> </html> | ||
note | filename's containing either / or \ will point to sub-directories | ||||
show | copy | ./greeting.txt | to | copy/greetingCopy.txt | greetingCopy.txt |
check | text in | .\copy\greetingCopy.txt | Hello John | ||
check | filename of | .\copy\greetingCopy.txt | greetingCopy.txt | ||
check | base name of | .\copy\greetingCopy.txt | greetingCopy | ||
check | extension of | .\copy\greetingCopy.txt | txt | ||
note | you can create a new file by "appending" one line into it | ||||
set directory | http://files/test | ||||
$appended<-[appended.txt] | append | first | to | appended.txt | |
check | text in | $appended->[appended.txt] | first | ||
note | you can append content to an existing file | ||||
append | line | to | $appended->[appended.txt] | ||
check | text in | $appended->[appended.txt] | first line | ||
note | you can append content as a new line to an existing file | ||||
append | second line | to | $appended->[appended.txt] | on new line | |
convert line endings of | $appended->[appended.txt] | to unix | |||
check | text in | $appended->[appended.txt] | first line second line | ||
convert line endings of | $appended->[appended.txt] | to windows | |||
check | size of | $appended->[appended.txt] | 23 | ||
convert line endings of | $appended->[appended.txt] | to unix | |||
check | size of | $appended->[appended.txt] | 22 | ||
delete | $appended->[appended.txt] |
Table below shows how we can work with zip files
We ensure lists are rendered between brackets, and not numbered
script | list fixture |
display lists standard |
script | file fixture | |||
$created<-[bye1.txt] | create | bye1.txt | containing | Bye Bye 5 |
$zip<-[bye.zip] | zip | $created->[bye1.txt] | as | bye.zip |
check | number of files in zip | $zip->[bye.zip] | 1 | |
check | names of files in zip | $zip->[bye.zip] | [bye1.txt] | |
$unzipped<-[unzipped] | unzip | $zip->[bye.zip] | as | unzipped |
check | text in | $unzipped->[unzipped]/bye1.txt | Bye Bye 5 | |
$zip2<-[zip2.zip] | zip | $unzipped->[unzipped] | as | zip2.zip |
check | names of files in zip | $zip2->[zip2.zip] | [bye1.txt] |
Table below shows how we can use a list of non-reusable data from a file:
script | ||||
set directory | http://files/fileFixture | |||
create | list.txt | containing | 001 002 last one! | |
show | text in | list.txt | 001 002 last one! | |
check | take first line from | list.txt | 001 | |
show | text in | list.txt | 002 last one! | |
check | take first line from | list.txt | 002 | |
check | take first line from | list.txt | last one! | |
show | text in | list.txt |