Added the FitNesse wiki and a simple acceptance test
This commit is contained in:
parent
6f2802828d
commit
c55bb21501
|
@ -1,5 +1,6 @@
|
|||
build/
|
||||
doc/
|
||||
FitNesseRoot/FitNesse/UserGuide/
|
||||
fitnesse/FitNesseRoot/files
|
||||
jar/
|
||||
*.zip
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
!1 Components and Licenses
|
||||
|
||||
Fitnesse is released under [[Common Public License version 1.0][http://opensource.org/licenses/cpl1.0.php]]
|
||||
|
||||
|
||||
Also it uses some additional components which can be found in the following libraries:
|
||||
|
||||
|Name |Version|Web-site |License |
|
||||
|Code Mirror|4.12 |https://codemirror.net/ |MIT License|
|
||||
|Jasmine |1.3.1 |http://jasmine.github.io/|MIT License|
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<properties>
|
||||
<Edit>true</Edit>
|
||||
<Files>true</Files>
|
||||
<Properties>true</Properties>
|
||||
<RecentChanges>true</RecentChanges>
|
||||
<Refactor>true</Refactor>
|
||||
<Search>true</Search>
|
||||
<Versions>true</Versions>
|
||||
<WhereUsed>true</WhereUsed>
|
||||
</properties>
|
|
@ -0,0 +1,3 @@
|
|||
!contents -R4 -g -p -f -h
|
||||
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit>true</Edit>
|
||||
<Files>true</Files>
|
||||
<Help>Table of Content of the Fitnesse User Guide</Help>
|
||||
<Properties>true</Properties>
|
||||
<RecentChanges>true</RecentChanges>
|
||||
<Refactor>true</Refactor>
|
||||
<Search>true</Search>
|
||||
<SymbolicLinks>
|
||||
<UserGuide>.FitNesse.UserGuide</UserGuide>
|
||||
</SymbolicLinks>
|
||||
<Versions>true</Versions>
|
||||
<WhereUsed>true</WhereUsed>
|
||||
</properties>
|
||||
|
|
@ -0,0 +1,298 @@
|
|||
!2 ${FITNESSE_VERSION}
|
||||
* Add ability to specify the locale used to format evaluated expressions ([[#929][https://github.com/unclebob/fitnesse/pull/929]])
|
||||
* New Slim table type: [[Baseline decision table][!-SuiteAcceptanceTests.SuiteSlimTests.BaseLineDecisionTable-!]] ([[965][https://github.com/unclebob/fitnesse/pull/965]])
|
||||
* Add base folder for plugin documentation ([[971][https://github.com/unclebob/fitnesse/pull/971]])
|
||||
* !-FitNesse-! and Slim can now communicate over stdin/stdout. This removes the hassle with network ports ([[977][https://github.com/unclebob/fitnesse/pull/977]], see UserGuide.WritingAcceptanceTests.SliM.SlimProtocol.PortManagement)
|
||||
* API changes:
|
||||
* FitNesse is more strictly propagating exceptions, instead of only logging them ([[#923][https://github.com/unclebob/fitnesse/pull/923]])
|
||||
* Updated ''!-FixtureInteraction-!'' interface ([[#911][https://github.com/unclebob/fitnesse/pull/911]])
|
||||
* To improve extensibility, scenario resolution has been moved to ``!-SlimtestContext-!'' ([[974][https://github.com/unclebob/fitnesse/pull/974]])
|
||||
* ''!-WikiPage-!'' interface now has a ''remove()'' method. This will replace the ''removeChild()'' method in the near future ([[#930][https://github.com/unclebob/fitnesse/pull/930]])
|
||||
* Issues fixed:
|
||||
* Display of Map results from fixtures should allow nested HTML ([[#921][https://github.com/unclebob/fitnesse/pull/921]])
|
||||
* Fix assignment of output parameters of scenarios with graceful names in decision tables ([[#928][https://github.com/unclebob/fitnesse/pull/928]])
|
||||
* Fix Where Used page for pages under a Symbolic Link ([[#925][https://github.com/unclebob/fitnesse/issues/925]])
|
||||
* Fixed issues in ''!-CachedInteraction-!'' ([[973][https://github.com/unclebob/fitnesse/pull/973]])
|
||||
|
||||
For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=15&state=closed.
|
||||
|
||||
!2 20160515
|
||||
* FitNesse requires Java 7 now ([[#872][https://github.com/unclebob/fitnesse/issues/872]], [[#877][https://github.com/unclebob/fitnesse/issues/877]])
|
||||
* New autocomplete feature for the "move page" page ([[#867][https://github.com/unclebob/fitnesse/issues/867]])
|
||||
* Name the link to execution log simply "Execution Log" ([[#851][https://github.com/unclebob/fitnesse/issues/851]])
|
||||
* Dynamically add fitnesse jartoclasspath ([[#862][https://github.com/unclebob/fitnesse/issues/862]], [[#866][https://github.com/unclebob/fitnesse/issues/866]])
|
||||
* Searching for tags across Symbolic links ([[#488][https://github.com/unclebob/fitnesse/issues/488]], [[#888][https://github.com/unclebob/fitnesse/issues/888]])
|
||||
* Add support for table-in-table editing in rich text editor ([[#669][https://github.com/unclebob/fitnesse/issues/669]], [[#885][https://github.com/unclebob/fitnesse/issues/885]])
|
||||
* ''!-@SystemUnderTest-!'' now accepts method calls from subclasses ([[#907][https://github.com/unclebob/fitnesse/issues/907]])
|
||||
* Disallow uploading to folder ''files/fitnesse'' ([[#889][https://github.com/unclebob/fitnesse/issues/889]])
|
||||
* Avoid infinite cycles when using symlinks ([[#888][https://github.com/unclebob/fitnesse/issues/888]])
|
||||
* (Slim) Deal with escaping content in hash table ([[#886][https://github.com/unclebob/fitnesse/issues/886]])
|
||||
* Properly handle symbol assignment in first column of a query table ([[#914][https://github.com/unclebob/fitnesse/issues/914]])
|
||||
* Issues fixed:
|
||||
* !-CompareVersions-! responder is not escaping output properly ([[#861][https://github.com/unclebob/fitnesse/issues/861]], [[#869][https://github.com/unclebob/fitnesse/issues/869]])
|
||||
* Improve code by honoring ''InterruptedException'' ([[#874][https://github.com/unclebob/fitnesse/issues/874]])
|
||||
* FitNesse stops again when calling /?shutdown ([[#875][https://github.com/unclebob/fitnesse/issues/875]])
|
||||
* Fixed: Running suites does not show the tests summaries ([[#876][https://github.com/unclebob/fitnesse/issues/876]])
|
||||
* Fix escaping of HTML in Slim hash tables ([[#878][https://github.com/unclebob/fitnesse/issues/878]])
|
||||
* Fix class loading for FitNesse resources ([[#880][https://github.com/unclebob/fitnesse/issues/880]])
|
||||
* Change json content type from ''text/json'' to ''applicatioin/json'' ([[#891][https://github.com/unclebob/fitnesse/issues/891]])
|
||||
* JUnit runner now plays nice with Gradle ([[#909][https://github.com/unclebob/fitnesse/issues/909]])
|
||||
|
||||
For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=14&state=closed.
|
||||
|
||||
!2 20151230
|
||||
* Documentation updates ([[843][https://github.com/unclebob/fitnesse/pull/843]], [[833][https://github.com/unclebob/fitnesse/pull/833]], [[825][https://github.com/unclebob/fitnesse/pull/825]], [[815][https://github.com/unclebob/fitnesse/pull/815]])
|
||||
* Slim runs completely in process in when run in debug mode ([[837][https://github.com/unclebob/fitnesse/pull/837]])
|
||||
* Detailed diff for failed Slim tests ([[824][https://github.com/unclebob/fitnesse/pull/824]])
|
||||
* Git version control support is now a [[plugin][http://fitnesse.org/PlugIns]] ([[792][https://github.com/unclebob/fitnesse/pull/792]])
|
||||
* Customized !-UnauthorizedResponder-! ([[841][https://github.com/unclebob/fitnesse/pull/841]])
|
||||
* Slim query table fields are now matched left to right ([[788][https://github.com/unclebob/fitnesse/pull/788]])
|
||||
* Improved search screen ([[838][https://github.com/unclebob/fitnesse/pull/838]])
|
||||
* FitNesse now uses java.util.concurrent thread pools instead of spawning unmanaged threads ([[830][https://github.com/unclebob/fitnesse/pull/830]])
|
||||
* Execution log information is displayed when executing suites and tests with format=xml ([[816][https://github.com/unclebob/fitnesse/issues/816]])
|
||||
* Many, many code consistency fixes thanks to @hansjoachim ([[807][https://github.com/unclebob/fitnesse/pull/807]], [[808][https://github.com/unclebob/fitnesse/pull/808]], [[810][https://github.com/unclebob/fitnesse/pull/810]], [[811][https://github.com/unclebob/fitnesse/pull/811]], [[812][https://github.com/unclebob/fitnesse/pull/812]], [[817][https://github.com/unclebob/fitnesse/pull/817]], [[818][https://github.com/unclebob/fitnesse/pull/818]], [[829][https://github.com/unclebob/fitnesse/pull/829]], [[836][https://github.com/unclebob/fitnesse/pull/836]], [[840][https://github.com/unclebob/fitnesse/pull/840]])
|
||||
* Under the hood:JQueryhas been upgraded to 1.11.3 (was 1.7.2)
|
||||
* Issues fixed:
|
||||
* Class path issues (on windows and paths with spaces) ([[821][https://github.com/unclebob/fitnesse/pull/821]])
|
||||
* Fix issues with non-wiki words and symbolic links ([[820][https://github.com/unclebob/fitnesse/pull/820]])
|
||||
* Plain text editor fixes (find option([[793][https://github.com/unclebob/fitnesse/pull/793]], [[798][https://github.com/unclebob/fitnesse/pull/798]])
|
||||
* Fix issues with parsing UTF-8 characters ([[791][https://github.com/unclebob/fitnesse/pull/791]])
|
||||
* JUnit formatter displays run time with 3 decimal precision ([[794][https://github.com/unclebob/fitnesse/issues/794]])
|
||||
|
||||
For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=13&state=closed.
|
||||
|
||||
!1 20150814
|
||||
* Syntax highlighting in plain text editor ([[631][https://github.com/unclebob/fitnesse/pull/631]])
|
||||
* Support generic behavior in Slim (Java) fixture via when fixtures implement [[!-InteractionAwareFixture-!][UserGuide.WritingAcceptanceTests.SliM.InteractionAwareFixture]] ([[724][https://github.com/unclebob/fitnesse/pull/724]])
|
||||
* Tag filtering is now all case insensitive ([[728][https://github.com/unclebob/fitnesse/pull/728]])
|
||||
* Improved slim hash table handling ([[739][https://github.com/unclebob/fitnesse/pull/739]])
|
||||
* Supportcustomformatters([[764][https://github.com/unclebob/fitnesse/pull/764]])
|
||||
* Nonwikiwordpage names are properly resolved when using !-!include-! statements
|
||||
* Page-in-progress formatter has been removed ([[767][https://github.com/unclebob/fitnesse/pull/767]])
|
||||
* Issues fixed:
|
||||
* NPE in !-SuiteHistoryFormatter-! ([[736][https://github.com/unclebob/fitnesse/pull/736]])
|
||||
* WYSIWYG (rich text)breaksinlinecodeintable ([[756][https://github.com/unclebob/fitnesse/pull/756]])
|
||||
* Rich text editor retains line breaks ([[756][https://github.com/unclebob/fitnesse/pull/756]], [[777][https://github.com/unclebob/fitnesse/pull/77]])
|
||||
* XML result files do no longer contain HTML output by default (as it was a few releases ago) ([[771][https://github.com/unclebob/fitnesse/pull/771]])
|
||||
|
||||
For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=12&state=closed.
|
||||
|
||||
!2 20150428
|
||||
* !-!contents-! has a new [[-H option][UserGuide.FitNesseWiki.MarkupLanguageReference.MarkupContents]] ([[718][https://github.com/unclebob/fitnesse/pull/718]])
|
||||
* The JUnit runner is notified of system exceptions ([[716][https://github.com/unclebob/fitnesse/pull/716]])
|
||||
* New Slim table type: [[Alias table][UserGuide.WritingAcceptanceTests.SliM.DefineAlias]] ([[711][https://github.com/unclebob/fitnesse/pull/711]])
|
||||
* Prevention of System.exit() calls is configurable ([[707][https://github.com/unclebob/fitnesse/pull/707]])
|
||||
* Improved error reporting when running test suites from the command line ([[706][https://github.com/unclebob/fitnesse/pull/706]])
|
||||
* Relaxed Test & Page History to only secure-read permissions ([[696][https://github.com/unclebob/fitnesse/pull/696]])
|
||||
* Remove global slim timeout during testing; this issue was introduced in v20150226 ([[660][https://github.com/unclebob/fitnesse/pull/660]])
|
||||
* Expose table of symbols to [[!-TableTable-!][UserGuide.WritingAcceptanceTests.SliM.TableTable]] fixtures ([[644][https://github.com/unclebob/fitnesse/pull/644]])
|
||||
* Improve messages when Slim server crashes ([[662][https://github.com/unclebob/fitnesse/pull/662]])
|
||||
* Make the "bootstrap" theme the default ([[679][https://github.com/unclebob/fitnesse/pull/679]])
|
||||
* Relaxed Test & Page History to require only secure-read permission ([[696][https://github.com/unclebob/fitnesse/pull/696]])
|
||||
* Slim convertersproduceuserfriendlyerrors([[682][https://github.com/unclebob/fitnesse/pull/682]])
|
||||
* Documentation updates ([[668][https://github.com/unclebob/fitnesse/pull/668]], [[672][https://github.com/unclebob/fitnesse/pull/672]], [[681][https://github.com/unclebob/fitnesse/pull/681]])
|
||||
* Issues fixed:
|
||||
* Fixes in file paths ([[667][https://github.com/unclebob/fitnesse/pull/667]], [[692][https://github.com/unclebob/fitnesse/pull/692]])
|
||||
* Fix issue with ''!'' in spreadsheet translation ([[678][https://github.com/unclebob/fitnesse/pull/678]])
|
||||
* Revert old behavior for Slim String converter: pass empty string for empty cells instead of ''null'' ([[687][https://github.com/unclebob/fitnesse/pull/687]])
|
||||
|
||||
For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=11&state=closed.
|
||||
|
||||
!2 v20150226
|
||||
* Fixed lot's of code style issues ([[588][https://github.com/unclebob/fitnesse/pull/588]], [[618][https://github.com/unclebob/fitnesse/pull/618]], [[619][https://github.com/unclebob/fitnesse/pull/619]][[628][https://github.com/unclebob/fitnesse/pull/628]], [[632][https://github.com/unclebob/fitnesse/pull/632]], [[634][https://github.com/unclebob/fitnesse/pull/634]], [[645][https://github.com/unclebob/fitnesse/pull/645]])
|
||||
* Table coloring for Slim tables ([[569][https://github.com/unclebob/fitnesse/pull/569]])
|
||||
* Improved extensibility of Slim tables ([[620][https://github.com/unclebob/fitnesse/pull/620]])
|
||||
* Allow graceful names for Slim decision table output columns, when used in conjunction with scenario tables ([[595][https://github.com/unclebob/fitnesse/pull/595]])
|
||||
* Image support for rich text editor ([[597][https://github.com/unclebob/fitnesse/pull/597]], [[606][https://github.com/unclebob/fitnesse/pull/606]], [[611][https://github.com/unclebob/fitnesse/pull/611]], [[629][https://github.com/unclebob/fitnesse/pull/629]])
|
||||
* Hash table editing support for rich text editor ([[622][https://github.com/unclebob/fitnesse/pull/622]])
|
||||
* Rich editor icons are now SVG images ([[568][https://github.com/unclebob/fitnesse/pull/568]])
|
||||
* Improved Slim Converters ([[613][https://github.com/unclebob/fitnesse/pull/613]])
|
||||
* Test execution log is storedinpagehistory. It's no longer stored in !-ErrorLogs-! pages ([[627][https://github.com/unclebob/fitnesse/pull/627]])
|
||||
* ''?suite'' and ''?test'' responders can now automatically clean up the test history ([[636][https://github.com/unclebob/fitnesse/pull/636]])
|
||||
* Added JUnit output format for suite runs: ''?suite&format=junit'' ([[642][https://github.com/unclebob/fitnesse/pull/642]])
|
||||
* Issues fixed:
|
||||
* Fixed errors that occurred when a different XML !-TransformerFactory-! was loaded ([[598][https://github.com/unclebob/fitnesse/pull/598]])
|
||||
* Fixed failure navigator in test history pages ([[580][https://github.com/unclebob/fitnesse/pull/580]])
|
||||
* Empty ''suiteFilter'' argument on ''?suite'' responder will be ignored ([[625][https://github.com/unclebob/fitnesse/pull/625]])
|
||||
* Test/Suite button is search results worksfromsub-wiki's
|
||||
* Allow Symlink rename/replace on existing Symlink ([[610][https://github.com/unclebob/fitnesse/pull/610]])
|
||||
* Prevent port conflicts for Slim runner when run in-process ([[621][https://github.com/unclebob/fitnesse/pull/621]])
|
||||
|
||||
For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=10&state=closed.
|
||||
|
||||
!2 20150114
|
||||
* Big cleanup. Removed classes:
|
||||
* !-util.StringUtil-!, use !-org.apache.commons.lang.StringUtils-! instead.
|
||||
* !-util.ListUtility-!, use java.util.Arrays instead.
|
||||
* fitnesse.wikitext.Utils, use !-fitnesse.html.HtmlUtil-! instead.
|
||||
* !-fitnesse.FitFilter-!.
|
||||
* Page names do no longer have to follow !-WikiWord-! syntax ([[513][https://github.com/unclebob/fitnesse/pull/513]])
|
||||
* Implemented Slim !-StopSuiteException-! -stopswholesuitefrom executing
|
||||
* More flexible filter definitions for JUnit runner ([[555][https://github.com/unclebob/fitnesse/pull/555]])
|
||||
* Can customize property characters used in !-!contents-! ([[541][https://github.com/unclebob/fitnesse/pull/541]])
|
||||
* Deal more nicely with Slim scenario output parameters ([[536][https://github.com/unclebob/fitnesse/pull/536]])
|
||||
* Allowforurlparametersas variables in wiki pages ([[531][https://github.com/unclebob/fitnesse/pull/531]])
|
||||
* Raise an error if a new page will override an existing page ([[459][https://github.com/unclebob/fitnesse/pull/459]])
|
||||
* Issues fixed:
|
||||
* Reverted old test behavior: only the current page will be tested (previously also test sub-pages were executed) ([[538][https://github.com/unclebob/fitnesse/pull/538]])
|
||||
* Fix !-SimpleFileVersionsController-! so it can be configured in ''plugins.properties''.
|
||||
* Remember Wrap and Auto-format options in Safari ([[521][https://github.com/unclebob/fitnesse/pull/521]])
|
||||
* ?properties responder is now returning more properties whenaskedforjsonoutput([[517][https://github.com/unclebob/fitnesse/pull/517]])
|
||||
|
||||
For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=9&state=closed.
|
||||
|
||||
!2 20140901
|
||||
* Code cleanup for FitNesse JUnit runner ([[487][https://github.com/unclebob/fitnesse/pull/487]]).
|
||||
* Improved error message when included page does not exist (([[496][https://github.com/unclebob/fitnesse/pull/496]]).
|
||||
* Slim script tables can now really be addressed with ''script:MyClass'' ([[500][https://github.com/unclebob/fitnesse/pull/500]]).
|
||||
* Slim can deal with arbitrary length messages ([[504][https://github.com/unclebob/fitnesse/pull/504]])
|
||||
* Plugin classes can support more elements (sub)types ([[506][https://github.com/unclebob/fitnesse/pull/506]])
|
||||
* Make Scenario tables play nice with custom script table (sub)types ([[507][https://github.com/unclebob/fitnesse/pull/507]])
|
||||
* Output parameters in a decision table have been made available in scenarios ([[510][https://github.com/unclebob/fitnesse/pull/510]]).
|
||||
* Command pattern can contain quoted parameters (this helps at places where spaces are involved) ([[508][https://github.com/unclebob/fitnesse/pull/508]]).
|
||||
* Via the property ''!-WikiPageFactories-!'' (plural) extra wiki page types can be supported ([[505][https://github.com/unclebob/fitnesse/pull/505]]).
|
||||
* Code cleanup in the Wiki module ([[511][https://github.com/unclebob/fitnesse/pull/511]]).
|
||||
* Issues fixed:
|
||||
* Fixed issue when rendering stack traces on Windows with spaces in paths ([[510][https://github.com/unclebob/fitnesse/pull/510]]).
|
||||
* Allow Scenarios with parameterised style but with empty parameter names ([[510][https://github.com/unclebob/fitnesse/pull/510]]).
|
||||
* Fix handling and recording of errors in table definitions ([[510][https://github.com/unclebob/fitnesse/pull/510]]).
|
||||
|
||||
For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=8&state=closed.
|
||||
|
||||
!2 20140630
|
||||
* Add page wide Expand/Collapse All buttons (bootstrap theme).
|
||||
* Performance improvements: cache big factory classes and page data.
|
||||
* Issues fixed:
|
||||
* Fix issue introduced in Order Query Table comparison in 20140623.
|
||||
* ''!-ErrorLog-!'' was not written if test execution was interrupted.
|
||||
* Include page header when executing test or suite.
|
||||
* Slow page tags again (bootstrap theme).
|
||||
* ''SLIM_VERSION'' variable is back: allow olderSLiMimplementations to connect.
|
||||
|
||||
For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=7&state=closed.
|
||||
|
||||
!2 2014-06-23
|
||||
* Author information for !-GitVersionController-!.
|
||||
* ''?suite'' and ''?test'' are now the same responder.
|
||||
* More useful failure message forjUnitrunner.
|
||||
* Use String arrays for commands. This should avoid errors with spaces in path names.
|
||||
* Improved matching for query tables.
|
||||
* Plugins are now loaded relative to the FitNesse root path.
|
||||
* SLIM can handle checks on Map's.
|
||||
* Refactoring on wiki subsystem.
|
||||
* Issues fixed:
|
||||
* Support more than one level of symlinks.
|
||||
* !-ErrorLog-! is written for tests ran with ''format=text'' or ''format=xml''.
|
||||
* Rich Text Format horizontal scrollbar is missing.
|
||||
* Failure navigator should only show in case of failures.
|
||||
|
||||
For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=6&state=closed.
|
||||
|
||||
!2 2014-04-18
|
||||
* Introduced new logo.
|
||||
* New table type for Slim: [[Dynamic Decision table][.FitNesse.UserGuide.WritingAcceptanceTests.SliM.DynamicDecisionTable]].
|
||||
* Add ''script:'' prefix. Script tables can be defined as ''script:Fixture name''.
|
||||
* Wiki server is no longer started when !-FitNesse-! is started with ''-c'' option.
|
||||
* !-FitNesseRoot-! location can be changed in JUnit !-FitNesseSuite-! annotation.
|
||||
* Comment columns for slim decision and query tables.
|
||||
* Shortcut keys (press ''?'').
|
||||
* Configurable [[Context root][.FitNesse.UserGuide.AdministeringFitNesse.ConfigurationFile]].
|
||||
* Updated the .FitNesse.UserGuide structure.
|
||||
* Improved Where Used feature in the Tools menu.
|
||||
* ''JAVA_HOME'' variable is now used, if set, to find the java executable for java subprocesses.
|
||||
* Properties ''slim.timeout'' and ''slim.debug.timeout'' can be used to configure timeouts (start up and finish) for SLIM test runs.
|
||||
* The rich text editor is now an in-page editor (does not use an iframe anymore).
|
||||
* Can auto-format on save when editing a page in plain textmode.
|
||||
* Issues fixed:
|
||||
* ''Add'' menu should only show templates ending on ''-Page.''
|
||||
* Missing stylesheets added to JUnit test results.
|
||||
* Fix representation issue with ignored field inSLim!-TableTable.-!
|
||||
|
||||
For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?milestone=6&state=closed.
|
||||
|
||||
!2 2014-02-01
|
||||
* '''Files outside the http://files section can no longer be accessed!'''
|
||||
* Updated bootstrap theme to bootstrap 3.
|
||||
* Added hooks to add custom test systems.
|
||||
* Pages can now be defined in a .TemplateLibrary. You can add your own page scaffolding.
|
||||
* java.util.logging is now used for logging, instead of System.out/err.
|
||||
* Support for more content types (in particular image types).
|
||||
* Cleanup: removed packages fitnesse.runner, fitnesse.schedule.
|
||||
* Refactoring: the code is a more modular than before. This makes it easier to integrate !-FitNesse-! components in other applications.
|
||||
* MakeFittestrunnerno longer dependent on the wiki running: now theFit testsystem starts it's own "socket catcher".
|
||||
* The jUnit test running is starting a test runner by itself. It's no longer using !-FitNesseMain-!.
|
||||
* Slim server can be kept running after test execution (-d option).
|
||||
* Issues fixed:
|
||||
* Unicode issues fixed.
|
||||
* Stability fixes for Slim.
|
||||
* Slim tables starting with "comment:" are considered comment tables.
|
||||
* Bug in Fit that caused flow mode for !-FitLibrary's-! !-DoFixture-! to break.
|
||||
* Bug where external HTML page suites were not displayed.
|
||||
* Hash map rendering in rich text editor.
|
||||
|
||||
For a complete list of closed issues and merged pull requests see https://github.com/unclebob/fitnesse/issues?direction=desc&milestone=4&page=1&sort=updated&state=closed.
|
||||
|
||||
!2 2013-11-10
|
||||
* CMSystem functionality is removed. Now only the !-VersionsController-! interface can be used.
|
||||
* Git version control andrecent-changessupport
|
||||
* Page caching is removed.Changesonthefilesystemarenowdirectly reflected in the wiki
|
||||
* Test and Page history can show/hide passed tests. This makes it easier to search for failed test runs.
|
||||
* The "names" responder has new options: "Recursive", "!-LeafOnly-!", and "!-ShowTags-!" (needs documentation update!)
|
||||
* Reduce space used by includedpagesontestpage.
|
||||
* Testsystem, Fit server and wiki code has been cleaned up.
|
||||
* New command line option ''-f <config file>''. Loads a custom configuration properties file.
|
||||
* Code cleanup: test system, wiki and reporting (formatters)
|
||||
* Settings can be configured both on the command line and in the plugins.properties file
|
||||
* Updated REST API parameter for "names" request
|
||||
* Issues fixed:
|
||||
* HTML content is table cells is passed to the SUT as-is
|
||||
* Sockets are not properly closed after Slim test execution
|
||||
* !-StopTest-!behaviourchanged in version 20130530. Theoldbehaviourisin place again.
|
||||
* Fixed issue where stylesheets were not properly loaded in Chrome.
|
||||
* String arguments are not converted, even if a Converter is registered.
|
||||
* Rich text editor improvements
|
||||
|
||||
!2 2013-05-30
|
||||
* Many improvements in the JUnit test runner
|
||||
* New: version comparator
|
||||
* Wiki: can set image width with -w option, border with -b and margin with -m: !-!<g class="gr_ gr_1081 gr-alert gr_spell gr_disable_anim_appear undefined ContextualSpelling ins-del multiReplace" id="1081" data-gr-id="1081">img</g> -b 2 -m 10 -w 600 http://files/someImage.png-!
|
||||
* !-FitNesse-! loads well with both fitnesse.jar and fitnesse-standalone.jar
|
||||
* Virtual Wiki functionality has finally been removed
|
||||
* Big refactoring ofSLiMtestsystem. Output is now XML compliant, introduction of domain classes and cachingofsetup/tear down pages
|
||||
* Many fixes in the rich text editor: full-screen editing, more lenient parsing of wiki text, improved cut-and-paste
|
||||
* Optimized wiki page parser performance
|
||||
* Fixed issue with setting/reading the same field multiple times in aSLiMdecision table
|
||||
* Stack traces fromSLiMserver are enriched with class information
|
||||
|
||||
!2 2012-11-16
|
||||
* Added new Failure Navigator. Now possible to jump quickly to cells containing failures or exceptions. Works on Tests and Suites. Finds failures in collapsed sections or in scenario tables.
|
||||
|
||||
!2 2012-09-18
|
||||
* Added the concept of a !-TemplateLibrary-! and the ability to insert existing templates into the plain text editor.
|
||||
|
||||
!2 2012-03-20
|
||||
* '''Note:''' This page has a layoutthat's not conformprevious releases of !-FitNesse-!
|
||||
* Introduced !-ReleaseNotes-! page
|
||||
* Moved a lot of presentation logic to template files
|
||||
* New style - The layout and style in theWIkitext is changed as well, keep this in mind when comparing test output
|
||||
* Wysiwyg editor
|
||||
* Parser fixes
|
||||
* [[Theming system][UserGuide.WikiTheming]]
|
||||
|
||||
!2 2011-10-25
|
||||
* New parser
|
||||
|
||||
!2 20110923 (Dan Rollo)
|
||||
maven pom.xml cleanups:
|
||||
|
||||
* Remove unneeded default <groupId> tags.
|
||||
* Add plugin <version> tags.
|
||||
* Add explicit, platform independent UTF-8 file encoding via property: project.build.sourceEncoding
|
||||
* Remove dependencyonobsoletefitlibrary(the required classes are already in the source tree).
|
||||
* Replace <system> dependency on json with the latest published json artifact.
|
||||
* Remove unneeded ${basedir} from <sourceDirectory> tag value.
|
||||
|
||||
!2 20081128 (UB)
|
||||
* Added &debug flag to TestResponderurl. This forces the test to run ''inside'' the fitnesse process. If you are running fitnesse in a debugger, you can breakpoint your fixtures.
|
||||
* Symbols can be java properties or environment variables. Symbols first, env variables second, java properties third.
|
||||
* If the first cell of a script table is a symbol assignment ($V=) then the rest must be a function call. The symbol is assigned the return value of the function.
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<properties>
|
||||
<Edit>true</Edit>
|
||||
<Files>true</Files>
|
||||
<Properties>true</Properties>
|
||||
<RecentChanges>true</RecentChanges>
|
||||
<Refactor>true</Refactor>
|
||||
<Search>true</Search>
|
||||
<Versions>true</Versions>
|
||||
<WhereUsed>true</WhereUsed>
|
||||
</properties>
|
|
@ -0,0 +1 @@
|
|||
The following text must be here:''You have reached Child One.''
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Files/>
|
||||
<LastModified>20060717210025</LastModified>
|
||||
<RecentChanges/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,3 @@
|
|||
This page has an alias widget that links to a non existent page
|
||||
|
||||
[[link][NonExistentPage]]
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Files/>
|
||||
<LastModified>20060717210025</LastModified>
|
||||
<RecentChanges/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,3 @@
|
|||
This page contains an alias link to a non existent sub page.
|
||||
|
||||
[[link][^NonExistentSubPage]]
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Files/>
|
||||
<LastModified>20060717210025</LastModified>
|
||||
<RecentChanges/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1 @@
|
|||
This page: .FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.DoesNotExist.
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Files/>
|
||||
<LastModified>20060717210026</LastModified>
|
||||
<RecentChanges/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,3 @@
|
|||
This page has a link to a non existent sub page.
|
||||
|
||||
.FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.ChildWithSubPageLinkToNonExistentPage.NonExistentSubPage
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Files/>
|
||||
<LastModified>20060717210026</LastModified>
|
||||
<RecentChanges/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1 @@
|
|||
the included page 00bF
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Files/>
|
||||
<LastModified>20060717210026</LastModified>
|
||||
<RecentChanges/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,2 @@
|
|||
Child Including Page
|
||||
!include .FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.IncludedPage
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Files/>
|
||||
<LastModified>20060717210027</LastModified>
|
||||
<RecentChanges/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,2 @@
|
|||
!include .FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.IncludedPage
|
||||
.FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.IncludingPage.ChildIncludingPage
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Files/>
|
||||
<LastModified>20060717210027</LastModified>
|
||||
<RecentChanges/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,10 @@
|
|||
This page is used as a target for some of the FitNesse acceptance tests. Don't delete it or any of it's children.
|
||||
|
||||
.FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.ChildOne
|
||||
.FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.ChildWithLinkToNonExistentPage
|
||||
.FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.ChildWithSubPageLinkToNonExistentPage
|
||||
.FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.ChildWithAliasLinkToNonExistentPage
|
||||
.FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.ChildWithAliasLinkToNonExistentSubPage
|
||||
.FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.IncludedPage
|
||||
.FitNesse.SuiteAcceptanceTests.AcceptanceTestPage.IncludingPage
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Files/>
|
||||
<LastModified>20060717210024</LastModified>
|
||||
<RecentChanges/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Files/>
|
||||
<LastModified>20060717210028</LastModified>
|
||||
<RecentChanges/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1 @@
|
|||
[[!-FitNesse's-! own acceptance test suite][.FitNesse.SuiteAcceptanceTests]] | [[Front Page][.FrontPage]] | [[User Guide][.FitNesse.UserGuide]]
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<Normal/>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Refactor/>
|
||||
<Search/>
|
||||
<Versions/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Files/>
|
||||
<LastModified>20060717210028</LastModified>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Search/>
|
||||
<Versions/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,168 @@
|
|||
!|scenario|given page|page|with content|content|
|
||||
|create page|@page|with content|@content|
|
||||
|$IT=|echo|@page|
|
||||
|
||||
!|scenario|given page|page|
|
||||
|given page|@page|with content|nothing|
|
||||
|$CONTENT=|echo||
|
||||
|
||||
!|scenario|given test page|page|
|
||||
|given page|@page|
|
||||
|make|@page|a test page|
|
||||
|
||||
!|scenario|given slim test page|page|
|
||||
|given page|@page|with content|!define TEST_SYSTEM {slim}|
|
||||
|make|@page|a test page|
|
||||
|
||||
|scenario|page|source|should have link to|target|
|
||||
|check|request page|@source|200|
|
||||
|ensure|content contains|<a href="@target"|
|
||||
|$IT=|echo|@source|
|
||||
|
||||
!|scenario|it should have link to|target|
|
||||
|page|$IT|should have link to|@target|
|
||||
|
||||
!|scenario|and it should have link to|target|
|
||||
|page|$IT|should have link to|@target|
|
||||
|
||||
!|scenario|page|source|should have creating link to|target|
|
||||
|check|request page|@source|200|
|
||||
|ensure|content contains|@target<a title="create page" href="@target?edit&nonExistent=true">[?]</a>|
|
||||
|
||||
!|scenario|it should have creating link to|target|
|
||||
|page|$IT|should have creating link to|@target|
|
||||
|
||||
!|scenario|page|source|should contain|text|
|
||||
|check|request page|@source|200|
|
||||
|ensure|content contains|@text|
|
||||
|show|content|
|
||||
|
||||
!|scenario|page|source|should not contain|text|
|
||||
|check|request page|@source|200|
|
||||
|reject|content contains|@text|
|
||||
|show|content|
|
||||
|
||||
!|scenario|page|source|should match|text|
|
||||
|check|request page|@source|200|
|
||||
|ensure|content matches|@text|
|
||||
|show|content|
|
||||
|
||||
!|scenario|it should contain|text|
|
||||
|page|$IT|should contain|@text|
|
||||
|
||||
!|scenario|it should not contain|text|
|
||||
|page|$IT|should not contain|@text|
|
||||
|
||||
!|scenario|it should contain|text|in line|symbol|
|
||||
|check|request page|$IT|200|
|
||||
|$@symbol=|line number containing|@text|
|
||||
|
||||
!|scenario|it should match|text|
|
||||
|page|$IT|should match|@text|
|
||||
|
||||
!|scenario|test results for page|source|should contain|text|
|
||||
|check|request page|@source?test|200|
|
||||
|ensure|content contains|@text|
|
||||
|show|content|
|
||||
|
||||
!|scenario|test results for page in debug mode |source|should contain|text|
|
||||
|check|request page|@source?test&debug|200|
|
||||
|ensure|content contains|@text|
|
||||
|show|content|
|
||||
|
||||
!|scenario|test results for suite|source|should contain|text|
|
||||
|check|request page|@source?suite|200|
|
||||
|ensure|content contains|@text|
|
||||
|show|content|
|
||||
|
||||
!|scenario|its test results should contain|text|
|
||||
|test results for page|$IT|should contain|@text|
|
||||
|
||||
!|scenario|test ressults for page|source|should not contain|text|
|
||||
|check|request page|@source?test|200|
|
||||
|reject|content contains|@text|
|
||||
|show|content|
|
||||
|
||||
!|scenario|and should contain|text|
|
||||
|ensure|content contains|@text|
|
||||
|show|content|
|
||||
|
||||
!|scenario|and should match|text|
|
||||
|ensure|content matches|@text|
|
||||
|show|content|
|
||||
|
||||
!|scenario|and should not contain|text|
|
||||
|reject|content contains|@text|
|
||||
|show|content|
|
||||
|
||||
!|scenario|widget|wikiText|should render|htmlText|
|
||||
|create page|WidgetPage|with content|@wikiText|
|
||||
|check|request page|WidgetPage|200|
|
||||
|ensure|content matches|@htmlText|
|
||||
|show|content|
|
||||
|
||||
!|scenario|the line|after|should come after|before|
|
||||
|check|echo int|$@before|< $@after|
|
||||
|
||||
!|scenario|pass|
|
||||
|check|echo|pass|pass|
|
||||
|
||||
!|scenario|show collapsed|content|
|
||||
|show|@content|
|
||||
|
||||
|scenario| show Symbol | result|
|
||||
#NO ACTION in this scenario
|
||||
# the symbol is printed in the call of the scenario
|
||||
|
||||
!|scenario|then |pass | assertions pass, | fail| fail, | ignore| are ignored | exception | exceptions thrown|
|
||||
|ensure|content matches|Assertions:<[^<]*@pass right, @fail wrong, @ignore ignored, @exception exceptions|
|
||||
|show|extract match;|Assertions:<[^<]*exceptions|contents|0|
|
||||
|
||||
!|scenario|and cell |text | has result | result|
|
||||
|ensure|content matches| class="@result">@text<|
|
||||
|show|extract match;| class="[^"]+">@text<|contents|0|
|
||||
|
||||
!define TestSTART {@@@START: Test specific content}
|
||||
!define TestEND {@@@END: Test specific content}
|
||||
|
||||
!|scenario |and TestSystem setup is|content |
|
||||
|$CONTENT=|echo|$CONTENT!-
|
||||
-!@content|
|
||||
|
||||
!|scenario |and setup content is|content |
|
||||
|$CONTENT=|echo|$CONTENT!-
|
||||
-!@content|
|
||||
|
||||
!|scenario |and test content is|content |
|
||||
|given page|$IT |with content|$CONTENT ${TestSTART}!-@content-!${TestEND}|
|
||||
|make |$IT |a test page |
|
||||
|
||||
!|scenario| get HTML result |
|
||||
|start |Response Examiner.|
|
||||
|setType | contents|
|
||||
|setPattern |${TestSTART}[^<]*(.*>)\s*${TestEND}|
|
||||
|setGroup|1|
|
||||
|$HTML_Result= |found|
|
||||
|
||||
|scenario| get HTML input |
|
||||
|start |Response Examiner.|
|
||||
|setType | pageHtml|
|
||||
|setPattern |${TestSTART}[^<]*(.*>)\s*${TestEND}|
|
||||
|setGroup|1|
|
||||
|$HTML_Input= |found|
|
||||
|show collapsed| get value|
|
||||
|
||||
|
||||
!|scenario|get collapsed executon log for page|source|
|
||||
|check |request page |@source?executionLog|200 |
|
||||
|show |content|
|
||||
|
||||
!|scenario|when page|source| is tested|
|
||||
|check|request page|@source?test|200|
|
||||
|show collapsed|content|
|
||||
|
||||
!|scenario|when page|source| is tested and HTML is extracted|
|
||||
|when page|@source| is tested|
|
||||
|get HTML result|
|
||||
|get HTML input |
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit>true</Edit>
|
||||
<Files>true</Files>
|
||||
<Properties>true</Properties>
|
||||
<RecentChanges>true</RecentChanges>
|
||||
<Refactor>true</Refactor>
|
||||
<Search>true</Search>
|
||||
<Versions>true</Versions>
|
||||
<WhereUsed>true</WhereUsed>
|
||||
<saveId>1234380859396</saveId>
|
||||
<ticketId>7171568299669753244</ticketId>
|
||||
</properties>
|
|
@ -0,0 +1,4 @@
|
|||
!|Import|
|
||||
|fitnesse.fixtures|
|
||||
|
||||
!|SetUp|
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Files/>
|
||||
<LastModified>20060717210029</LastModified>
|
||||
<LastModifyingUser>docs</LastModifyingUser>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Search/>
|
||||
<Versions/>
|
||||
<WhereUsed/>
|
||||
<saveId>1122839767051</saveId>
|
||||
<ticketId>2319759440361385703</ticketId>
|
||||
</properties>
|
|
@ -0,0 +1,14 @@
|
|||
!|script|
|
||||
|given page|FrontPage|
|
||||
|
||||
!note Make sure saveProperties is last, because it clears the write-lock
|
||||
!|operation is authenticated|
|
||||
|operation|
|
||||
|purgeHistory|
|
||||
|shutdown|
|
||||
|renamePage|
|
||||
|deletePage|
|
||||
|movePage|
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit>true</Edit>
|
||||
<Files>true</Files>
|
||||
<Properties>true</Properties>
|
||||
<RecentChanges>true</RecentChanges>
|
||||
<Refactor>true</Refactor>
|
||||
<Search>true</Search>
|
||||
<Test/>
|
||||
<Versions>true</Versions>
|
||||
<WhereUsed>true</WhereUsed>
|
||||
</properties>
|
|
@ -0,0 +1,52 @@
|
|||
!|scenario|it should be readable with no authentication|
|
||||
|check|request page|$IT|200|
|
||||
|
||||
!|scenario|it should not be readable with no authentication|
|
||||
|check|request page|$IT|401|
|
||||
|
||||
!|scenario|it should be readable by user|user|password|password|
|
||||
|check|request page|$IT|authenticated by user|@user|and password|@password|200|
|
||||
|
||||
!|scenario|it should not be readable by user|user|password|password|
|
||||
|check|request page|$IT|authenticated by user|@user|and password|@password|401|
|
||||
|
||||
!|scenario|given read locked page|page|
|
||||
|create page|@page|with authentication|secure-read=true|
|
||||
|$IT=|echo|@page|
|
||||
|
||||
!|scenario|given write locked page|page|
|
||||
|create page|@page|with authentication|secure-write=true|
|
||||
|$IT=|echo|@page|
|
||||
|
||||
!|scenario|given test locked page|page|
|
||||
|create page|@page|with authentication|secure-test=true|
|
||||
|$IT=|echo|@page|
|
||||
|
||||
!|scenario|directory|dir|should not be readable with no authentication|
|
||||
|check|request page|@dir|401|
|
||||
|
||||
!|scenario|directory|dir|should not be readable by user|user|password|password|
|
||||
|check|request page|@dir|authenticated by user|@user|and password|@password|401|
|
||||
|
||||
!|scenario|directory|dir|should be readable by user|user|password|password|
|
||||
|check|request page|@dir|authenticated by user|@user|and password|@password|200|
|
||||
|
||||
!|scenario|it should be not readable with no authentication|
|
||||
|check|request page|$IT|401|
|
||||
|
||||
!|scenario|it should not be readable by user|user|password|password|
|
||||
|check|request page|$IT|authenticated by user|@user|and password|@password|401|
|
||||
|
||||
!|scenario|it should be readable by user|user|password|password|
|
||||
|check|request page|$IT|authenticated by user|@user|and password|@password|200|
|
||||
|
||||
!|scenario|operation|operation|with bad authentication should fail|
|
||||
|check|request page|$IT?@operation|authenticated by user|Aladdin|and password|open please|401|
|
||||
|
||||
!|scenario|operation|operation|with good authentication should not fail|
|
||||
|check not|request page|$IT?@operation|authenticated by user|Aladdin|and password|open sesame|401|
|
||||
|
||||
!|scenario|operation|operation|is authenticated|
|
||||
|operation|@operation|with bad authentication should fail|
|
||||
|operation|@operation|with good authentication should not fail|
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit>true</Edit>
|
||||
<Files>true</Files>
|
||||
<Properties>true</Properties>
|
||||
<RecentChanges>true</RecentChanges>
|
||||
<Refactor>true</Refactor>
|
||||
<Search>true</Search>
|
||||
<Versions>true</Versions>
|
||||
<WhereUsed>true</WhereUsed>
|
||||
</properties>
|
|
@ -0,0 +1,24 @@
|
|||
|
||||
!|script|
|
||||
|given read locked page|FrontPage|
|
||||
|
||||
!|operation is authenticated|
|
||||
|operation|
|
||||
|properties|
|
||||
|edit|
|
||||
|search|
|
||||
|versions|
|
||||
|viewVersion|
|
||||
|names|
|
||||
|executeSearchProperties|
|
||||
|whereUsed|
|
||||
|refactor|
|
||||
|pageData|
|
||||
|raw|
|
||||
|rss|
|
||||
|importAndView|
|
||||
|getPage|
|
||||
|packet|
|
||||
|testHistory|
|
||||
|pageHistory|
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Refactor/>
|
||||
<Search/>
|
||||
<Test/>
|
||||
<Versions/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,16 @@
|
|||
!define PATHS {
|
||||
${SUT_PATH}
|
||||
!define TEST_SYSTEM (slim)
|
||||
}
|
||||
|
||||
!|script|
|
||||
|given page|ParentPage|with content|${PATHS}|
|
||||
|given test locked page|ParentPage.AwkwardTurtle|
|
||||
|
||||
!|operation is authenticated|
|
||||
|operation|
|
||||
|suite|
|
||||
|test|
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Refactor/>
|
||||
<Search/>
|
||||
<Test/>
|
||||
<Versions/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,12 @@
|
|||
!|script|
|
||||
|given write locked page|FrontPage|
|
||||
|
||||
!note Make sure saveProperties is last, because it clears the write-lock
|
||||
!|operation is authenticated|
|
||||
|operation|
|
||||
|addChild|
|
||||
|saveData|
|
||||
|rollback|
|
||||
|saveProperties|
|
||||
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit>true</Edit>
|
||||
<Files>true</Files>
|
||||
<Properties>true</Properties>
|
||||
<RecentChanges>true</RecentChanges>
|
||||
<Refactor>true</Refactor>
|
||||
<Search>true</Search>
|
||||
<Test/>
|
||||
<Versions>true</Versions>
|
||||
<WhereUsed>true</WhereUsed>
|
||||
</properties>
|
|
@ -0,0 +1,9 @@
|
|||
!include <SuiteAcceptanceTests.SetUp
|
||||
|
||||
|Library|
|
||||
|echo fixture|
|
||||
|page driver|
|
||||
|
||||
!|Authenticator Setup|
|
||||
|username|password|status?|
|
||||
|Aladdin|open sesame||
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit>true</Edit>
|
||||
<Files>true</Files>
|
||||
<Properties>true</Properties>
|
||||
<RecentChanges>true</RecentChanges>
|
||||
<Refactor>true</Refactor>
|
||||
<Search>true</Search>
|
||||
<Versions>true</Versions>
|
||||
<WhereUsed>true</WhereUsed>
|
||||
</properties>
|
|
@ -0,0 +1,8 @@
|
|||
Make a request for an insecure page with out supplying any credentials. It should succeed.
|
||||
|
||||
!|script|
|
||||
|given page|FrontPage|
|
||||
|it should be readable with no authentication|
|
||||
|it should be readable by user|Aladdin|password|open sesame|
|
||||
|it should be readable by user|Aladdin|password|open please|
|
||||
|it should be readable by user|Bob|password|xyzzy|
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Refactor/>
|
||||
<Search/>
|
||||
<Test/>
|
||||
<Versions/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,8 @@
|
|||
Children of a page whose 'secure-read' property is set, also require authentication in order to read. The 'secure-read' property acts as though it were inherited by the children pages.
|
||||
|
||||
!|script|
|
||||
|given read locked page|ParentPage|
|
||||
|given page|ParentPage.ChildPage|
|
||||
|it should not be readable with no authentication|
|
||||
|it should not be readable by user|Aladdin|password|open please|
|
||||
|it should be readable by user|Aladdin|password|open sesame|
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Refactor/>
|
||||
<Search/>
|
||||
<Test/>
|
||||
<Versions/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,11 @@
|
|||
!|FileSection|setup|
|
||||
|
||||
Requesting a file from the ''files''' directory does not require authentication, but requesting a directory does.
|
||||
A response with status 401 will be received signifying lack of authentication.
|
||||
|
||||
!|script|
|
||||
|directory|files/|should not be readable with no authentication|
|
||||
|directory|files/|should not be readable by user|Aladdin|password|open please|
|
||||
|directory|files/|should be readable by user|Aladdin|password|open sesame|
|
||||
|
||||
!|FileSection|teardown|
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Refactor/>
|
||||
<Search/>
|
||||
<Test/>
|
||||
<Versions/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,22 @@
|
|||
If we try to test a suite page that is marked secure-test, we'll have to authenticate.
|
||||
A response with status 401 will be received signifying lack of authentication.
|
||||
|
||||
Create a page to be tested.
|
||||
!|Page creator.|
|
||||
|Page name.|page attributes|valid?|
|
||||
|FrontPage |secure-test=true|true|
|
||||
|
||||
Now request a page. We should get a 401 since we didn't suply any credentials.
|
||||
!|Response Requester.|
|
||||
|uri|status?|
|
||||
|FrontPage?suite |401 |
|
||||
|
||||
When we supply bad credintials we get a 401.
|
||||
!|Response Requester.|
|
||||
|uri|username|password|status?|
|
||||
|FrontPage?suite |Aladdin|open please|401|
|
||||
|
||||
Proper credentials give a successfull response.
|
||||
!|Response Requester.|
|
||||
|uri|username|password|status?|
|
||||
|FrontPage?suite |Aladdin|open sesame|200|
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Files/>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Refactor/>
|
||||
<Search/>
|
||||
<Test/>
|
||||
<Versions/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,22 @@
|
|||
If we try to test a page that is marked secure-test, we'll have to authenticate.
|
||||
A response with status 401 will be received signifying lack of authentication.
|
||||
|
||||
Create a page to be tested.
|
||||
!|Page creator.|
|
||||
|Page name.|page attributes|valid?|
|
||||
|FrontPage |secure-test=true|true|
|
||||
|
||||
Now request a page. We should get a 401 since we didn't suply any credentials.
|
||||
!|Response Requester.|
|
||||
|uri|status?|
|
||||
|FrontPage?test |401 |
|
||||
|
||||
When we supply bad credintials we get a 401.
|
||||
!|Response Requester.|
|
||||
|uri|username|password|status?|
|
||||
|FrontPage?test |Aladdin|open please|401|
|
||||
|
||||
Proper credentials give a successfull response.
|
||||
!|Response Requester.|
|
||||
|uri|username|password|status?|
|
||||
|FrontPage?test |Aladdin|open sesame|200|
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Refactor/>
|
||||
<Search/>
|
||||
<Test/>
|
||||
<Versions/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,5 @@
|
|||
!define TEST_SYSTEM {slim}
|
||||
!contents -g -h -p
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<Help/>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Refactor/>
|
||||
<Search/>
|
||||
<Suite/>
|
||||
<Suites/>
|
||||
<Versions/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,33 @@
|
|||
!|scenario|the edit response should contain|contents|
|
||||
|check|request page|$IT?edit|200|
|
||||
|ensure|content contains|@contents|
|
||||
|show|content|
|
||||
|
||||
!|scenario|attempt to edit|page |
|
||||
|check |request page |@page?edit|200|
|
||||
|
||||
!|scenario|save page|page|with contents|contents|
|
||||
|check|request page save|@page|with contents|@contents|303|
|
||||
|$IT=|echo|@page|
|
||||
|
||||
!|scenario|save page|page|with contents|contents|by user|user|
|
||||
|check|request page save|@page|with contents|@contents|by user|@user|and password|empty|303|
|
||||
|$IT=|echo|@page|
|
||||
|
||||
!|scenario|save page|page|by user|user|
|
||||
|check|request page save|@page|with contents|empty|by user|@user|and password|empty|303|
|
||||
|$IT=|echo|@page|
|
||||
|
||||
!|scenario|save page|page|
|
||||
|save page|@page|with contents|empty|
|
||||
|
||||
!|scenario|it's last modified by should be|user|
|
||||
|check|last modified of page|$IT|@user|
|
||||
|
||||
!|scenario|it's versions should contain|content|
|
||||
|page|$IT?versions|should contain|@content|
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit>true</Edit>
|
||||
<Files>true</Files>
|
||||
<Properties>true</Properties>
|
||||
<RecentChanges>true</RecentChanges>
|
||||
<Refactor>true</Refactor>
|
||||
<Search>true</Search>
|
||||
<Versions>true</Versions>
|
||||
<WhereUsed>true</WhereUsed>
|
||||
</properties>
|
|
@ -0,0 +1,6 @@
|
|||
!include <SuiteAcceptanceTests.SetUp
|
||||
|
||||
!|Library|
|
||||
|page driver|
|
||||
|echo fixture|
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit>true</Edit>
|
||||
<Files>true</Files>
|
||||
<Properties>true</Properties>
|
||||
<RecentChanges>true</RecentChanges>
|
||||
<Refactor>true</Refactor>
|
||||
<Search>true</Search>
|
||||
<Versions>true</Versions>
|
||||
<WhereUsed>true</WhereUsed>
|
||||
</properties>
|
|
@ -0,0 +1,13 @@
|
|||
!2 Test editing an existent page.
|
||||
The form should have a normal header, an edit area filled with the current contents of the page, and a save button.
|
||||
----
|
||||
|
||||
!|script|
|
||||
|given page|SomePage|with content|some content|
|
||||
|the edit response should contain|SomePage|
|
||||
|and should match|<textarea.*>some content</textarea>|
|
||||
|and should match|<form.*>|
|
||||
|and should match|action="SomePage"|
|
||||
|and should match|<input.*>|
|
||||
|and should match|type="submit"|
|
||||
|and should match|value="Save"|
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<Help/>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Search/>
|
||||
<Suites/>
|
||||
<Test/>
|
||||
<Versions/>
|
||||
<WhereUsed/>
|
||||
<saveId>1229153458931</saveId>
|
||||
<ticketId>3161918505796726939</ticketId>
|
||||
</properties>
|
|
@ -0,0 +1,9 @@
|
|||
!2 Test editing a non-existent page.
|
||||
The form should have a normal header, a blank edit area, a save button.
|
||||
|
||||
!|script |
|
||||
|attempt to edit |SomeNonExistentPage |
|
||||
|and should match|<textarea.*></textarea> |
|
||||
|and should match|<form.*> |
|
||||
|and should match|action="SomeNonExistentPage"|
|
||||
|and should match|type="submit" |
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<Help/>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Search/>
|
||||
<Suites/>
|
||||
<Test/>
|
||||
<Versions/>
|
||||
<WhereUsed/>
|
||||
<saveId>1229153513098</saveId>
|
||||
<ticketId>-3655776539143142112</ticketId>
|
||||
</properties>
|
|
@ -0,0 +1,3 @@
|
|||
!|script|
|
||||
|save page|NewPage|with contents|þðæö|
|
||||
|it should contain|þðæö|
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<Help/>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Refactor/>
|
||||
<Search/>
|
||||
<Suites/>
|
||||
<Test/>
|
||||
<Versions/>
|
||||
<WhereUsed/>
|
||||
<saveId>1229153634306</saveId>
|
||||
<ticketId>2076309857569861535</ticketId>
|
||||
</properties>
|
|
@ -0,0 +1,10 @@
|
|||
The username of the person who last modified a page is displayed in the properties view of the modified page.
|
||||
|
||||
!|script|
|
||||
|save page|PageOne|by user|Aladdin|
|
||||
|it's last modified by should be|Aladdin|
|
||||
|save page|PageTwo|by user|Genie|
|
||||
|it's last modified by should be|Genie|
|
||||
|save page|PageThree|
|
||||
|it's last modified by should be|null|
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<Help/>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Refactor/>
|
||||
<Search/>
|
||||
<Suites/>
|
||||
<Test/>
|
||||
<Versions/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,6 @@
|
|||
!-RecentChanges-! displays the username of the last user that modified each page. If the user is anonymous then it is not displayed.
|
||||
|
||||
!|script|
|
||||
|page|RecentChanges|should not contain|Aladdin|
|
||||
|save page|SomePage|by user|Aladdin|
|
||||
|page|RecentChanges|should contain|Aladdin|
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<Help/>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Refactor/>
|
||||
<Search/>
|
||||
<Suites/>
|
||||
<Test/>
|
||||
<Versions/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,7 @@
|
|||
When viewing versions, the user who created each ''previous'' version is listed along with each version. Anonymous users are omitted.
|
||||
|
||||
!|script|
|
||||
|save page|MyPage|by user|Bob|
|
||||
|save page|MyPage|by user|Bill|
|
||||
|it's versions should contain|Bob|
|
||||
|and should match|>\d+<|
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<Help/>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Refactor/>
|
||||
<Search/>
|
||||
<Suites/>
|
||||
<Test/>
|
||||
<Versions/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,7 @@
|
|||
The username is saved when a page is edited. It is visible through use of the !-!lastmodified-! widget.
|
||||
|
||||
!|script|
|
||||
|save page|MyPage|with contents|!lastModified|
|
||||
|it should not contain|bob|
|
||||
|save page|MyPage|with contents|!lastmodified|by user|bob|
|
||||
|it should contain|bob|
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<Help/>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Refactor/>
|
||||
<Search/>
|
||||
<Suites/>
|
||||
<Test/>
|
||||
<Versions/>
|
||||
<WhereUsed/>
|
||||
</properties>
|
|
@ -0,0 +1,3 @@
|
|||
The edit responder is invoked with a url of the form {{{SomePage?edit}}}
|
||||
!contents -R2 -p
|
||||
!define TEST_SYSTEM {slim}
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<Help/>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Refactor/>
|
||||
<Search/>
|
||||
<Suite/>
|
||||
<Suites/>
|
||||
<Versions/>
|
||||
<WhereUsed/>
|
||||
<saveId>1229153668185</saveId>
|
||||
<ticketId>5760355884637638070</ticketId>
|
||||
</properties>
|
|
@ -0,0 +1,12 @@
|
|||
There are cases when you want to copy and append the last row of your column or row fixture certain number of times.
|
||||
|
||||
For Ex: We make a query to the database and it return certain record 'n' number of times. Instead of writing the same record 'n' number of times in your fitnesse page, you can just specify that you expect the last column 'n' number of times using the !-CopyAndAppendLastRow-! decorator.
|
||||
|
||||
!|Copy and Append Last Row|100|number of times|
|
||||
|Division|
|
||||
|numerator|denominator|quotient()|
|
||||
|10|2|5|
|
||||
|12.6|3|4.2|
|
||||
|100|4|25|
|
||||
|
||||
In the above example, we want to divide 100 by 4 101 times.
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<LastModified>20061216213113</LastModified>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Test/>
|
||||
<WhereUsed/>
|
||||
<saveId>1166322673244</saveId>
|
||||
<secure-write/>
|
||||
<ticketId>524008525574625139</ticketId>
|
||||
</properties>
|
|
@ -0,0 +1,12 @@
|
|||
What if you want to call the fixture 'n' times with the same row except you want to update one or two column's value?
|
||||
|
||||
Ex: If you are using fitnesse fixtures to populate database and you want to insert a record 500 times. It would be easy to write one model record and insert that 500 times. This can be easily done with the !-CopyAndAppendLastRow-! decorator. But the database table might have a primary key. So you might want to update the primary key in each row. Now you might want to pipe !-IncrementColumnsValue-! and !-CopyAndAppendLastRow-! decorators to get the job done.
|
||||
|
||||
Here is an example where I want to divide 5 by 1, 100 times, but I also want to update the numerator by 5 and denominator by 1.
|
||||
|
||||
!|Copy and Append Last Row|100|times|
|
||||
|Increment Columns Value|numerator|of type|int|by|5|
|
||||
|Increment Columns Value|denominator|of type|int|by|1|
|
||||
|Division|
|
||||
|numerator|denominator|quotient()|
|
||||
|5|1|5|
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<LastModified>20061216215829</LastModified>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Test/>
|
||||
<WhereUsed/>
|
||||
<saveId>1166324308994</saveId>
|
||||
<secure-write/>
|
||||
<ticketId>-8528063939302055872</ticketId>
|
||||
</properties>
|
|
@ -0,0 +1,42 @@
|
|||
What if you want to increment the value of one of the columns of your fixture table at run time? You can use the !-IncrementColumnsValue-! decorator. This lets you increment column's values. This decorator supports the following data types:
|
||||
* int or integer
|
||||
* double
|
||||
* string
|
||||
* date
|
||||
|
||||
!|Increment Columns Value|numerator|of type|int|by|5|
|
||||
|Division|
|
||||
|numerator|denominator|quotient()|
|
||||
|10|2|5|
|
||||
|10|3|5|
|
||||
|10|4|5|
|
||||
|
||||
!|Increment Columns Value|numerator|of type|integer|by|5|
|
||||
|Division|
|
||||
|numerator|denominator|quotient()|
|
||||
|10|2|5|
|
||||
|10|3|5|
|
||||
|10|4|5|
|
||||
|
||||
!|Increment Columns Value|numerator|of type|double|by|10.2|
|
||||
|Division|
|
||||
|numerator|denominator|quotient()|
|
||||
|10.2|2|5.1|
|
||||
|10.2|4|5.1|
|
||||
|
||||
!|Increment Columns Value|numerator|of type|string|by|5|
|
||||
|Division|
|
||||
|numerator|denominator|quotient()|
|
||||
|5|1|5|
|
||||
|5|11|5|
|
||||
|5|111|5|
|
||||
|
||||
Updates the dates by 5 days.
|
||||
!|Increment Columns Value|inDate|of type|date|by|5|
|
||||
|Get Dates|
|
||||
|inDate|updatedDate()|
|
||||
|12/02/2006|12/02/2006|
|
||||
|12/02/2006|12/07/2006|
|
||||
|12/22/2006|01/01/2007|
|
||||
|
||||
This decorator by itself is not as useful. But piped with other decorators this can be really handy.
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<LastModified>20081020135129</LastModified>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Test/>
|
||||
<WhereUsed/>
|
||||
<saveId>1166413276084</saveId>
|
||||
<secure-write/>
|
||||
<ticketId>8229942939854899838</ticketId>
|
||||
</properties>
|
|
@ -0,0 +1,20 @@
|
|||
Consider you have a simple fit test as follows:
|
||||
|
||||
!|Division|
|
||||
|numerator|denominator|quotient()|
|
||||
|10|2|5|
|
||||
|12.6|3|4.2|
|
||||
|100|4|25|
|
||||
|
||||
Now you want to measure how much time this test is taking to execute. But you don't want to or cannot modify the existing test fixture. Basically you want to decorate the existing fit tests with extra features.
|
||||
|
||||
It would be cool if you could write a decorator around your fit test which starts a timer before the execution of the fit test starts, runs the fit test as usual and once the execution is completed it records the amount of time it took to run the test. An assertion on the execution time to make sure it executes within a max time is also quite handy to be aware of the application's performance over a period of time. Something like this:
|
||||
|
||||
!|Max Time|100|milliseconds|
|
||||
|Division|
|
||||
|numerator|denominator|quotient()|
|
||||
|10|2|5|
|
||||
|12.6|3|4.2|
|
||||
|100|4|25|
|
||||
|
||||
'''Note:''' As of now, all the times are in milliseconds. The parameter "milliseconds" in the fixture above is just ignored.
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<LastModified>20081020135129</LastModified>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Test/>
|
||||
<WhereUsed/>
|
||||
<saveId>1166312743925</saveId>
|
||||
<secure-write/>
|
||||
<ticketId>-1637353253013255969</ticketId>
|
||||
</properties>
|
|
@ -0,0 +1,15 @@
|
|||
What if you want to execute the same fitnesse test multiple times. This seems like nice a candidate for a decorator.
|
||||
|
||||
If you want to loop 5 times over a fitnesse table and make sure each time the test does not take more than 1000 milliseconds.
|
||||
|
||||
!|Loop|5|times|
|
||||
|Max Time|1000|milliseconds|
|
||||
|Division|
|
||||
|numerator|denominator|quotient()|
|
||||
|10|2|5|
|
||||
|12.6|3|4.2|
|
||||
|100|4|25|
|
||||
|
||||
Once you run this test, you can see actual time taken for each run. In our case, we'll see 5 actual timing printed, since we are looping 5 times.
|
||||
|
||||
'''Note:''' As you can see, you can pipe decorators. Similar to how you can pipe Unix shell commands.
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<Help></Help>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Test/>
|
||||
<WhereUsed/>
|
||||
<saveId>1166313289708</saveId>
|
||||
<secure-write/>
|
||||
<ticketId>-7438421477570336896</ticketId>
|
||||
</properties>
|
|
@ -0,0 +1,4 @@
|
|||
!|Import|
|
||||
|fit.decorator|
|
||||
|fit.decorator.performance|
|
||||
|eg|
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit>true</Edit>
|
||||
<Files>true</Files>
|
||||
<LastModified>20061216183948</LastModified>
|
||||
<Properties>true</Properties>
|
||||
<RecentChanges>true</RecentChanges>
|
||||
<Refactor>true</Refactor>
|
||||
<Search>true</Search>
|
||||
<Versions>true</Versions>
|
||||
<WhereUsed>true</WhereUsed>
|
||||
<saveId>1166312388007</saveId>
|
||||
<ticketId>-6757238585913794424</ticketId>
|
||||
</properties>
|
|
@ -0,0 +1 @@
|
|||
!|fit.Summary|
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit>true</Edit>
|
||||
<Files>true</Files>
|
||||
<LastModified>20061216141632</LastModified>
|
||||
<Properties>true</Properties>
|
||||
<RecentChanges>true</RecentChanges>
|
||||
<Refactor>true</Refactor>
|
||||
<Search>true</Search>
|
||||
<Versions>true</Versions>
|
||||
<WhereUsed>true</WhereUsed>
|
||||
<saveId>1166296592283</saveId>
|
||||
<ticketId>-5128325404176707243</ticketId>
|
||||
</properties>
|
|
@ -0,0 +1,19 @@
|
|||
What if you want to specify a time range for your fitnesse fixtures?
|
||||
|
||||
!|Time Range|0|milliseconds min and max|200|milliseconds|
|
||||
|Division|
|
||||
|numerator|denominator|quotient()|
|
||||
|10|2|5|
|
||||
|12.6|3|4.2|
|
||||
|100|4|25|
|
||||
|
||||
In this example, you want to make sure all the division don't take less than 0 milliseconds and more than 50 milliseconds.
|
||||
|
||||
By now you should be aware that these decorators ignore alternative column names.
|
||||
|
||||
!|Time Range|0|alternative column values are ignored|200|this is ignored as well|
|
||||
|Division|
|
||||
|numerator|denominator|quotient()|
|
||||
|10|2|5|
|
||||
|12.6|3|4.2|
|
||||
|100|4|25|
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<Help></Help>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Test/>
|
||||
<WhereUsed/>
|
||||
<saveId>1166313795208</saveId>
|
||||
<secure-write/>
|
||||
<ticketId>-6211985429310204450</ticketId>
|
||||
</properties>
|
|
@ -0,0 +1,12 @@
|
|||
What if you want to run the same fitnesse fixture, 5 times and want to make sure that each time it runs it does not take more than 200 milliseconds? Also you want to make sure overall, it does not take more than 1000 milliseconds.
|
||||
|
||||
!|Max Time|1000|milliseconds|
|
||||
|Loop|5|times|
|
||||
|Max Time|200|milliseconds|
|
||||
|Division|
|
||||
|numerator|denominator|quotient()|
|
||||
|10|2|5|
|
||||
|12.6|3|4.2|
|
||||
|100|4|25|
|
||||
|
||||
'''Note:''' Again you can see here, how you can pipe different decorators and create powerful decorator patterns.
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<Help></Help>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Test/>
|
||||
<WhereUsed/>
|
||||
<saveId>1166313499121</saveId>
|
||||
<secure-write/>
|
||||
<ticketId>8781183260268546089</ticketId>
|
||||
</properties>
|
|
@ -0,0 +1,17 @@
|
|||
!-FitDecorator-! is a framework for writing decorator for FIT fixtures. !-FitDecorator-! help you to add new functionality to existing fixture classes without having to update them. You can just decorate the table on the fitnesse page with the appropriate !-FitDecorator-!.
|
||||
|
||||
For example, if you want to approximately know how much time each fixture is taking during a fitnesse test, you can decorate the existing fitnesse table with a !-MaxTime-! decorator.
|
||||
|
||||
List of available decorators and their functionality with an example:
|
||||
|
||||
* [[Measure Max Time taken by the Division Fixture by using !-MaxTime-! decorator][^MaxTimeDivision]]
|
||||
* [[Execute Division Fixture multiple times using Loop Decorator][^MultipleDivision]]
|
||||
* [[Example of piping !-MaxTime-! and Loop decorator to build complex decorators][^TimedMultipleDivision]]
|
||||
* [[Measure if the Division Fixture is executed in the given Time Range using the !-TimeRange-! decorator][^TimeRangeDivision]]
|
||||
* [[Copy the last row and append it to the end of the table 'n' number of times using !-CopyAndAppendLastRow-! decorator][^CopyAndAppendLastRow]]
|
||||
* [[Increment all the subsequent column values using the !-IncrementColumnsValues-! decorator][^IncrementColumnsValues]]
|
||||
* [[Example of piping !-CopyAndAppendLastRow-! and !-IncrementColumnsValues-! decorators][^CopyAppendLastRowAndIncrementColumnValues]]
|
||||
|
||||
'''Note:''' !-FitDecorator-! does not support [[Fit Library][http://fitlibrary.sourceforge.net]] as of now.
|
||||
|
||||
!contents
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0"?>
|
||||
<properties>
|
||||
<Edit/>
|
||||
<Files/>
|
||||
<Properties/>
|
||||
<RecentChanges/>
|
||||
<Suite/>
|
||||
<WhereUsed/>
|
||||
<saveId>1166331006945</saveId>
|
||||
<secure-write/>
|
||||
<ticketId>-455847644342679400</ticketId>
|
||||
</properties>
|
|
@ -0,0 +1,16 @@
|
|||
!3 You can put arrays of objects into ColumnFixture fixtures.
|
||||
|
||||
!|fitnesse.fixtures.ComplexAddFixture|
|
||||
|a|b|sum?|
|
||||
|1,2|3,4|4,6|
|
||||
|
||||
{{{
|
||||
public class ComplexAddFixture extends ColumnFixture
|
||||
{
|
||||
public int[] a;
|
||||
public int[] b;
|
||||
public int[] sum() {
|
||||
return new int[] {a[0]+b[0], a[1]+b[1]};
|
||||
}
|
||||
}
|
||||
}}}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue