[OptionsResolver] optimized validation
[OptionsResolver] added failing test cases to demonstrate two bugs
[OptionsResolver] fixed bugs concerning required options
[OptionsResolver] small optimization in Options class
[OptionsResolver] CS fix in LazyOption
[Process] Add failing test for callbacks on windows
[Process] Refactor the windows handling so it is always executed

When regular pipes are closed, the file handlers fallback on windows
should still be processed until they are empty
Force root package version in travis builds
merged branch Seldaek/travisfix (PR #4401)

Commits
-------

f2d1695 Force root package version in travis builds

Discussion
----------

Force root package version in travis builds

This hopefully fixes the composer builds. Let's see what travisbot thinks.

---------------------------------------------------------------------------

by travisbot at 2012-05-24T18:45:45Z

This pull request [passes](http://travis-ci.org/symfony/symfony/builds/1425314) (merged f2d16950 into e2c36c54).

---------------------------------------------------------------------------

by Seldaek at 2012-05-24T18:47:09Z

Thank you, @travisbot.

---------------------------------------------------------------------------

by beberlei at 2012-05-24T19:02:33Z

Whats that flag for?

---------------------------------------------------------------------------

by Seldaek at 2012-05-24T19:11:05Z

It just says that the current version of the root package is dev-master, because otherwise since the composer.json file has no version, we can't know, so it tries to guess from git info if it finds any, but in the case of a pull request, the version is not dev-master, so the branch-alias doesn't trigger, so it ends up having a version of symfony/symfony installed that's 1.0.0 - but some of the dependencies require another version, so it sort of conflicts with itself.
merged branch Seldaek/process-win-fix (PR #4400)

Commits
-------

bcf8cf9 [Process] Refactor the windows handling so it is always executed
0c5aa8b [Process] Add failing test for callbacks on windows

Discussion
----------

[Process] Windows callback handling fix

---------------------------------------------------------------------------

by travisbot at 2012-05-24T18:10:56Z

This pull request [fails](http://travis-ci.org/symfony/symfony/builds/1424957) (merged bcf8cf91 into e2c36c54).
merged branch Tobion/optionsresolver-optim (PR #4388)

Commits
-------

bad4a1f [OptionsResolver] CS fix in LazyOption
a54ea1b [OptionsResolver] small optimization in Options class
104dcf2 [OptionsResolver] fixed bugs concerning required options
1bfcff4 [OptionsResolver] added failing test cases to demonstrate two bugs
37a3a29 [OptionsResolver] optimized validation

Discussion
----------

[OptionsResolver] fixed two bugs and applied optimization

The first commit optimizes the validation in OptionsResolver by removing several unneeded method calls (without changing anything semantically).

Then I recognized two bugs in the current code that I wrote failing test cases for in the second commit.
1. setAllowedValues wrongly validated missing options
2. required options with defaults were considered missing by `resolve` (contrary to the `isRequired` method)

The third commit fixes these bugs.

The forth commit applies a small optimization in Options and uses a static function call for a static function.

---------------------------------------------------------------------------

by travisbot at 2012-05-24T03:39:34Z

This pull request [fails](http://travis-ci.org/symfony/symfony/builds/1418785) (merged a54ea1b6 into b07fb3c4).

---------------------------------------------------------------------------

by travisbot at 2012-05-24T05:22:33Z

This pull request [fails](http://travis-ci.org/symfony/symfony/builds/1419232) (merged bad4a1f7 into b07fb3c4).

---------------------------------------------------------------------------

by bschussek at 2012-05-24T06:20:02Z

I just tested this on my machine, and static calls are a tiny bit faster here, although this is really irrelevant for practical use. Even though I dislike useless micro-optimizations like this, I'm ok with this PR in general.

---------------------------------------------------------------------------

by Tobion at 2012-05-24T13:23:11Z

I didn't say that's an optimization in the first place. (The optimization was the removal of a variable assignment)
I just changed it because in other PRs I've been told, static functions should be called in a static way.

---------------------------------------------------------------------------

by Tobion at 2012-05-24T23:36:13Z

Please merge before 4387
[OptionsResolver] Added method setFilters() for augmenting the final option values
[OptionsResolver] Added option type validation capabilities
[OptionsResolver] Relaxed tests to check that allowed values can also be passed as scalars
[Form] Changed getDefaultOptions() to setDefaultOptions(OptionsResolver $resolver) in FormTypeInterface
[Form] Options are now passed to buildView() and buildViewBottomUp()
[Form] Added FormBuilderInterface and FormViewInterface and cleaned up FormTypeInterface and FormTypeExtensionInterface
[OptionsResolver] Added OptionsResolverInterface
[OptionsResolver] Renamed recommended method to setDefaultOptions()
[Form] setDefaultOptions() is now coded against OptionsResolverInterface