@issue
Feature: Issue #84: behave.runner behave does not reliably detected failed test runs

  . Behave does currently not reliably detected failed test runs and
  . therefore returns not sys.exit(1) at end of main().
  .
  . 1. behave.runner:Runner.run_with_paths() returns failed==True
  .    if last feature was successful and test runner does not stop
  .    after first failing feature.
  .
  . 2. Issue #64: Same problem in behave.model.Feature.run() with scenarios

  Scenario: Test Setup
    Given a new working directory
    And   a file named "features/passing.feature" with:
        """
        Feature: Passing
          Scenario:
            Given a step passes
            When  a step passes
            Then  a step passes
        """
    And   a file named "features/failing.feature" with:
        """
        Feature: Failing
          Scenario:
            Given a step fails
            When  a step fails
            Then  a step fails
        """
    And   a file named "features/steps/steps.py" with:
        """
        from behave import step

        @step(u'a step passes')
        def step_passes(context):
            pass

        @step(u'a step fails')
        def step_fails(context):
            assert False, "step: a step fails"
        """

  Scenario: First feature fails, second feature passes
    When I run "behave -f plain features/failing.feature features/passing.feature"
    Then it should fail with:
        """
        1 feature passed, 1 failed, 0 skipped
        1 scenario passed, 1 failed, 0 skipped
        3 steps passed, 1 failed, 2 skipped, 0 undefined
        """

  Scenario: First feature passes, second feature fails
    When I run "behave -f plain features/passing.feature features/failing.feature"
    Then it should fail with:
        """
        1 feature passed, 1 failed, 0 skipped
        1 scenario passed, 1 failed, 0 skipped
        3 steps passed, 1 failed, 2 skipped, 0 undefined
        """

  Scenario: First feature passes, second fails, last passes
    When I run "behave -f plain features/passing.feature features/failing.feature features/passing.feature"
    Then it should fail with:
        """
        2 features passed, 1 failed, 0 skipped
        2 scenarios passed, 1 failed, 0 skipped
        6 steps passed, 1 failed, 2 skipped, 0 undefined
        """