Bug 508741 - Some ThemeAPITest#testThemeExtension* tests fail on some
platforms

TopologicalSort didn't preserved definition order for the extensions
with same id from same plugin.xml, because it used a custom, *random*
order of iteration offered by HashMap. Quote: "This class makes no
guarantees as to the order of the map; in particular, it does not
guarantee that the order will remain constant over time."

Depending on the order of map insertion and on the custom HashMap hash
algorithm implementation, the TopologicalSort produced different results
for same inputs on different environments, so that equal elements order
was changed by the sort algorithm and the result order for equal
elements was more or less random in different environments. This showed
up in the unstable test behavior of the ThemeAPITest, which relied on
the right (definition) order of contributions to the
"org.eclipse.ui.themes" extension point.

By using "Linked" versions of the Map and Set we make the code in
TopologicalSort stable across different environments because we preserve
the sort order for equal elements and so preserve the definition order
for contributions with equal keys coming from same plugin.xml.

See also
http://javaclipse.blogspot.de/2016/03/stable-tests-and-transition-to-java-8.html

Change-Id: Iabba91de64a8bb96da4589ff74cda0506e4fd886
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
1 file changed
tree: a4c11b794650d206f8e21cc3ce737acb4861b6fc
  1. bundles/
  2. examples/
  3. features/
  4. releng/
  5. tests/
  6. .gitignore
  7. CONTRIBUTING.md
  8. pom.xml
  9. README.md
README.md

Contributing to Eclipse Platform UI project

Thanks for your interest in this project.

Project description:

Platform UI provides the basic building blocks for user interfaces built with Eclipse. Some of these form the Eclipse Rich Client Platform (RCP) and can be used for arbitrary rich client applications, while others are specific to the Eclipse IDE. The Platform UI codebase is built on top of the Eclipse Standard Widget Toolkit (SWT), which is developed as an independent project.

Website: http://www.eclipse.org/platform/ui/

For more information, refer to the [Platform UI wiki page] 1.

How to contribute:

Contributions to Platform UI are most welcome. There are many ways to contribute, from entering high quality bug reports, to contributing code or documentation changes. For a complete guide, see the [Platform UI - How to contribute wiki page] 2 page on the team wiki.

How to build on the command line

You need Maven 3.3.1 installed. After this you can run the build via the following command:

mvn clean verify -Pbuild-individual-bundles

Developer resources:

Information regarding source code management, builds, coding standards, and more.

Contributor License Agreement:

Before your contribution can be accepted by the project, you need to create and electronically sign the Eclipse Foundation Contributor License Agreement (CLA).

Search for bugs:

This project uses Bugzilla to track ongoing development and issues.

Create a new bug:

Be sure to search for existing bugs before you create another one. Remember that contributions are always welcome!

Contact:

Contact the project developers via the project's “dev” list.

License

Eclipse Public License (EPL) v1.0