ソースを参照

Merged changes to 6.7

svn changeset:19972/svn branch:6.7
tags/6.7.0.beta1
Henri Sara 13年前
コミット
ca96dca574

+ 14
- 0
WebContent/VAADIN/themes/reindeer/table/table.css ファイルの表示

line-height: normal; line-height: normal;
} }


.v-ie6 .v-table-header-wrap,
.v-ie6 .v-table-footer-wrap,
.v-ie6 .v-table-column-selector{
/* Fixes IE6 overflow bug #7314 which causes Table headers to overflow and cover the column selector. */
position:relative;
}

.v-ie6 .v-table.v-disabled,
.v-ie7 .v-table.v-disabled{
/* Fixes ie issue #7324 where disabled shim does not cover table body */
position:relative;
}

.v-table-footer-wrap, .v-table-footer-wrap,
.white .v-table-footer-wrap { .white .v-table-footer-wrap {
text-transform: none; text-transform: none;
padding-right: 7px; padding-right: 7px;
} }



.v-table-header, .v-table-header,
.v-table-footer, .v-table-footer,
.v-table-footer table { .v-table-footer table {

バイナリ
WebContent/VAADIN/themes/sampler/icons/sampleicons/75-MenuBarCheckableItems.gif ファイルの表示


+ 17
- 8
build/build.xml ファイルの表示

<target name="package-test" depends="clean-result, nightly-init, package-init, init, build, docs, internal-package-zip, nightly-publish"> <target name="package-test" depends="clean-result, nightly-init, package-init, init, build, docs, internal-package-zip, nightly-publish">
</target> </target>


<!-- Locations of Ant task JARs - build properties not yet read at this point -->
<property name="ant.task.jar.antcontrib" value="build/lib/ant-contrib-1.0b3.jar" />
<property name="ant.task.jar.maven" value="build/lib/maven-ant-tasks-2.0.10.jar" />

<!-- ant contrib required for flow control (for loop, if, property override) --> <!-- ant contrib required for flow control (for loop, if, property override) -->
<!-- Note that we have to use a namespace to avoid clash when running sub-ant. --> <!-- Note that we have to use a namespace to avoid clash when running sub-ant. -->
<taskdef uri="antlib:net.sf.antcontrib" resource="net/sf/antcontrib/antlib.xml"> <taskdef uri="antlib:net.sf.antcontrib" resource="net/sf/antcontrib/antlib.xml">
<classpath> <classpath>
<pathelement location="build/lib/ant-contrib-1.0b3.jar" />
<pathelement location="${ant.task.jar.antcontrib}" />
</classpath> </classpath>
</taskdef> </taskdef>


<!-- ant contrib for Maven integration --> <!-- ant contrib for Maven integration -->
<path id="maven-ant-tasks.classpath" path="build/lib/maven-ant-tasks-2.0.10.jar" />
<path id="maven-ant-tasks.classpath" path="${ant.task.jar.maven}" />
<typedef resource="org/apache/maven/artifact/ant/antlib.xml" <typedef resource="org/apache/maven/artifact/ant/antlib.xml"
uri="antlib:org.apache.maven.artifact.ant" uri="antlib:org.apache.maven.artifact.ant"
classpathref="maven-ant-tasks.classpath" /> classpathref="maven-ant-tasks.classpath" />


<target name="remove-widgetset-gwt-tmp"> <target name="remove-widgetset-gwt-tmp">
<echo>Removing widgetset temp files</echo> <echo>Removing widgetset temp files</echo>
<delete dir="${output-dir}/WebContent/VAADIN/widgetsets/.gwt-tmp" includeemptydirs="true"/>
<delete dir="${widgetsets-output-dir}/.gwt-tmp" includeemptydirs="true"/>
<!-- This is generated by GWT 2.3+ for rpcPolicyManifest and symbolMaps, cannot disable -->
<delete dir="${widgetsets-output-dir}/WEB-INF" includeemptydirs="true" failonerror="false" />
</target> </target>


<!-- Note: Probably not needed any longer as all sources need to be compiled. --> <!-- Note: Probably not needed any longer as all sources need to be compiled. -->
<!-- ================================================================== --> <!-- ================================================================== -->


<!-- Main target for the custom build. --> <!-- Main target for the custom build. -->
<target name="custom-build" depends="clean-result, custom-build-init, nightly-init, package-init, init, compile-server-side, compile-client-side, vaadin.jar, vaadin-sources.jar">
<target name="custom-build" depends="clean-result, custom-build-init, nightly-init, package-init, init, build">
</target> </target>




<property file="${build.properties.file}" /> <property file="${build.properties.file}" />
<property name="version" value="${vaadin.version}"/> <property name="version" value="${vaadin.version}"/>
<property name="version.full" value="${version}.custom-${build.date.compact}"/> <property name="version.full" value="${version}.custom-${build.date.compact}"/>
<property name="compile.only.default-widgetset" value="1"/>
<!-- <property name="compile.only.default-widgetset" value="1"/> -->
</then> </then>
<!-- Otherwise version and snapshot.repository.url come from target "init" --> <!-- Otherwise version and snapshot.repository.url come from target "init" -->
</antcontrib:if> </antcontrib:if>
<fail unless="com.vaadin.testbench.deployment.url" message="The 'com.vaadin.testbench.deployment.url' property must be defined."/> <fail unless="com.vaadin.testbench.deployment.url" message="The 'com.vaadin.testbench.deployment.url' property must be defined."/>
<fail unless="com.vaadin.testbench.lib.dir" message="The 'com.vaadin.testbench.lib.dir' property must be defined."/> <fail unless="com.vaadin.testbench.lib.dir" message="The 'com.vaadin.testbench.lib.dir' property must be defined."/>


<property name="com.vaadin.testbench.screenshot.block.error" value="0.025"/>
<property name="com.vaadin.testbench.debug" value="false"/>
<property name="package.name" value="${base-name}"/> <property name="package.name" value="${base-name}"/>


<!-- Only Linux tests allowed. TODO: Generalize this. --> <!-- Only Linux tests allowed. TODO: Generalize this. -->
<!-- "tests" classes after unpacking the package. --> <!-- "tests" classes after unpacking the package. -->
<property name="output-dir" value="${output-dir}"/> <property name="output-dir" value="${output-dir}"/>


<!-- Convert some tests to run multiple times if failed. -->
<property name="create.retry.tests" value="1"/>
<property name="retries" value="3"/>
<!-- Convert tests to run multiple times if failed. -->
<property name="retries" value="2"/>
<property name="package.filename" value="${package.filename}"/> <property name="package.filename" value="${package.filename}"/>
<property name="testing.testarea" value="/tmp/testarea"/> <property name="testing.testarea" value="/tmp/testarea"/>
<property name="com.vaadin.testbench.tester.host" value="${com.vaadin.testbench.tester.host}"/> <property name="com.vaadin.testbench.tester.host" value="${com.vaadin.testbench.tester.host}"/>
<property name="com.vaadin.testbench.deployment.url" value="${com.vaadin.testbench.deployment.url}"/> <property name="com.vaadin.testbench.deployment.url" value="${com.vaadin.testbench.deployment.url}"/>
<property name="com.vaadin.testbench.lib.dir" value="${com.vaadin.testbench.lib.dir}"/> <property name="com.vaadin.testbench.lib.dir" value="${com.vaadin.testbench.lib.dir}"/>
<property name="com.vaadin.testbench.debug" value="${com.vaadin.testbench.debug}"/>
<property name="com.vaadin.testbench.screenshot.block.error" value="${com.vaadin.testbench.screenshot.block.error}"/>
</ant> </ant>
</target> </target>



+ 33
- 7
src/com/vaadin/terminal/gwt/client/ApplicationConfiguration.java ファイルの表示

} }
} }


deferredWidgetLoadLoop.scheduleRepeating(100);
} }


/** /**
runningApplications.add(a); runningApplications.add(a);
return true; return true;
} else { } else {
deferredWidgetLoader = new DeferredWidgetLoader();
return false; return false;
} }
} }
cmd.execute(); cmd.execute();
} }
callbacks.clear(); callbacks.clear();
} else if(widgetsLoading == 0 && deferredWidgetLoader != null) {
deferredWidgetLoader.trigger();
} }


} }
/* /*
* This loop loads widget implementation that should be loaded deferred. * This loop loads widget implementation that should be loaded deferred.
*/ */
private static final Timer deferredWidgetLoadLoop = new Timer() {
static class DeferredWidgetLoader extends Timer {
private static final int FREE_LIMIT = 4; private static final int FREE_LIMIT = 4;
private static final int FREE_CHECK_TIMEOUT = 100;


int communicationFree = 0; int communicationFree = 0;
int nextWidgetIndex = 0; int nextWidgetIndex = 0;
private boolean pending;
public DeferredWidgetLoader() {
schedule(5000);
}

public void trigger() {
if(!pending) {
schedule(FREE_CHECK_TIMEOUT);
}
}
@Override
public void schedule(int delayMillis) {
super.schedule(delayMillis);
pending = true;
}


@Override @Override
public void run() { public void run() {
pending = false;
if (!isBusy()) { if (!isBusy()) {
Class<? extends Paintable> nextType = getNextType(); Class<? extends Paintable> nextType = getNextType();
if (nextType == null) { if (nextType == null) {
// ensured that all widgets are loaded // ensured that all widgets are loaded
cancel();
deferredWidgetLoader = null;
} else { } else {
communicationFree = 0;
widgetSet.loadImplementation(nextType); widgetSet.loadImplementation(nextType);
} }
} else {
schedule(FREE_CHECK_TIMEOUT);
} }
} }


private boolean isBusy() { private boolean isBusy() {
if (widgetsLoading > 0) { if (widgetsLoading > 0) {
communicationFree = 0; communicationFree = 0;
return false;
return true;
} }
for (ApplicationConnection app : runningApplications) { for (ApplicationConnection app : runningApplications) {
if (app.hasActiveRequest()) { if (app.hasActiveRequest()) {
// if an UIDL request or widget loading is active, mark as // if an UIDL request or widget loading is active, mark as
// busy // busy
communicationFree = 0; communicationFree = 0;
return false;
return true;
} }
} }
communicationFree++; communicationFree++;
return communicationFree < FREE_LIMIT; return communicationFree < FREE_LIMIT;
} }
};

}
private static DeferredWidgetLoader deferredWidgetLoader;
public void onModuleLoad() { public void onModuleLoad() {


// Enable IE6 Background image caching // Enable IE6 Background image caching

+ 1
- 1
src/com/vaadin/terminal/gwt/client/CSSRule.java ファイルの表示

var j = theRules.length; var j = theRules.length;
for(var i=0; i<j; i++) { for(var i=0; i<j; i++) {
var r = theRules[i]; var r = theRules[i];
if(r.type == 1 || sheet.imports) {
if(r.type == 1 || sheet.imports) {
var selectors = r.selectorText.toLowerCase().split(","); var selectors = r.selectorText.toLowerCase().split(",");
var n = selectors.length; var n = selectors.length;
for(var m=0; m<n; m++) { for(var m=0; m<n; m++) {

+ 2
- 6
src/com/vaadin/terminal/gwt/client/VDebugConsole.java ファイルの表示

* This implementation can be overridden with GWT deferred binding. * This implementation can be overridden with GWT deferred binding.
* *
*/ */
public final class VDebugConsole extends VOverlay implements Console {
public class VDebugConsole extends VOverlay implements Console {


private static final String POS_COOKIE_NAME = "VDebugConsolePos"; private static final String POS_COOKIE_NAME = "VDebugConsolePos";




protected void remoteLog(String msg) { protected void remoteLog(String msg) {
msgQueue.add(msg); msgQueue.add(msg);
if (msg.length() > 4) {
doSend.execute();
} else {
sendToRemoteLog.trigger();
}
sendToRemoteLog.trigger();
} }


/** /**

+ 12
- 0
src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java ファイルの表示



enabled = !uidl.hasAttribute("disabled"); enabled = !uidl.hasAttribute("disabled");


if (BrowserInfo.get().isIE8() && !enabled) {
/*
* The disabled shim will not cover the table body if it is
* relative in IE8. See #7324
*/
scrollBodyPanel.getElement().getStyle()
.setPosition(Position.STATIC);
} else if (BrowserInfo.get().isIE8()) {
scrollBodyPanel.getElement().getStyle()
.setPosition(Position.RELATIVE);
}

this.client = client; this.client = client;
paintableId = uidl.getStringAttribute("id"); paintableId = uidl.getStringAttribute("id");
immediate = uidl.getBooleanAttribute("immediate"); immediate = uidl.getBooleanAttribute("immediate");

+ 21
- 3
src/com/vaadin/terminal/gwt/client/ui/VTree.java ファイルの表示

* Sends the selection to the server * Sends the selection to the server
*/ */
private void sendSelectionToServer() { private void sendSelectionToServer() {
client.updateVariable(paintableId, "selected", selectedIds
.toArray(new String[selectedIds.size()]), immediate);
selectionHasChanged = false;
Command command = new Command() {
public void execute() {
client.updateVariable(paintableId, "selected",
selectedIds.toArray(new String[selectedIds.size()]),
immediate);
selectionHasChanged = false;
}
};

/*
* Delaying the sending of the selection in webkit to ensure the
* selection is always sent when the tree has focus and after click
* events have been processed. This is due to the focusing
* implementation in FocusImplSafari which uses timeouts when focusing
* and blurring.
*/
if (BrowserInfo.get().isWebkit()) {
Scheduler.get().scheduleDeferred(command);
} else {
command.execute();
}
} }


/** /**

+ 8
- 0
src/com/vaadin/terminal/gwt/widgetsetutils/WidgetMapGenerator.java ファイルの表示

import java.util.Collection; import java.util.Collection;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.TreeSet; import java.util.TreeSet;
boolean first = true; boolean first = true;


ArrayList<Class<? extends Paintable>> lazyLoadedWidgets = new ArrayList<Class<? extends Paintable>>(); ArrayList<Class<? extends Paintable>> lazyLoadedWidgets = new ArrayList<Class<? extends Paintable>>();
HashSet<Class<? extends com.vaadin.terminal.gwt.client.Paintable>> widgetsWithInstantiator = new HashSet<Class<? extends com.vaadin.terminal.gwt.client.Paintable>>();
for (Class<? extends Paintable> class1 : paintablesHavingWidgetAnnotation) { for (Class<? extends Paintable> class1 : paintablesHavingWidgetAnnotation) {
ClientWidget annotation = class1.getAnnotation(ClientWidget.class); ClientWidget annotation = class1.getAnnotation(ClientWidget.class);
Class<? extends com.vaadin.terminal.gwt.client.Paintable> clientClass = annotation Class<? extends com.vaadin.terminal.gwt.client.Paintable> clientClass = annotation
.value(); .value();
if(widgetsWithInstantiator.contains(clientClass)) {
continue;
}
if (clientClass == VView.class) { if (clientClass == VView.class) {
// VView's are not instantiated by widgetset // VView's are not instantiated by widgetset
continue; continue;
sourceWriter.print(");"); sourceWriter.print(");");
} }
sourceWriter.print("}"); sourceWriter.print("}");
widgetsWithInstantiator.add(clientClass);
} }


sourceWriter.println("}"); sourceWriter.println("}");

+ 3
- 45
src/com/vaadin/ui/AbstractTextField.java ファイルの表示

/*
/*
@ITMillApache2LicenseForJavaFiles@ @ITMillApache2LicenseForJavaFiles@
*/ */


throw new IllegalStateException( throw new IllegalStateException(
"Null values are not allowed if the null-representation is null"); "Null values are not allowed if the null-representation is null");
} }

if (requestRepaintInTextChangeEvent && !valueChangeInTextChangeEvent) {
/*
* If the repaint occurred in a text change event then we do not
* want to send back the old value since it will just overwrite the
* typed value so we send the last known value instead which is
* updated by the text change event.
*/
target.addVariable(this, "text", lastKnownTextContent);
} else {
target.addVariable(this, "text", value);
}
requestRepaintInTextChangeEvent = false;
valueChangeInTextChangeEvent = false;
target.addVariable(this, "text", value);


if (selectionPosition != -1) { if (selectionPosition != -1) {
target.addAttribute("selpos", selectionPosition); target.addAttribute("selpos", selectionPosition);
} }
} }


/**
* Flag for monitoring if a repaint gets requested in a text change event
*/
private boolean requestRepaintInTextChangeEvent = false;

@Override
public void requestRepaint() {
if (textChangeEventPending) {
/*
* Textchange event listener triggered this repaint
*/
requestRepaintInTextChangeEvent = true;
}
super.requestRepaint();
}

@Override @Override
public void changeVariables(Object source, Map<String, Object> variables) { public void changeVariables(Object source, Map<String, Object> variables) {
changingVariables = true; changingVariables = true;


private void firePendingTextChangeEvent() { private void firePendingTextChangeEvent() {
if (textChangeEventPending) { if (textChangeEventPending) {
fireEvent(new TextChangeEventImpl(this));
textChangeEventPending = false; textChangeEventPending = false;
fireEvent(new TextChangeEventImpl(this));
} }
} }


/**
* Flag for monitoring if the value got changed in a TextChangeEvent
* listener
*/
protected boolean valueChangeInTextChangeEvent = false;

@Override @Override
protected void setInternalValue(Object newValue) { protected void setInternalValue(Object newValue) {
if (textChangeEventPending) {
/*
* Value changed in a TextChangeEvent listener
*/
valueChangeInTextChangeEvent = true;
}

if (changingVariables && !textChangeEventPending) { if (changingVariables && !textChangeEventPending) {
/* /*
* Fire a "simulated" text change event before value change event if * Fire a "simulated" text change event before value change event if

+ 1
- 0
tests/integration_tests.xml ファイルの表示

<property name="browsers" value="${test_browsers}" /> <property name="browsers" value="${test_browsers}" />
<property name="testfiles" value="${testfiles}" /> <property name="testfiles" value="${testfiles}" />
<property name="test-output-dir" value="../build/integration-test-output" /> <property name="test-output-dir" value="../build/integration-test-output" />
<property name="retries" value="0" />
<fileset dir="." includes="test.xml" /> <fileset dir="." includes="test.xml" />
</subant> </subant>

+ 32
- 0
tests/src/com/vaadin/tests/components/formlayout/TableInFormLayoutCausesScrolling.html ファイルの表示

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="" />
<title>New Test</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">New Test</td></tr>
</thead><tbody>
<tr>
<td>open</td>
<td>/run/com.vaadin.tests.components.formlayout.TableInFormLayoutCausesScrolling?restartApplication</td>
<td></td>
</tr>
<tr>
<td>mouseClick</td>
<td>vaadin=runcomvaadintestscomponentsformlayoutTableInFormLayoutCausesScrolling::/VFormLayout[0]/VFormLayout$VFormLayoutTable[0]/VScrollTable[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[2]/domChild[0]/domChild[0]</td>
<td>12,13</td>
</tr>
<tr>
<td>screenCapture</td>
<td></td>
<td>should-be-scrolled-up</td>
</tr>

</tbody></table>
</body>
</html>

+ 45
- 0
tests/src/com/vaadin/tests/components/formlayout/TableInFormLayoutCausesScrolling.java ファイルの表示

package com.vaadin.tests.components.formlayout;
import com.vaadin.tests.components.AbstractTestCase;
import com.vaadin.ui.FormLayout;
import com.vaadin.ui.Table;
import com.vaadin.ui.TextField;
import com.vaadin.ui.Window;
public class TableInFormLayoutCausesScrolling extends AbstractTestCase {
@Override
public void init() {
// Window Initialization.
final Window window = new Window("Main Window");
setMainWindow(window);
// FormLayout creation
final FormLayout fl = new FormLayout();
window.setContent(fl);
// Add 20 TextField
for (int i = 20; i-- > 0;) {
fl.addComponent(new TextField());
}
// Add 1 selectable table with some items
final Table table = new Table();
table.setSelectable(true);
table.addContainerProperty("item", String.class, "");
for (int i = 50; i-- > 0;) {
table.addItem(new String[] { "item" + i }, i);
}
window.addComponent(table);
}
@Override
protected String getDescription() {
return "Clicking in the Table should not cause the page to scroll";
}
@Override
protected Integer getTicketNumber() {
return 7309;
}
}

+ 36
- 0
tests/src/com/vaadin/tests/components/orderedlayout/VerticalLayoutWidthCalculation.html ファイルの表示

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="http://artur.virtuallypreinstalled.com/" />
<title>New Test</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">New Test</td></tr>
</thead><tbody>
<tr>
<td>open</td>
<td>/run/com.vaadin.tests.components.orderedlayout.VerticalLayoutWidthCalculation?restartApplication</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>vaadin=runcomvaadintestscomponentsorderedlayoutVerticalLayoutWidthCalculation::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/ChildComponentContainer[1]/VButton[0]/domChild[0]/domChild[0]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>vaadin=runcomvaadintestscomponentsorderedlayoutVerticalLayoutWidthCalculation::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/ChildComponentContainer[1]/VButton[0]/domChild[0]/domChild[0]</td>
<td></td>
</tr>
<tr>
<td>screenCapture</td>
<td></td>
<td>window-sized-to-one-textfield</td>
</tr>
</tbody></table>
</body>
</html>

+ 63
- 0
tests/src/com/vaadin/tests/components/orderedlayout/VerticalLayoutWidthCalculation.java ファイルの表示

package com.vaadin.tests.components.orderedlayout;

import com.vaadin.tests.components.AbstractTestCase;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;

public class VerticalLayoutWidthCalculation extends AbstractTestCase {
@Override
public void init() {
final Window mainWindow = new Window("Vaadintest Application");
mainWindow.addWindow(createSubWindow());
setMainWindow(mainWindow);

}

private Window createSubWindow() {
HorizontalLayout hl = new HorizontalLayout();

VerticalLayout vlTF1 = new VerticalLayout();
vlTF1.setSizeUndefined();
final TextField tf1 = new TextField("Text1");
tf1.setSizeUndefined();
vlTF1.addComponent(tf1);
hl.addComponent(vlTF1);

VerticalLayout vlTF2 = new VerticalLayout();
vlTF2.setSizeUndefined();
final TextField tf2 = new TextField("Text2");
tf2.setVisible(false);
tf2.setSizeUndefined();
vlTF2.addComponent(tf2);
hl.addComponent(vlTF2);

Window wnd = new Window("Test");
wnd.getContent().setSizeUndefined();
wnd.addComponent(hl);
Button btn = new Button("Show/hide");
btn.addListener(new Button.ClickListener() {

public void buttonClick(ClickEvent event) {
tf2.setVisible(!tf2.isVisible());
}
});
wnd.addComponent(btn);

return wnd;
}

@Override
protected String getDescription() {
return "The second TextField is initially invisible. Make it visible and then hide it again. You should end up with the same result as initially.";
}

@Override
protected Integer getTicketNumber() {
return 7260;
}

}

+ 12
- 29
tests/test.xml ファイルの表示

<!-- Configuration --> <!-- Configuration -->
<!-- ================================================================== --> <!-- ================================================================== -->
<!-- Browsers to use for testing --> <!-- Browsers to use for testing -->
<property name="browsers-windows" value="winxp-ie6,winxp-ie7,winxp-ie8,win7-ie9,winxp-firefox36,winxp-firefox4,winxp-safari4,winxp-safari5,winxp-googlechrome-stable,winxp-opera1060,winxp-opera11" />
<property name="browsers-windows" value="winxp-ie6,winxp-ie7,winxp-ie8,win7-ie9,winxp-firefox36,winxp-firefox4,winxp-firefox5,winxp-safari4,winxp-safari5,winxp-googlechrome-stable,winxp-opera1060,winxp-opera11" />
<property name="browsers-linux" value="linux-firefox3,linux-opera10,linux-googlechrome8" /> <property name="browsers-linux" value="linux-firefox3,linux-opera10,linux-googlechrome8" />
<property name="browsers-mac" value="osx-firefox3,osx-opera10,osx-googlechrome8,osx-safari4,osx-safari5" /> <property name="browsers-mac" value="osx-firefox3,osx-opera10,osx-googlechrome8,osx-safari4,osx-safari5" />


<property name="browsers" value="${browsers-windows}" /> <property name="browsers" value="${browsers-windows}" />
<!-- Number of times to retry a test if it fails -->
<property name="retries" value="2" />


<!-- Screen shot base directory --> <!-- Screen shot base directory -->
<fail unless="com.vaadin.testbench.screenshot.directory" message="The 'com.vaadin.testbench.screenshot.directory' property must be defined." /> <fail unless="com.vaadin.testbench.screenshot.directory" message="The 'com.vaadin.testbench.screenshot.directory' property must be defined." />
<!-- Host running Testbench Hub --> <!-- Host running Testbench Hub -->
<property name="com.vaadin.testbench.tester.host" value="testbench-hub.intra.itmill.com" /> <property name="com.vaadin.testbench.tester.host" value="testbench-hub.intra.itmill.com" />


<property name="com.vaadin.testbench.screenshot.block.error" value="0.025"/>
<property name="com.vaadin.testbench.debug" value="false"/>
<!-- Temporary output directory, created and removed by this script --> <!-- Temporary output directory, created and removed by this script -->
<!-- <property name="test-output-dir" value="../build/test-output" /> --> <!-- <property name="test-output-dir" value="../build/test-output" /> -->
<fail unless="test-output-dir" message="The 'test-output-dir' property must be defined." /> <fail unless="test-output-dir" message="The 'test-output-dir' property must be defined." />
<exclude name="tests/integration-testscripts/**" /> <exclude name="tests/integration-testscripts/**" />
</fileset> </fileset>


<!-- fileset containing tests to retry -->
<fileset dir=".." id="html-retry-files-ie6">
<include name="tests/**/SubWindows**.html" />
</fileset>

<!-- This target converts HTML tests files to java junit tests. One test file for each browser is created. --> <!-- This target converts HTML tests files to java junit tests. One test file for each browser is created. -->
<target name="create-tests" depends="remove-temp-testclasses" if="server.start.succeeded"> <target name="create-tests" depends="remove-temp-testclasses" if="server.start.succeeded">
<pathconvert pathsep=" " property="testfiles" refid="html-test-files" /> <pathconvert pathsep=" " property="testfiles" refid="html-test-files" />


<java classname="com.vaadin.testbench.util.TestConverter" classpathref="classpath" fork="true"> <java classname="com.vaadin.testbench.util.TestConverter" classpathref="classpath" fork="true">
<sysproperty key="com.vaadin.testbench.test.retries" value="${retries}" />
<jvmarg value="-Duser.language=en"/> <jvmarg value="-Duser.language=en"/>
<jvmarg value="-Duser.country=US"/> <jvmarg value="-Duser.country=US"/>
<arg value="${test-output-dir}" /> <arg value="${test-output-dir}" />
</target> </target>




<target name="create-retry-tests" if="create.retry.tests">
<antcall target="convert-retry-test">
<param name="browser" value="winxp-ie6" />
<param name="testfile-name" value="html-retry-files-ie6" />
</antcall>
</target>

<!-- Target converts test files so that the whole test can be re run 'retries' times -->
<target name="convert-retry-test" if="retries">
<pathconvert pathsep=" " property="testfile" refid="${testfile-name}" />

<java classname="com.vaadin.testbench.util.TestConverter" classpathref="classpath">
<sysproperty key="com.vaadin.testbench.test.retries" value="${retries}" />
<jvmarg value="-Duser.language=en"/>
<jvmarg value="-Duser.country=US"/>
<arg value="${test-output-dir}" />
<arg value="${browser}" />
<arg line="${testfile}" />
</java>

</target>

<!-- This target complies the generated java junit tests. --> <!-- This target complies the generated java junit tests. -->
<target name="compile-tests" depends="create-tests, create-retry-tests">
<target name="compile-tests" depends="create-tests">
<mkdir dir="${class-dir}" /> <mkdir dir="${class-dir}" />
<javac srcdir="${test-output-dir}" destdir="${class-dir}" debug="on" fork="yes" failonerror="false" encoding="UTF8"> <javac srcdir="${test-output-dir}" destdir="${class-dir}" debug="on" fork="yes" failonerror="false" encoding="UTF8">
<classpath> <classpath>
<jvmarg value="-Dcom.vaadin.testbench.screenshot.directory=${com.vaadin.testbench.screenshot.directory}" /> <jvmarg value="-Dcom.vaadin.testbench.screenshot.directory=${com.vaadin.testbench.screenshot.directory}" />
<!-- Resolution for screenshots --> <!-- Resolution for screenshots -->
<jvmarg value="-Dcom.vaadin.testbench.screenshot.resolution=${com.vaadin.testbench.screenshot.resolution}" /> <jvmarg value="-Dcom.vaadin.testbench.screenshot.resolution=${com.vaadin.testbench.screenshot.resolution}" />
<jvmarg value="-Dcom.vaadin.testbench.debug=${com.vaadin.testbench.debug}" />
<jvmarg value="-Dcom.vaadin.testbench.screenshot.block.error=${com.vaadin.testbench.screenshot.block.error}" />



<jvmarg value="-Djava.awt.headless=true" /> <jvmarg value="-Djava.awt.headless=true" />



読み込み中…
キャンセル
保存