unclebob / fitnesse Goto Github PK
View Code? Open in Web Editor NEWFitNesse -- The Acceptance Test Wiki
Home Page: fitnesse.org
License: Other
FitNesse -- The Acceptance Test Wiki
Home Page: fitnesse.org
License: Other
Hi,
Currently fitnesse.http.Response hardcodes the charset encoding:
public static final String DEFAULT_CONTENT_TYPE = "text/html; charset=utf-8";
Unfortunately this means that the fixture receives from Fitnesse the strings in utf8 (and also requires utf8). This poses a problem for legacy projects (e.g. Delphi) which are already using some other encoding, where switching is not possible. The current workaround is, from the fixture, to call (Delphi's) Utf8Encode on every string that comes from the legacy system before replying to Fitnesse. And to call (Delphi's) Utf8Decode on every string that comes from Fitnesse into the fixture, before passing it on to the legacy code.
I was wondering if it would be possible to add support for something like:
-Dfitnesse.htmlencoding=ISO-8859-1
Note that Java already supports passing -Dfile.encoding=ISO-8859-1 , and that is why I thought of a similar solution. But it is just a suggestion. Any other solution that allows me to tell Fitnesse which encoding to use would be great (except having to fork the code myself ).
Thanks for listening.
marcio
http://fitnesse.org/FrontPage.FitNesseDevelopment.DownLoad points to https://cleancoder.ci.cloudbees.com/job/fitnesse//ws/dist/ which requires to have an account.
I expected all nightly builds to be freely available.
Configuration issue or documentation one ?
Hello All,
Using Eclipse 3.5 (Galileo) with Java 6 (build 1.6.0_16-b01,) the following files generate errors for superfluous @OverRide annotations:
JUnitRunNotifierResultsListener.java /fitnesse/src/fitnesse/junit
JavaFormatter.java /fitnesse/src/fitnesse/responders/run
PrintTestListener.java /fitnesse/src/fitnesse/junit
There are several warnings as well for "never used," "never read," and a "should be accessed in a static way,"
--Andy Dassing
From SO:
FitNesse's SuiteSetup page is shown as yellow instead of green in the test results. This can be corrected by adding a dummy test that has at least one green cell. But surely a setup page shouldn't require an actual test cell?
Posted this issue on the fitsharp github site and was advised that it was a Fitnesse issue. If the output table of a Slim TableTable fixture contains more columns than the input table, Fitnesse throws the exception 'java.lang.IndexOutOfBoundsException: Index: 1, Size: 1' when the number of rows in the output table is equal to the number of rows in the input table. No error is generated when additonal rows are appended to the output table however.
Fitnesse can hang if the client executes early as the early termination thread tries to report an issue to the MultipleTestsRunner instance which is locked in startSystemAndExecutePages.
Because of this the error isn't reported.
The error that caused the problem in our case was taht the fitnesse path entry was named fitnesse.jar in the installation, but the jar name had been renamed to fitnesse-20101003.jar
Here's the relevant part of the thread dump that shows the hang:
2011-02-17 14:02:28
Full thread dump Java HotSpot(TM) Client VM (19.0-b09 mixed mode, sharing): "FitClient early termination" prio=6 tid=0x03015800 nid=0xe04 waiting for monitor entry [0x0340f000] java.lang.Thread.State: BLOCKED (on object monitor) at fitnesse.responders.run.MultipleTestsRunner.exceptionOccurred(MultipleTestsRunner.java:230) - waiting to lock <0x2cac0698> (a fitnesse.responders.run.MultipleTestsRunner) at fitnesse.responders.run.TestSystem.exceptionOccurred(TestSystem.java:117) at fitnesse.components.CommandRunningFitClient$EarlyTerminationRunnable.run(CommandRunningFitClient.java:185) - locked <0x2c70d0a8> (a fitnesse.components.CommandRunningFitClient) at java.lang.Thread.run(Thread.java:662) "FitClient timeout" prio=6 tid=0x03015400 nid=0x13e0 waiting for monitor entry [0x033bf000] java.lang.Thread.State: BLOCKED (on object monitor) at fitnesse.components.CommandRunningFitClient$TimeoutRunnable.run(CommandRunningFitClient.java:164) - waiting to lock <0x2c70d0a8> (a fitnesse.components.CommandRunningFitClient) at java.lang.Thread.run(Thread.java:662) "class fitnesse.responders.run.TestResponder: Responding Thread" prio=6 tid=0x02c8c000 nid=0x15a0 waiting on condition [ 0x032cf000] java.lang.Thread.State: TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method) at fitnesse.components.CommandRunningFitClient.waitForConnection(CommandRunningFitClient.java:118) at fitnesse.components.CommandRunningFitClient.start(CommandRunningFitClient.java:91) at fitnesse.responders.run.FitTestSystem.start(FitTestSystem.java:52) at fitnesse.responders.run.TestSystemGroup.startTestSystem(TestSystemGroup.java:61) at fitnesse.responders.run.MultipleTestsRunner.startTestSystemAndExecutePages(MultipleTestsRunner.java:99) - locked <0x2cac0698> (a fitnesse.responders.run.MultipleTestsRunner) at fitnesse.responders.run.MultipleTestsRunner.executePagesInTestSystem(MultipleTestsRunner.java:92) at fitnesse.responders.run.MultipleTestsRunner.internalExecuteTestPages(MultipleTestsRunner.java:83) at fitnesse.responders.run.MultipleTestsRunner.executeTestPages(MultipleTestsRunner.java:56) at fitnesse.responders.run.TestResponder.performExecution(TestResponder.java:141) at fitnesse.responders.run.TestResponder.doSending(TestResponder.java:45) at fitnesse.responders.ChunkingResponder.startSending(ChunkingResponder.java:67) at fitnesse.responders.ChunkingResponder.access$000(ChunkingResponder.java:17) at fitnesse.responders.ChunkingResponder$RespondingRunnable.run(ChunkingResponder.java:106) at java.lang.Thread.run(Thread.java:662)
Here's the error report once the hand is removed.
Standard Error: java.lang.NoClassDefFoundError: fit/FitServer Caused by: java.lang.ClassNotFoundException: fit.FitServer at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) Could not find the main class: fit.FitServer. Program will exit. Exception in thread "main" Internal Exception: java.lang.Exception: FitClient: external process terminated before a connection could be established. fitnesse.components.CommandRunningFitClient$EarlyTerminationRunnable.run(CommandRunningFitClient.java:185) java.lang.Thread.run(Thread.java:662)
Pull request coming with a proposed fix.
I would love to have the checkbox on the Edit page to be auto-checked for the "wrap" option. Is this already possible/configurable? I am planning on trying to make the change, or to use Greasemonkey to do it, but wondered what other folks thought. Ideas?
The class fitnesse.runner.TestRunner is not present in fitnesse.jar version 20110104. Has it been renamed?
If a page (e.g. .ExamplePage) includes another page as follows:
!include .PageWithChildren
and the .PageWithChildren has some children page, then these included pages show up on the .ExamplePage with "create page" question marks:
EDIT: the included page doesn't necessarily need to have children. The question signs seem to appear when the second page being included doesn't have an absolute address (e.g. !include RelativeAddress).
Expected behavior: no question marks, because the page already existis, even though not directly below the .ExamplePage. Earlier releases (e.g. v20100303) work as expected.
Applies at least to these releases:
Release v20111026
Release v20120325
When renaming a page with the "Find all references to this page and change them accordingly (May take several minutes)" option on the Refactor page checked, it causes other pages to have some variables evaluated.
I renamed a page in the SuiteAcceptanceTests and it changed e.g. in
FitNesseRoot/FitNesse/SuiteAcceptanceTests/SuiteVirtualWikiTests/TestAliasLinkToNonExistentSubPage/content.txt
-|VirtualPage|!contents |VirtualWiki=http://localhost:${FITNESSE_PORT}/FitNesse.SuiteAcceptanceTests.AcceptanceTestPage|true |
+|VirtualPage|!contents |VirtualWiki=http://localhost:${FITNESSE_PORT8070/FitNesse.SuiteAcceptanceTests.AcceptanceTestPage|true |
Thus it must have evaluated the ${FITNESSE_PORT} variable and somehow put the value in place of the closing braces.
It even caused undefined variable to be evaluated, like in
FitNesseRoot/FitNesse/UserGuide/QuickReferenceGuide/content.txt
-|Alias Link |${CODE} '''[['''${TEXT}''']['''${AnyPagePATH}''']]''' ${CODEend}| |
+|Alias Link |${CODE} '''[['''${TEXT}''']['''${AnyPagePATHundefined variable: AnyPagePATH''']]''' ${CODEend}|
Interestingly here ${TEXT} (like many other variables on the page) was left untouched.
I am using the latest version from jediwhale's repository.
Gregor
Currently, the documentation states that symbols are only supported in "a Decision Table, Script Table, or any other kind of table that can call functions", sadly this doesn't seem to include Query table.
I want to have something like this
|Query: list foo by name| |name |property |id | |foo1 |prop1 |$foo1= | |foo2 |prop2 |$foo2= | |foo3 |prop3 |$foo3= | |Query: list bar with foo| |name |idFoo |property52 | |bar1 |$foo1 |1 | |bar2 |$foo1 |2 | |bar1 |$foo2 |4 |
Over time the test history directory becomes quite large and can slow down execution. Most devs in our shop have regular tasks that delete the history directory. It would be nice if there was a startup option to disable the history or limit how many copies it keeps (with zero as a option).
Thanks
When upgrading to the latest released version, we had an included page that looked like this:
!include ..TopLevel.Suite.Page
(with the extra leading dot). This caused a NullPointerException when trying to visit the page or run a suite containing the page.
It would be nice to have one :)
btw, the new look is awesome!
Last official release is almost 7 months old. Because of API changes, our plugins aren't working with the latest version of fitnesse.
Basically we're forced to stay with 20100303 as management doesn't like us to use non official builds. A nightly build could do, but they aren't available right now.
Why isn't fitnesse released more often ? E.g. once a month ? The project has a full test suite and it seems could be pushed out more often.
Block elements/tags should be recognized immediately after a horizontal rule, as number of existing examples and documentation rely on it:
http://fitnesse.org/FitNesse.UserGuide.QuickReferenceGuide (line 160):
-----!note See ''run.sh'' and ''run.bat'' for examples of default start-up scripts.
The !note
tag is currently rendered as plain text: !note See ...
http://fitnesse.org/FitNesse.UserGuide.MarkupHorizontalRule
!c above----!c below
The second !c
tag is rendered as plain text: !c below
I've previously addressed this in the patch for issue #76 (see #79):
HorizontalRule.parse(Symbol, Parser)
Parser.endBlock()
If parser rules, like LineRule
, could be reworked so they don't recognize block tags, until terminated, may be all of the startLine
and startLineOrCell
hops with the scanner would become unnecessary -- block tags would be recognized only in the appropriate context.
From v20110401 and up the markup for showing included pages is somewhat broken.
If I have two levels of page includes (which I use to structure scenario libraries) the references to my includes have an extra non-existing page reference (see NextLevelScenarios in this example):
ScenarioLibrary
| Included page: >FirstLevelScenarios (edit) |
| scenario |
| etc... |
| | Included page: >NextLevelScenarios(-) >NextLevelScenarios[?] | |
| | scenario | |
| | etc... | |
Furthermore non-existing page includes were in past versions of FitNesse easily created by pressing the [?], but this option seems to be removed as well.
Before:
Included page: >MyNewPage[?] (edit)[?]
Page include failed because the page >MyNewPage[?] does not exist.
Now:
It now simply states:
Page include failed because the page >MyNewPage does not exist.
When I create a test (using the xebium fixture) which calls selenium it succeeds if I just run the test straight from from my testpage:
| script | selenium driver fixture |
| start browser | firefox | on url | http://localhost:8000 |
| ensure | do | open | on | !-FrontPage.TestPage-! |
| ensure | do | verifyText | on | //*/h2[contains(text(),'Moeten')] | with | exact:Moeten kunn><en |
| stop browser |
However when I create a scenario from the same test, it somehow changes the
text of my variable. For some reason it tries to interpret the "<>"characters as html and extends my string (whether I escape it or not) with an extra closing tag ">" which causes the assertion to fail.
| scenario | validate text | text |
| start browser | firefox | on url | http://localhost:8000 |
| ensure | do | open | on | !-FrontPage.TestPage-! |
| ensure | do | verifyText | on | //*/h2[contains(text(),'Moeten')] | with | @text |
| stop browser |
| script | selenium driver fixture |
| validate text | !-exact:Moeten kunn><en-! |
The result is it asserts "Moeten kunn>"
checked with v20110104
Whenever I use some widget to have some markup or to write a note in a table, the comparison fails : the expected value is the rendered one.
It seems, all is needed is another method in ParentWidget along asWikiText and render to provide the value to use for comparison. In ParentWidget, this method would return the same as render(), but subclasses may override it, for instance NoteWidget would return an empty String.
By the way, I'm using SLIM, I don't know if there is the same problem in FIT.
According to http://www.fitnesse.org/FrontPage.BackLog I should be able to enter a new story request or submit a bug through http://fitnesse.lighthouseapp.com/. But when I navigate the link I am presented with the error: "You must be a member of this account."
I don't see any way to sign up for an account with fitnesse.lighthouseapp.com. Is there something I'm missing? Or is there a better way to contribute stories / bugs to the project?
The fixture is the Java (or some other supported language) class that Slim to process the contents of the table.
I'd assume "class that Slim uses to process", but I'm complete newbie at Fitnesse so I'd like someone else to check it :)
Scenario's (in the scenario library) would become much more powerful if they would use local variables from the page where they are run, rather than using only variables positioned above or in the ScenarioLibrary page.
For example: I create a scenario "Create User" and place it in the ScenarioLibrary page, containing besides the variable "user" it contains additional variables (without having to introduce large method names):
| scenario | create user | user |
| create user with name @user |
| with streetname | ${steetname} |
| with zipcode | ${zipcode} |
etc..
I would like to run my scenario from any testcase and influence the variables for ${streetname} and ${zipcode}, which would add an additional level of flexibilty
On my testpage I could define values for my variables:
!define streename (mainroad)
!define zipcode (1234331)
| script |
| create user | john doe |
This works if I define these variables on a level above the ScenarioLibrary, however if i define the variables on my testpage, it does not substitute them.
Pulled a fork on May 15 and noticed there now are unnecessary <br/>
tags generated between markup elements. I don't know when this was introduced since the January release, but I'd guess somewhere between March and now.
Problem Rendering Snippet:
...<div class="main"><h1>Header Level 1</h1> <
br/>This text follows<br/><div class="footer">...
Old Rendering Snippet:
...<div class="main"><h1>Header Level 1</h1>This text follows<br/><div class="footer">...
With release V20111026, the functionality around !today -n and !today +n is not interpreting zeroes. Best shown through examples:
Given today is 2011-11-22
!today (yyyy-MM-dd) -1 ========> 2011-11-21
!today (yyyy-MM-dd) -10 =======> 2011-11-210
!today (yyyy-MM-dd) -101 ======> 2011-11-2101
!today (yyyy-MM-dd) -4 ===========> 2011-11-18
!today (yyyy-MM-dd) -4015 ========> 2011-11-18015
!today (yyyy-MM-dd) -0 =========> 2011-11-22 -0
!today (yyyy-MM-dd) +0 =========> 2011-11-22 +0
If I try to make a table that expects a nicely formatted JSON response, such as:
|url |response?| |/service/abc/123|!-{{{ { "test": [{ "foo":"bar", "abc":123"}] } }}}-!|
the !- for multiline seems to work, but the {{{ for preformatting does not take effect.
I've tried various orderings of these symbols, but nothing seems to help.
Thanks!
I have a hack working by creating two files, checkmark.png and wrong.png, then editing the fitnesse.css stylesheet as follows. I recommend that this be part of the base Fitnesse install:
.pass {
background-color: #AAFFAA;
padding: 0px 0px 0px 20px;
background-image: url("../images/checkmark.png");
}
.fail {
background-color: #FFAAAA;
padding: 0px 0px 0px 20px;
background-image: url("../images/wrong.png");
}
padding: 0px 0px 0px 20px;
}
We have an internal plugin similar to the maven classpath plugin that generates a classpath made of several elements given a single Symbol.
This symbol configuration can contain variables.
Before the release early 2011, we used to plug the paths into PageData classpath this way:
PageData.classpathWidgetBuilder.addWidgetClass(SpkClasspathWidget.class);
as PageData.classpathWidgetBuilder doesn't exist anymore, we've converted out widget to a SymbolType, using both Rule and Translation.
The problem is that the separation of the 2 concers (parsing & translation), given our need to preprocess the symbol parameters, make it impossible to construct a tree that contains multiple Paths in the parse() method: we don't have access to the translator there to "resolve" the variables. So the Paths class is unable to collect the classpaths element as they have not been generated yet.
So we've changed the constructs of the Paths and Path object to be able to have a symbol type that represents multiple interfaces.
Pull request coming.
If there's a better solution, please let us know.
Hello,
Here is an exemple to illustrate the problem :
Date 1 : !today -7.
Date 2 : !today (dd/MM/yyyy hh:mm:ss) -7.
Date 3 : !today (dd/MM/yyyy hh:mm:ss) +365.
Date 4 : !today (dd/MM/yyyy hh:mm:ss).
Date 5 : !today.
The result :
Date 1 : 18 août, 2011.
Date 2 : 18/08/2011 11:08:32.
Date 5 : 25 août, 2011.
The problem is present only if the regex contains a date format. (see class TodayWidget)
REGEXP = "!today(?: +(?:-t|-xml|\\(.*\\)))?( +((\\-|\\+)\\d+))?";
The matching expression for the date format (.*) is greedy and matches the following widgets (see previous example).
The problem could be solved like that :
REGEXP = "!today(?: +(?:-t|-xml|\\(.?*\\)))?( +((\\-|\\+)\\d+))?";
Could you solve this issues in the next release, please ?
Thanks a lot,
Julien
Using Release-20101101 header/heading tags are not recognized when placed inline, that is when not at the start of a line (or table cell):
FitNesse.UserGuide.MarkupHeaders
Starting with Release-20110104 this is no longer true – the tags get recognized even when placed inline, and the above page renders wrong result, like:
Headers are created by prefixing a line with
or
or !3
Either the Wiki parser or the documentation needs to be corrected.
Page tags are not being added when creating a new page. They're processed correctly when updating the page.
I'm using fitnesse version 20120508
To Recreate:
The ScenarioLibrary is automatically included in the SuiteSetUp which results in it being loaded twice when running a test.
There could be a valid reason for including it in the SuiteSetUp (for using methods from the library during the setup), but in that case it seems inefficient to reload them in the individual testcases.
My setup:
FitNesse version 2011-10-25 (same problem occurs in v2011-10-03)
SuiteSetUp is set to type Static
Running on Windows XP
We just pulled the latest release (v20111026), and now any instance of !today that adds a value containing a 0 seems to stop processing at the 0.
For example, this content run on 4/4/12
!today
!today +0
!today +1
!today +10
!today +11
!today +20
results in the following output
04 Apr, 2012
04 Apr, 2012 +0
05 Apr, 2012
05 Apr, 20120
15 Apr, 2012
06 Apr, 20120
There appears to be a problem when parsing pages containing a badly-formatted hash, or a hash containing a space instead of a comma. For example, when saving or viewing a page containing a hash like either of these:
!{name:bob dob:19521205}
!{value_without_colon}
then the java process running FitNesse begins consuming 100% of the CPU, and FitNesse becomes unresponsive (using v20110104). I have not narrowed down exactly what is wrong, but I think it originates in src/fitnesse/wikitext/parser/HashTable.java
. The parse
method contains a while (true)
loop that can only be escaped from if parser.atEnd()
is true, or if a closing brace is encountered. I suspect the parser is getting hung up on something in the middle of the hash, and thus is never reaching the end of the hash.
Once a page is saved with such a badly-formatted hash, it becomes impossible to view or edit/save the page; the only workaround I've found is to manually edit the content.txt
file to fix the offending hash.
It would appear that even though the test counts are correctly calculated in the individual result sections fitnesse is not aggregating those results for the final counts.
The basic description was posted on the yahoo group here:
There is also mention of the same issue in the group here:
(this is a spin-off of issue #30)
Currently the wiki engine translates line endings in wiki text with line breaks (<br/>
tags) in the html output. This is a legacy feature.
From an HTML point of view, text paragraphs should be in paragraph (<p></p>
) tags. This gives more semantic meaning to the text and also allows users to style the text better, especially when combined with other elements (tables, pre-formatted text).
It should also lead to less cumbersome markup, since you can simply add one or more newlines between a piece of text and it looks just fine once rendered.
The markups popular today (markdown, textile, reStructuredText) separate paragraphs by a blank line (2 newlines).
@stanio put some work in it already and that looks rather okay.
When using -c to run tests from the command-line, the only way to get a zero/non-zero exit code is to use &format=text.
It would be useful to get a zero/non-zero exit code with other formatters as well (such as &format=xml).
Hi there,
We are using fitnesse in an ETL environment to kick off a workflow type of system; Powercenter/dac.
Some DAC workflows take several hours to complete. We would like to be able to run fitnesse runs over night.
Is there a way to somehow configure the default time out in fitnesse??
Thanks for your help!!
In version 20111025.
The fitnesse.fixtures.RowEntryFixture should not reuse instance for each row.
Consider the following table implemented using a RowEntryFixture
|create customer register|
|id|name|category|loyaltyId|
|1|Test Duck|BUSINESS||
|2|Duck Test|CUSTOMER|GOLD|
|3|Fud|CUSTOMER||
For the last row, having no value for loyaltyId, this field is not explicitly set, forcing you to cope whith this if you do not want the customer id=3 to have the value GOLD which is probably not intended.
git://gist.github.com/2724284.git
The HELP TEXT allows us to use short page names, but still add a descriptive title to our suites- and testpages, which is important for documentation purposes. Unfortunately the HELP TEXT is not show on the result page (in the Test Summaries overview), neither is the alt text provided when hovering the URL's on the result page. This makes the result page not very useful for reporting.
Currently using: Version=v20110104
fitnesse.js > expandAll() method works incorrectly during test execution. The problem is expandOrCollapseAll() method collect all div elements with "hidden" class and then trys to get element id , but document has elements without id or id can't be parsed. Anyway id returned equals to empty string.
I have a clone of the fitnesse repo beneath my ecryptfs-mounted home directory.
Running FitNesse.SuiteAcceptanceTests, I get a red bar
Testing was interupted and results are incomplete.
Test Pages: 141 right, 0 wrong, 0 ignored, 0 exceptions
Assertions: 1110 right, 0 wrong, 130 ignored, 0 exceptions (0.000 seconds)
The last test header is
SuiteSlimTests.ScenarioLibraryTestSuite.ScenarioLibariesOrderTests.ScenarioLibraryOrderSuite.ScenarioLibraryOrderTestParent.ScenarioLibraryOrderIsCorrect
and it has no test output. Attempting to run that one test gives a red bar
Testing was interupted and results are incomplete.
Assertions: 0 right, 0 wrong, 0 ignored, 0 exceptions
The standard error from the Java process contains
java.lang.RuntimeException: java.io.FileNotFoundException: FitNesseRoot/files/testProgress/FitNesse.SuiteAcceptanceTests.SuiteSlimTests.ScenarioLibraryTestSuite.ScenarioLibariesOrderTests.ScenarioLibraryOrderSuite.ScenarioLibraryOrderTestParent.ScenarioLibraryOrderIsCorrect (File name too long) at util.FileUtil.createFile(FileUtil.java:37) at util.FileUtil.createFile(FileUtil.java:26) at fitnesse.responders.run.formatters.PageInProgressFormatter.newTestStarted(PageInProgressFormatter.java:23) at fitnesse.responders.run.formatters.CompositeFormatter.newTestStarted(CompositeFormatter.java:57) at fitnesse.responders.run.MultipleTestsRunner.startingNewTest(MultipleTestsRunner.java:230) at fitnesse.responders.run.MultipleTestsRunner.acceptOutputFirst(MultipleTestsRunner.java:222) at fitnesse.responders.run.TestSystem.acceptOutputFirst(TestSystem.java:114) at fitnesse.responders.run.slimResponder.SlimTestSystem.processTablesAndGetHtml(SlimTestSystem.java:314) at fitnesse.responders.run.slimResponder.SlimTestSystem.processAllTablesOnPage(SlimTestSystem.java:296) at fitnesse.responders.run.slimResponder.SlimTestSystem.runTestsAndGenerateHtml(SlimTestSystem.java:240) at fitnesse.responders.run.MultipleTestsRunner.executeTestSystemPages(MultipleTestsRunner.java:136) at fitnesse.responders.run.MultipleTestsRunner.startTestSystemAndExecutePages(MultipleTestsRunner.java:117) at fitnesse.responders.run.MultipleTestsRunner.executePagesInTestSystem(MultipleTestsRunner.java:102) at fitnesse.responders.run.MultipleTestsRunner.internalExecuteTestPages(MultipleTestsRunner.java:85) at fitnesse.responders.run.MultipleTestsRunner.executeTestPages(MultipleTestsRunner.java:57) at fitnesse.responders.run.TestResponder.performExecution(TestResponder.java:144) at fitnesse.responders.run.TestResponder.doSending(TestResponder.java:45) at fitnesse.responders.ChunkingResponder.startSending(ChunkingResponder.java:67) at fitnesse.responders.ChunkingResponder.access$000(ChunkingResponder.java:17) at fitnesse.responders.ChunkingResponder$RespondingRunnable.run(ChunkingResponder.java:98) at java.lang.Thread.run(Thread.java:679) Caused by: java.io.FileNotFoundException: FitNesseRoot/files/testProgress/FitNesse.SuiteAcceptanceTests.SuiteSlimTests.ScenarioLibraryTestSuite.ScenarioLibariesOrderTests.ScenarioLibraryOrderSuite.ScenarioLibraryOrderTestParent.ScenarioLibraryOrderIsCorrect (File name too long) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.(FileOutputStream.java:209) at java.io.FileOutputStream.(FileOutputStream.java:160) at util.FileUtil.createFile(FileUtil.java:33) ... 20 more
When running ant acceptance_tests
, the build reports success but probably shouldn't:
[...] [java] . 07:34:28 R:2 W:0 I:0 E:0 NoScenarioSectionIfThereAreNone (FitNesse.SuiteAcceptanceTests.SuiteSlimTests.ScenarioLibraryTestSuite.NoScenarioSectionIfThereAreNone) 0.049 seconds [java] java.lang.RuntimeException: java.io.FileNotFoundException: FitNesseRoot/files/testProgress/FitNesse.SuiteAcceptanceTests.SuiteSlimTests.ScenarioLibraryTestSuite.ScenarioLibariesOrderTests.ScenarioLibraryOrderSuite.ScenarioLibraryOrderTestParent.ScenarioLibraryOrderIsCorrect (File name too long) [java] at util.FileUtil.createFile(FileUtil.java:37) [java] at util.FileUtil.createFile(FileUtil.java:26) [java] at fitnesse.responders.run.formatters.PageInProgressFormatter.newTestStarted(PageInProgressFormatter.java:23) [java] at fitnesse.responders.run.formatters.CompositeFormatter.newTestStarted(CompositeFormatter.java:57) [java] at fitnesse.responders.run.MultipleTestsRunner.startingNewTest(MultipleTestsRunner.java:230) [java] at fitnesse.responders.run.MultipleTestsRunner.acceptOutputFirst(MultipleTestsRunner.java:222) [java] at fitnesse.responders.run.TestSystem.acceptOutputFirst(TestSystem.java:114) [java] at fitnesse.responders.run.slimResponder.SlimTestSystem.processTablesAndGetHtml(SlimTestSystem.java:314) [java] at fitnesse.responders.run.slimResponder.SlimTestSystem.processAllTablesOnPage(SlimTestSystem.java:296) [java] at fitnesse.responders.run.slimResponder.SlimTestSystem.runTestsAndGenerateHtml(SlimTestSystem.java:240) [java] at fitnesse.responders.run.MultipleTestsRunner.executeTestSystemPages(MultipleTestsRunner.java:136) [java] at fitnesse.responders.run.MultipleTestsRunner.startTestSystemAndExecutePages(MultipleTestsRunner.java:117) [java] at fitnesse.responders.run.MultipleTestsRunner.executePagesInTestSystem(MultipleTestsRunner.java:102) [java] at fitnesse.responders.run.MultipleTestsRunner.internalExecuteTestPages(MultipleTestsRunner.java:85) [java] at fitnesse.responders.run.MultipleTestsRunner.executeTestPages(MultipleTestsRunner.java:57) [java] at fitnesse.responders.run.SuiteResponder.performExecution(SuiteResponder.java:47) [java] at fitnesse.responders.run.TestResponder.doSending(TestResponder.java:45) [java] at fitnesse.responders.ChunkingResponder.startSending(ChunkingResponder.java:67) [java] at fitnesse.responders.ChunkingResponder.access$000(ChunkingResponder.java:17) [java] at fitnesse.responders.ChunkingResponder$RespondingRunnable.run(ChunkingResponder.java:98) [java] at java.lang.Thread.run(Thread.java:679) [java] Caused by: java.io.FileNotFoundException: FitNesseRoot/files/testProgress/FitNesse.SuiteAcceptanceTests.SuiteSlimTests.ScenarioLibraryTestSuite.ScenarioLibariesOrderTests.ScenarioLibraryOrderSuite.ScenarioLibraryOrderTestParent.ScenarioLibraryOrderIsCorrect (File name too long) [java] at java.io.FileOutputStream.open(Native Method) [java] at java.io.FileOutputStream.(FileOutputStream.java:209) [java] at java.io.FileOutputStream.(FileOutputStream.java:160) [java] at util.FileUtil.createFile(FileUtil.java:33) [java] ... 20 more [java] -------- [java] 141 Tests, 0 Failures 0.000 seconds. [java] 0 [java] Exit-Code: 0 [java] [java] -----Command Complete----- BUILD SUCCESSFUL Total time: 47 seconds
I've been trying to do the git clone of this repo over http with no success. After looking around, I think this issue is relevant towards diagnosing the problem: http://support.github.com/discussions/accounts/211-http-clone-errors
I used git clone over git://, but as I'm behind a proxy, this isn't nearly as straightforward.
for locally patched version it is sometimes useful to control the version number.
E.g. 20100303-ABC-1
The FitNesse.UserGuide.MarkupLists page provides few examples of marking up nested lists, like:
* Item one * sub item one * sub item two * Item two. 1 sub item 2 2 sub item 3 * sub sub item one 1 sub sub sub item one.
These appear quite broken using Release-20110104, while they are fine using the previous Release-20101101.
Using Release-20111026 and stable EDGE build #154 (2012-4-6) it appears nesting different than the parent type of list makes the child list rendered adjacent rather than nested to the parent, like:
Given I have set up tests like the following:
And CrossReferenceSuite contains:
!see TestSet1.MyTest1
!see TestSet2.MyTest2
Then I expect MyTest1 to have access to .SubWiki.ScenarioLibrary and .SubWiki.TestSet1.ScenarioLibrary. And it does.
And I expect MyTest2 to have access to .SubWiki.ScenarioLibrary and .SubWiki.TestSet2.ScenarioLibrary. But it does not have access to .SubWiki.TestSet2.ScenarioLibrary.
Possibly useful setup notes:
When executing a decent suite of large tests, FitNesse takes several minutes before actually executing the tests.
We could trace this performance problem down to the stripTrailingWhiteSpaceInLines method of the ParentWidget class using VisualVM. 34% of the time is spend in this method.
Eliminating this method in a manually patch version solved the performance issue: testexecution starts immediately instead of minutes.
If pages are included either directly in a testpage or through ScenarioLibraries test execution is slowed down significantly. The deeper the level of nested pages, the more it slows down. This seems not to be solved by using the new renderer, I use a very recent codebase (20111003).
I have today seen an example of a suite that runs tests at a rate of 0.2 seconds per test, if I add a ScenarioLibrary that has nesting 4 levels deep, even if my test do not need any scenario from the library it still slows the test execution with approx. 7 seconds per test.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.