def test_report_order(results, expected_order): """ Test in which order the results will be reported. It gets a list of reports from the file checkers and verifies that the result will be ordered independent from the original report. """ def count_side_effect(name, sorted_results): """Side effect for the result handler to tell all are reported.""" return len(sorted_results) # To simplify the parameters (and prevent copy & pasting) reuse report # tuples to create the expected result lists from the indexes expected_results = [results[index] for index in expected_order] file_checker = mock.Mock(spec=['results', 'display_name']) file_checker.results = results file_checker.display_name = 'placeholder' style_guide = mock.Mock(spec=['options']) style_guide.processing_file = mock.MagicMock() # Create a placeholder manager without arguments or plugins # Just add one custom file checker which just provides the results manager = checker.Manager(style_guide, [], []) manager.checkers = [file_checker] # _handle_results is the first place which gets the sorted result # Should something non-private be mocked instead? handler = mock.Mock() handler.side_effect = count_side_effect manager._handle_results = handler assert manager.report() == (len(results), len(results)) handler.assert_called_once_with('placeholder', expected_results)