Giter VIP home page Giter VIP logo

fitnesse's People

Contributors

amolenaar avatar antoine-aumjaud avatar awulder avatar benilovj avatar conradthukral avatar darrinholst avatar dependabot[bot] avatar dmitriykartashov avatar fhoeben avatar gojko avatar gramlich-gip avatar hansjoachim avatar jdufner avatar jediwhale avatar kosta-github avatar linquize avatar ludovicva avatar lupusdei avatar markhop avatar mgaertne avatar mikestockdale avatar mwarhaftig avatar nicolerauch avatar pordonj avatar raboof avatar six42 avatar stanio avatar tcnh avatar unclebob avatar woodybrood avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fitnesse's Issues

Need configurable http/html encoding (not hardcoded utf8)

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

Superfluous @Override Annotations

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

SuiteSetUp colored yellow in test summary

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?

Error from FitNesse when returning a table from a Slim TableTable fixture with more columns but the same number of rows as the input table

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 hang

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.

"wrap" checkbox - Autocheck Config

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?

Existing included pages show up with a "create page" question sign

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:

Alt Screenshot

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

Renaming with "all references" causes variable evaluation on other pages

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

Ability to use symbol in a Query table

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          |

Suggestion: Provide a way to disable / limit test history

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

NullPointerException on invalid !include

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.

Fitnesse not released often enough

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 after horizontal rule

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.

Markup for showing included pages is broken

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.

Escaping is ignored (in some cases) when using scenario tables

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

Suggestion : ability to use style or note in tables

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.

Cannot create bug or story through http://fitnesse.lighthouseapp.com/

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?

Typo in FixtureCode document

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 :)

Improvement: Scenario tables should use local variables

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.

Extra <br/> Break Tags

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">...

V20111026 !today plus/minus Does Not Interpret Zero As Part of a Number

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

multi-line preformatted code not working

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!

Color blind users unable to distinguish between red/green colors for pass/fail styles

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");
}

test-summary {

padding: 0px 0px 0px 20px;
}

regression: allow for adding multiple translated classpaths entries obtained from one symbol

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.

Widget TodaysDate's REGEXP is wrong with dateformat

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

code in code editor shows up wrapped

Code in code editor shows up wrapped upon opening. The "wrap" checkbox is off. A bit annoying behaviour when most tables are quite large. Applies to v20120417.

Right after clicking the edit button:

Alt wrapped

After clicking the "wrap" checkbox twice:

Alt unwrapped

Header/heading tags (incorrectly?) recognized inline

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.

Tags not saved when adding a page

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:

  • Add a new page with random data
  • Ensure you add a tag
  • Click Save
  • Edit the page - note that the tag is missing
  • Add the tag again and save.

ScenarioLibrary is included in SuiteSetUp

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

!today seems to have problems with zeroes

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

Infinite loop when parsing some hashes

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.

Support paragraphs

(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.

Exit code with -c and non-text formats

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).

Configure time out in fitnesse??

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!!

RowEntryFixture causes side effect for following row

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

Suggestion: Show HELP TEXT on result page

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 error

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.

Acceptance tests fail on ecryptfs mount

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

Nested list markup broken

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:

  • Item two.
  1. sub item 2
  2. sub item 3
  • sub sub item one
  1. sub sub sub item one.

Cross Reference Suite does not include Scenario Libraries for each test

Given I have set up tests like the following:

  • SubWiki
    • CrossReferenceSuite *
    • ScenarioLibrary
    • TestSet1
      • MyTest1 +
      • ScenarioLibrary
    • TestSet2
      • MyTest2 +
      • ScenarioLibrary

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:

  • This occurred among Slim tests run with RubySlim.

FitNesse takes a long time before executing tests of a large suite

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.

Including pages slows down test execution

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.