ceedling 0.13.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +18 -14
- data/README.md +6 -4
- data/assets/project_as_gem.yml +1 -1
- data/assets/rakefile_as_gem.rb +2 -0
- data/assets/rakefile_with_guts.rb +3 -1
- data/ceedling.gemspec +1 -0
- data/examples/blinky/rakefile.rb +2 -2
- data/examples/temp_sensor/rakefile.rb +1 -1
- data/examples/temp_sensor/src/TemperatureFilter.c +1 -2
- data/examples/temp_sensor/test/TestTemperatureCalculator.c +1 -1
- data/examples/temp_sensor/test/TestTemperatureFilter.c +12 -2
- data/lib/ceedling.rb +94 -22
- data/lib/{build_invoker_utils.rb → ceedling/build_invoker_utils.rb} +27 -27
- data/lib/{cacheinator.rb → ceedling/cacheinator.rb} +42 -42
- data/lib/{cacheinator_helper.rb → ceedling/cacheinator_helper.rb} +12 -12
- data/lib/{cmock_builder.rb → ceedling/cmock_builder.rb} +15 -15
- data/lib/{configurator.rb → ceedling/configurator.rb} +333 -329
- data/lib/{configurator_builder.rb → ceedling/configurator_builder.rb} +437 -437
- data/lib/{configurator_plugins.rb → ceedling/configurator_plugins.rb} +124 -124
- data/lib/{configurator_setup.rb → ceedling/configurator_setup.rb} +124 -124
- data/lib/{configurator_validator.rb → ceedling/configurator_validator.rb} +184 -184
- data/lib/{constants.rb → ceedling/constants.rb} +20 -17
- data/lib/{defaults.rb → ceedling/defaults.rb} +19 -18
- data/lib/{dependinator.rb → ceedling/dependinator.rb} +92 -92
- data/lib/{erb_wrapper.rb → ceedling/erb_wrapper.rb} +8 -8
- data/lib/{file_finder.rb → ceedling/file_finder.rb} +132 -132
- data/lib/{file_finder_helper.rb → ceedling/file_finder_helper.rb} +54 -54
- data/lib/{file_path_utils.rb → ceedling/file_path_utils.rb} +189 -189
- data/lib/{file_system_utils.rb → ceedling/file_system_utils.rb} +69 -69
- data/lib/{file_system_wrapper.rb → ceedling/file_system_wrapper.rb} +9 -9
- data/lib/{file_wrapper.rb → ceedling/file_wrapper.rb} +79 -79
- data/lib/{flaginator.rb → ceedling/flaginator.rb} +54 -54
- data/lib/{generator.rb → ceedling/generator.rb} +164 -164
- data/lib/{generator_helper.rb → ceedling/generator_helper.rb} +40 -40
- data/lib/{generator_test_results.rb → ceedling/generator_test_results.rb} +86 -89
- data/lib/{generator_test_results_sanity_checker.rb → ceedling/generator_test_results_sanity_checker.rb} +64 -62
- data/lib/{generator_test_runner.rb → ceedling/generator_test_runner.rb} +63 -63
- data/lib/{loginator.rb → ceedling/loginator.rb} +31 -31
- data/lib/{makefile.rb → ceedling/makefile.rb} +0 -0
- data/lib/{objects.yml → ceedling/objects.yml} +0 -0
- data/lib/{par_map.rb → ceedling/par_map.rb} +0 -0
- data/lib/{plugin.rb → ceedling/plugin.rb} +80 -80
- data/lib/{plugin_builder.rb → ceedling/plugin_builder.rb} +52 -52
- data/lib/{plugin_manager.rb → ceedling/plugin_manager.rb} +107 -107
- data/lib/{plugin_manager_helper.rb → ceedling/plugin_manager_helper.rb} +19 -19
- data/lib/{plugin_reportinator.rb → ceedling/plugin_reportinator.rb} +2 -2
- data/lib/{plugin_reportinator_helper.rb → ceedling/plugin_reportinator_helper.rb} +1 -1
- data/lib/{preprocessinator.rb → ceedling/preprocessinator.rb} +43 -43
- data/lib/{preprocessinator_extractor.rb → ceedling/preprocessinator_extractor.rb} +30 -30
- data/lib/{preprocessinator_file_handler.rb → ceedling/preprocessinator_file_handler.rb} +21 -21
- data/lib/{preprocessinator_helper.rb → ceedling/preprocessinator_helper.rb} +46 -46
- data/lib/ceedling/preprocessinator_includes_handler.rb +82 -0
- data/lib/{project_config_manager.rb → ceedling/project_config_manager.rb} +38 -38
- data/lib/{project_file_loader.rb → ceedling/project_file_loader.rb} +64 -64
- data/lib/{rake_utils.rb → ceedling/rake_utils.rb} +17 -17
- data/lib/{rake_wrapper.rb → ceedling/rake_wrapper.rb} +33 -33
- data/lib/{rakefile.rb → ceedling/rakefile.rb} +78 -74
- data/lib/{release_invoker.rb → ceedling/release_invoker.rb} +58 -58
- data/lib/{release_invoker_helper.rb → ceedling/release_invoker_helper.rb} +16 -16
- data/lib/{reportinator.rb → ceedling/reportinator.rb} +9 -9
- data/lib/{rules_cmock.rake → ceedling/rules_cmock.rake} +9 -9
- data/lib/{rules_preprocess.rake → ceedling/rules_preprocess.rake} +26 -26
- data/lib/{rules_release.rake → ceedling/rules_release.rake} +79 -79
- data/lib/{rules_release_deep_dependencies.rake → ceedling/rules_release_deep_dependencies.rake} +15 -15
- data/lib/{rules_tests.rake → ceedling/rules_tests.rake} +59 -59
- data/lib/{rules_tests_deep_dependencies.rake → ceedling/rules_tests_deep_dependencies.rake} +15 -15
- data/lib/{setupinator.rb → ceedling/setupinator.rb} +51 -51
- data/lib/{stream_wrapper.rb → ceedling/stream_wrapper.rb} +20 -20
- data/lib/{streaminator.rb → ceedling/streaminator.rb} +40 -41
- data/lib/{streaminator_helper.rb → ceedling/streaminator_helper.rb} +15 -15
- data/lib/{system_utils.rb → ceedling/system_utils.rb} +0 -0
- data/lib/{system_wrapper.rb → ceedling/system_wrapper.rb} +76 -76
- data/lib/{target_loader.rb → ceedling/target_loader.rb} +0 -0
- data/lib/{task_invoker.rb → ceedling/task_invoker.rb} +89 -89
- data/lib/{tasks_base.rake → ceedling/tasks_base.rake} +104 -104
- data/lib/{tasks_filesystem.rake → ceedling/tasks_filesystem.rake} +91 -91
- data/lib/{tasks_release.rake → ceedling/tasks_release.rake} +28 -28
- data/lib/{tasks_release_deep_dependencies.rake → ceedling/tasks_release_deep_dependencies.rake} +9 -9
- data/lib/{tasks_tests.rake → ceedling/tasks_tests.rake} +52 -52
- data/lib/{tasks_tests_deep_dependencies.rake → ceedling/tasks_tests_deep_dependencies.rake} +9 -9
- data/lib/{tasks_vendor.rake → ceedling/tasks_vendor.rake} +36 -36
- data/lib/{test_includes_extractor.rb → ceedling/test_includes_extractor.rb} +81 -81
- data/lib/{test_invoker.rb → ceedling/test_invoker.rb} +97 -97
- data/lib/{test_invoker_helper.rb → ceedling/test_invoker_helper.rb} +28 -28
- data/lib/{tool_executor.rb → ceedling/tool_executor.rb} +215 -212
- data/lib/{tool_executor_helper.rb → ceedling/tool_executor_helper.rb} +115 -115
- data/lib/{verbosinator.rb → ceedling/verbosinator.rb} +10 -10
- data/lib/ceedling/version.rb +1 -1
- data/lib/{yaml_wrapper.rb → ceedling/yaml_wrapper.rb} +17 -16
- data/license.txt +31 -0
- data/plugins/bullseye/lib/bullseye.rb +2 -2
- data/plugins/gcov/gcov.rb +2 -2
- data/plugins/module_generator/lib/module_generator.rb +4 -3
- data/plugins/stdout_ide_tests_report/lib/stdout_ide_tests_report.rb +8 -8
- data/plugins/stdout_pretty_tests_report/lib/stdout_pretty_tests_report.rb +3 -3
- data/plugins/teamcity_tests_report/config/teamcity_tests_report.yml +4 -0
- data/plugins/teamcity_tests_report/lib/teamcity_tests_report.rb +57 -0
- data/plugins/xml_tests_report/xml_tests_report.rb +4 -4
- data/release/version.info +1 -1
- data/spec/ceedling_spec.rb +154 -0
- data/spec/par_map_spec.rb +1 -1
- data/spec/preprocessinator_extractor_spec.rb +26 -27
- data/spec/preprocessinator_includes_handler_spec.rb +175 -0
- data/spec/spec_helper.rb +8 -27
- data/test_graveyard/integration/paths_test.rb +2 -2
- data/test_graveyard/unit/busted/configurator_builder_test.rb +2 -2
- data/test_graveyard/unit/busted/configurator_test.rb +1 -1
- data/test_graveyard/unit/busted/configurator_validator_test.rb +1 -1
- data/test_graveyard/unit/busted/dependinator_test.rb +1 -1
- data/test_graveyard/unit/busted/file_finder_helper_test.rb +1 -1
- data/test_graveyard/unit/busted/file_finder_test.rb +1 -1
- data/test_graveyard/unit/busted/file_path_utils_test.rb +1 -1
- data/test_graveyard/unit/busted/file_system_utils_test.rb +1 -1
- data/test_graveyard/unit/busted/generator_test.rb +1 -1
- data/test_graveyard/unit/busted/generator_test_results_test.rb +1 -1
- data/test_graveyard/unit/busted/generator_test_runner_test.rb +1 -1
- data/test_graveyard/unit/busted/preprocessinator_file_handler_test.rb +1 -1
- data/test_graveyard/unit/busted/preprocessinator_helper_test.rb +1 -1
- data/test_graveyard/unit/busted/preprocessinator_includes_handler_test.rb +1 -1
- data/test_graveyard/unit/busted/preprocessinator_test.rb +1 -1
- data/test_graveyard/unit/busted/project_file_loader_test.rb +1 -1
- data/test_graveyard/unit/busted/setupinator_test.rb +1 -1
- data/test_graveyard/unit/busted/streaminator_test.rb +2 -2
- data/test_graveyard/unit/busted/task_invoker_test.rb +1 -1
- data/test_graveyard/unit/busted/test_includes_extractor_test.rb +1 -1
- data/test_graveyard/unit/busted/test_invoker_helper_test.rb +1 -1
- data/test_graveyard/unit/busted/test_invoker_test.rb +1 -1
- data/test_graveyard/unit/busted/tool_executor_helper_test.rb +1 -1
- data/test_graveyard/unit/busted/tool_executor_test.rb +1 -1
- data/test_graveyard/unit/busted/verbosinator_test.rb +1 -1
- data/test_graveyard/unit/preprocessinator_extractor_test.rb +1 -1
- data/vendor/c_exception/Gemfile +4 -0
- data/vendor/c_exception/lib/CException.h +1 -1
- data/vendor/c_exception/test/TestException.c +25 -14
- data/vendor/c_exception/test/TestException_Runner.c +74 -57
- data/vendor/cmock/Gemfile +11 -0
- data/vendor/cmock/lib/cmock_generator.rb +13 -12
- data/vendor/cmock/lib/cmock_generator_plugin_ignore_arg.rb +44 -0
- data/vendor/cmock/lib/cmock_generator_plugin_return_thru_ptr.rb +74 -0
- data/vendor/cmock/lib/cmock_generator_utils.rb +67 -42
- data/vendor/cmock/src/cmock.c +20 -30
- data/vendor/cmock/src/cmock.h +1 -0
- data/vendor/cmock/src/cmock_internals.h +43 -0
- data/vendor/cmock/test/c/TestCMockC.c +79 -36
- data/vendor/cmock/test/c/TestCMockC_Runner.c +2 -0
- data/vendor/cmock/test/spec/cmock_file_writer_spec.rb +21 -1
- data/vendor/cmock/test/spec/cmock_generator_plugin_array_spec.rb +52 -0
- data/vendor/cmock/test/system/test_interactions/all_plugins_coexist.yml +2 -0
- data/vendor/cmock/test/system/test_interactions/return_thru_ptr_ignore_arg.yml +235 -0
- data/vendor/cmock/test/test_helper.rb +10 -5
- data/vendor/cmock/test/unit/cmock_generator_main_test.rb +38 -0
- data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_arg_test.rb +116 -0
- data/vendor/cmock/test/unit/cmock_generator_plugin_return_thru_ptr_test.rb +134 -0
- data/vendor/cmock/test/unit/cmock_generator_utils_test.rb +58 -33
- data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.odt +0 -0
- data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.pdf +0 -0
- data/vendor/cmock/vendor/c_exception/docs/license.txt +30 -0
- data/vendor/cmock/vendor/c_exception/docs/readme.txt +236 -0
- data/vendor/cmock/vendor/c_exception/lib/CException.c +39 -0
- data/vendor/cmock/vendor/c_exception/lib/CException.h +70 -0
- data/vendor/cmock/vendor/c_exception/makefile +24 -0
- data/vendor/cmock/vendor/c_exception/rakefile.rb +41 -0
- data/vendor/cmock/vendor/c_exception/release/build.info +2 -0
- data/vendor/cmock/vendor/c_exception/release/version.info +2 -0
- data/vendor/cmock/vendor/c_exception/test/CExceptionConfig.h +27 -0
- data/vendor/cmock/vendor/c_exception/test/TestException.c +291 -0
- data/vendor/cmock/vendor/c_exception/test/TestException_Runner.c +62 -0
- data/vendor/cmock/vendor/unity/auto/colour_prompt.rb +94 -0
- data/vendor/cmock/vendor/unity/auto/colour_reporter.rb +39 -0
- data/vendor/cmock/vendor/unity/auto/generate_config.yml +36 -0
- data/vendor/cmock/vendor/unity/auto/generate_module.rb +202 -0
- data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +313 -0
- data/vendor/cmock/vendor/unity/auto/test_file_filter.rb +23 -0
- data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +139 -0
- data/vendor/cmock/vendor/unity/docs/Unity Summary.odt +0 -0
- data/vendor/cmock/vendor/unity/docs/Unity Summary.pdf +0 -0
- data/vendor/cmock/vendor/unity/docs/Unity Summary.txt +217 -0
- data/vendor/cmock/vendor/unity/docs/license.txt +31 -0
- data/vendor/cmock/vendor/unity/examples/helper/UnityHelper.c +10 -0
- data/vendor/cmock/vendor/unity/examples/helper/UnityHelper.h +12 -0
- data/vendor/cmock/vendor/unity/examples/makefile +40 -0
- data/vendor/cmock/vendor/unity/examples/rakefile.rb +32 -0
- data/vendor/cmock/vendor/unity/examples/rakefile_helper.rb +256 -0
- data/vendor/cmock/vendor/unity/examples/readme.txt +18 -0
- data/vendor/cmock/vendor/unity/examples/src/ProductionCode.c +24 -0
- data/vendor/cmock/vendor/unity/examples/src/ProductionCode.h +3 -0
- data/vendor/cmock/vendor/unity/examples/src/ProductionCode2.c +9 -0
- data/vendor/cmock/vendor/unity/examples/src/ProductionCode2.h +2 -0
- data/vendor/cmock/vendor/unity/examples/test/TestProductionCode.c +62 -0
- data/vendor/cmock/vendor/unity/examples/test/TestProductionCode2.c +31 -0
- data/vendor/cmock/vendor/unity/examples/test/no_ruby/TestProductionCode2_Runner.c +46 -0
- data/vendor/cmock/vendor/unity/examples/test/no_ruby/TestProductionCode_Runner.c +50 -0
- data/vendor/{unity → cmock/vendor/unity}/extras/fixture/build/MakefileWorker.mk +0 -0
- data/vendor/{unity → cmock/vendor/unity}/extras/fixture/build/filterGcov.sh +0 -0
- data/vendor/cmock/vendor/unity/extras/fixture/rakefile.rb +37 -0
- data/vendor/cmock/vendor/unity/extras/fixture/rakefile_helper.rb +178 -0
- data/vendor/cmock/vendor/unity/extras/fixture/readme.txt +9 -0
- data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.c +381 -0
- data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.h +81 -0
- data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_internals.h +44 -0
- data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +16 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/main/AllTests.c +21 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/testunity_fixture.c +39 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_Test.c +321 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +40 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.c +56 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.h +17 -0
- data/vendor/cmock/vendor/unity/makefile +35 -0
- data/vendor/cmock/vendor/unity/rakefile.rb +48 -0
- data/vendor/cmock/vendor/unity/rakefile_helper.rb +240 -0
- data/vendor/cmock/vendor/unity/release/build.info +2 -0
- data/vendor/cmock/vendor/unity/release/version.info +2 -0
- data/vendor/cmock/vendor/unity/src/unity.c +979 -0
- data/vendor/cmock/vendor/unity/src/unity.h +232 -0
- data/vendor/cmock/vendor/unity/src/unity_internals.h +424 -0
- data/vendor/cmock/vendor/unity/targets/gcc.yml +43 -0
- data/vendor/cmock/vendor/unity/targets/gcc_64.yml +44 -0
- data/vendor/cmock/vendor/unity/targets/hitech_picc18.yml +101 -0
- data/vendor/cmock/vendor/unity/targets/iar_arm_v4.yml +89 -0
- data/vendor/cmock/vendor/unity/targets/iar_arm_v5.yml +79 -0
- data/vendor/cmock/vendor/unity/targets/iar_arm_v5_3.yml +79 -0
- data/vendor/cmock/vendor/unity/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -0
- data/vendor/cmock/vendor/unity/targets/iar_cortexm3_v5.yml +83 -0
- data/vendor/cmock/vendor/unity/targets/iar_msp430.yml +94 -0
- data/vendor/cmock/vendor/unity/targets/iar_sh2a_v6.yml +85 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_cmd.c +54 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_def.c +50 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_cmd.c +76 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_def.c +72 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new1.c +85 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new2.c +85 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_param.c +73 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run1.c +85 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run2.c +85 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_yaml.c +86 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_new1.c +60 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_new2.c +63 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_param.c +51 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_run1.c +60 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_run2.c +63 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_yaml.c +64 -0
- data/vendor/cmock/vendor/unity/test/test_generate_test_runner.rb +94 -0
- data/vendor/cmock/vendor/unity/test/testdata/mocksample.c +51 -0
- data/vendor/cmock/vendor/unity/test/testdata/sample.yml +9 -0
- data/vendor/cmock/vendor/unity/test/testdata/testsample.c +51 -0
- data/vendor/cmock/vendor/unity/test/testparameterized.c +101 -0
- data/vendor/cmock/vendor/unity/test/testunity.c +2024 -0
- data/vendor/unity/Gemfile +4 -0
- data/vendor/unity/auto/generate_test_runner.rb +6 -3
- data/vendor/unity/examples/makefile +2 -2
- data/vendor/unity/examples/rakefile.rb +13 -2
- data/vendor/unity/extras/fixture/rakefile.rb +1 -1
- data/vendor/unity/extras/fixture/rakefile_helper.rb +4 -3
- data/vendor/unity/extras/fixture/src/unity_fixture.c +15 -12
- data/vendor/unity/extras/fixture/src/unity_fixture.h +5 -5
- data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +1 -1
- data/vendor/unity/extras/fixture/test/unity_fixture_Test.c +6 -3
- data/vendor/unity/makefile +2 -2
- data/vendor/unity/src/unity.c +183 -16
- data/vendor/unity/src/unity.h +18 -5
- data/vendor/unity/src/unity_internals.h +57 -23
- data/vendor/unity/targets/gcc_64.yml +45 -0
- data/vendor/unity/test/testunity.c +436 -28
- metadata +200 -137
- data/ceedling-0.13.0.rc4.gem +0 -0
- data/ceedling.sublime-project +0 -8
- data/ceedling.sublime-workspace +0 -365
- data/lib/preprocessinator_includes_handler.rb +0 -55
- data/tags +0 -977
- data/vendor/cmock/vendor/hardmock/CHANGES +0 -78
- data/vendor/cmock/vendor/hardmock/LICENSE +0 -7
- data/vendor/cmock/vendor/hardmock/README +0 -70
- data/vendor/cmock/vendor/hardmock/Rakefile +0 -8
- data/vendor/cmock/vendor/hardmock/config/environment.rb +0 -12
- data/vendor/cmock/vendor/hardmock/lib/assert_error.rb +0 -23
- data/vendor/cmock/vendor/hardmock/lib/extend_test_unit.rb +0 -14
- data/vendor/cmock/vendor/hardmock/lib/hardmock.rb +0 -86
- data/vendor/cmock/vendor/hardmock/lib/hardmock/errors.rb +0 -22
- data/vendor/cmock/vendor/hardmock/lib/hardmock/expectation.rb +0 -229
- data/vendor/cmock/vendor/hardmock/lib/hardmock/expectation_builder.rb +0 -9
- data/vendor/cmock/vendor/hardmock/lib/hardmock/expector.rb +0 -26
- data/vendor/cmock/vendor/hardmock/lib/hardmock/method_cleanout.rb +0 -33
- data/vendor/cmock/vendor/hardmock/lib/hardmock/mock.rb +0 -180
- data/vendor/cmock/vendor/hardmock/lib/hardmock/mock_control.rb +0 -53
- data/vendor/cmock/vendor/hardmock/lib/hardmock/stubbing.rb +0 -210
- data/vendor/cmock/vendor/hardmock/lib/hardmock/trapper.rb +0 -31
- data/vendor/cmock/vendor/hardmock/lib/hardmock/utils.rb +0 -9
- data/vendor/cmock/vendor/hardmock/lib/test_unit_before_after.rb +0 -169
- data/vendor/cmock/vendor/hardmock/rake_tasks/rdoc.rake +0 -19
- data/vendor/cmock/vendor/hardmock/rake_tasks/rdoc_options.rb +0 -4
- data/vendor/cmock/vendor/hardmock/rake_tasks/test.rake +0 -22
- data/vendor/cmock/vendor/hardmock/test/functional/assert_error_test.rb +0 -52
- data/vendor/cmock/vendor/hardmock/test/functional/auto_verify_test.rb +0 -178
- data/vendor/cmock/vendor/hardmock/test/functional/direct_mock_usage_test.rb +0 -396
- data/vendor/cmock/vendor/hardmock/test/functional/hardmock_test.rb +0 -434
- data/vendor/cmock/vendor/hardmock/test/functional/stubbing_test.rb +0 -479
- data/vendor/cmock/vendor/hardmock/test/test_helper.rb +0 -43
- data/vendor/cmock/vendor/hardmock/test/unit/expectation_builder_test.rb +0 -19
- data/vendor/cmock/vendor/hardmock/test/unit/expectation_test.rb +0 -372
- data/vendor/cmock/vendor/hardmock/test/unit/expector_test.rb +0 -57
- data/vendor/cmock/vendor/hardmock/test/unit/method_cleanout_test.rb +0 -36
- data/vendor/cmock/vendor/hardmock/test/unit/mock_control_test.rb +0 -175
- data/vendor/cmock/vendor/hardmock/test/unit/mock_test.rb +0 -279
- data/vendor/cmock/vendor/hardmock/test/unit/test_unit_before_after_test.rb +0 -452
- data/vendor/cmock/vendor/hardmock/test/unit/trapper_test.rb +0 -62
- data/vendor/cmock/vendor/hardmock/test/unit/verify_error_test.rb +0 -40
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
require 'hardmock/method_cleanout'
|
|
2
|
-
require 'hardmock/errors'
|
|
3
|
-
|
|
4
|
-
module Hardmock
|
|
5
|
-
class Expector #:nodoc:
|
|
6
|
-
include MethodCleanout
|
|
7
|
-
|
|
8
|
-
def initialize(mock,mock_control,expectation_builder)
|
|
9
|
-
@mock = mock
|
|
10
|
-
@mock_control = mock_control
|
|
11
|
-
@expectation_builder = expectation_builder
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def method_missing(mname, *args, &block)
|
|
15
|
-
expectation = @expectation_builder.build_expectation(
|
|
16
|
-
:mock => @mock,
|
|
17
|
-
:method => mname,
|
|
18
|
-
:arguments => args,
|
|
19
|
-
:block => block)
|
|
20
|
-
|
|
21
|
-
@mock_control.add_expectation expectation
|
|
22
|
-
expectation
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
module Hardmock #:nodoc:
|
|
3
|
-
module MethodCleanout #:nodoc:
|
|
4
|
-
SACRED_METHODS = %w{
|
|
5
|
-
__id__
|
|
6
|
-
__send__
|
|
7
|
-
equal?
|
|
8
|
-
object_id
|
|
9
|
-
send
|
|
10
|
-
nil?
|
|
11
|
-
class
|
|
12
|
-
kind_of?
|
|
13
|
-
respond_to?
|
|
14
|
-
inspect
|
|
15
|
-
method
|
|
16
|
-
to_s
|
|
17
|
-
instance_variables
|
|
18
|
-
instance_eval
|
|
19
|
-
==
|
|
20
|
-
hm_metaclass
|
|
21
|
-
hm_meta_eval
|
|
22
|
-
hm_meta_def
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
def self.included(base) #:nodoc:
|
|
26
|
-
base.class_eval do
|
|
27
|
-
instance_methods.each do |m|
|
|
28
|
-
undef_method m unless SACRED_METHODS.include?(m.to_s)
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
module Hardmock
|
|
3
|
-
# Mock is used to set expectations in your test. Most of the time you'll use
|
|
4
|
-
# <tt>#expects</tt> to create expectations.
|
|
5
|
-
#
|
|
6
|
-
# Aside from the scant few control methods (like +expects+, +trap+ and +_verify+)
|
|
7
|
-
# all calls made on a Mock instance will be immediately applied to the internal
|
|
8
|
-
# expectation mechanism.
|
|
9
|
-
#
|
|
10
|
-
# * If the method call was expected and all the parameters match properly, execution continues
|
|
11
|
-
# * If the expectation was configured with an expectation block, the block is invoked
|
|
12
|
-
# * If the expectation was set up to raise an error, the error is raised now
|
|
13
|
-
# * If the expectation was set up to return a value, it is returned
|
|
14
|
-
# * If the method call was _not_ expected, or the parameter values are wrong, an ExpectationError is raised.
|
|
15
|
-
class Mock
|
|
16
|
-
include Hardmock::MethodCleanout
|
|
17
|
-
|
|
18
|
-
# Create a new Mock instance with a name and a MockControl to support it.
|
|
19
|
-
# If not given, a MockControl is made implicitly for this Mock alone; this means
|
|
20
|
-
# expectations for this mock are not tied to other expectations in your test.
|
|
21
|
-
#
|
|
22
|
-
# It's not recommended to use a Mock directly; see Hardmock and
|
|
23
|
-
# Hardmock#create_mocks for the more wholistic approach.
|
|
24
|
-
def initialize(name, mock_control=nil)
|
|
25
|
-
@name = name
|
|
26
|
-
@control = mock_control || MockControl.new
|
|
27
|
-
@expectation_builder = ExpectationBuilder.new
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def inspect
|
|
31
|
-
"<Mock #{@name}>"
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
# Begin declaring an expectation for this Mock.
|
|
35
|
-
#
|
|
36
|
-
# == Simple Examples
|
|
37
|
-
# Expect the +customer+ to be queried for +account+, and return <tt>"The
|
|
38
|
-
# Account"</tt>:
|
|
39
|
-
# @customer.expects.account.returns "The Account"
|
|
40
|
-
#
|
|
41
|
-
# Expect the +withdraw+ method to be called, and raise an exception when it
|
|
42
|
-
# is (see Expectation#raises for more info):
|
|
43
|
-
# @cash_machine.expects.withdraw(20,:dollars).raises("not enough money")
|
|
44
|
-
#
|
|
45
|
-
# Expect +customer+ to have its +user_name+ set
|
|
46
|
-
# @customer.expects.user_name = 'Big Boss'
|
|
47
|
-
#
|
|
48
|
-
# Expect +customer+ to have its +user_name+ set, and raise a RuntimeException when
|
|
49
|
-
# that happens:
|
|
50
|
-
# @customer.expects('user_name=', "Big Boss").raises "lost connection"
|
|
51
|
-
#
|
|
52
|
-
# Expect +evaluate+ to be passed a block, and when that happens, pass a value
|
|
53
|
-
# to the block (see Expectation#yields for more info):
|
|
54
|
-
# @cruncher.expects.evaluate.yields("some data").returns("some results")
|
|
55
|
-
#
|
|
56
|
-
#
|
|
57
|
-
# == Expectation Blocks
|
|
58
|
-
# To do special handling of expected method calls when they occur, you
|
|
59
|
-
# may pass a block to your expectation, like:
|
|
60
|
-
# @page_scraper.expects.handle_content do |address,request,status|
|
|
61
|
-
# assert_not_nil address, "Can't abide nil addresses"
|
|
62
|
-
# assert_equal "http-get", request.method, "Can only handle GET"
|
|
63
|
-
# assert status > 200 and status < 300, status, "Failed status"
|
|
64
|
-
# "Simulated results #{request.content.downcase}"
|
|
65
|
-
# end
|
|
66
|
-
# In this example, when <tt>page_scraper.handle_content</tt> is called, its
|
|
67
|
-
# three arguments are passed to the <i>expectation block</i> and evaluated
|
|
68
|
-
# using the above assertions. The last value in the block will be used
|
|
69
|
-
# as the return value for +handle_content+
|
|
70
|
-
#
|
|
71
|
-
# You may specify arguments to the expected method call, just like any normal
|
|
72
|
-
# expectation, and those arguments will be pre-validated before being passed
|
|
73
|
-
# to the expectation block. This is useful when you know all of the
|
|
74
|
-
# expected values but still need to do something programmatic.
|
|
75
|
-
#
|
|
76
|
-
# If the method being invoked on the mock accepts a block, that block will be
|
|
77
|
-
# passed to your expectation block as the last (or only) argument. Eg, the
|
|
78
|
-
# convenience method +yields+ can be replaced with the more explicit:
|
|
79
|
-
# @cruncher.expects.evaluate do |block|
|
|
80
|
-
# block.call "some data"
|
|
81
|
-
# "some results"
|
|
82
|
-
# end
|
|
83
|
-
#
|
|
84
|
-
# The result value of the expectation block becomes the return value for the
|
|
85
|
-
# expected method call. This can be overidden by using the +returns+ method:
|
|
86
|
-
# @cruncher.expects.evaluate do |block|
|
|
87
|
-
# block.call "some data"
|
|
88
|
-
# "some results"
|
|
89
|
-
# end.returns("the actual value")
|
|
90
|
-
#
|
|
91
|
-
# <b>Additionally</b>, the resulting value of the expectation block is stored
|
|
92
|
-
# in the +block_value+ field on the expectation. If you've saved a reference
|
|
93
|
-
# to your expectation, you may retrieve the block value once the expectation
|
|
94
|
-
# has been met.
|
|
95
|
-
#
|
|
96
|
-
# evaluation_event = @cruncher.expects.evaluate do |block|
|
|
97
|
-
# block.call "some data"
|
|
98
|
-
# "some results"
|
|
99
|
-
# end.returns("the actual value")
|
|
100
|
-
#
|
|
101
|
-
# result = @cruncher.evaluate do |input|
|
|
102
|
-
# puts input # => 'some data'
|
|
103
|
-
# end
|
|
104
|
-
# # result is 'the actual value'
|
|
105
|
-
#
|
|
106
|
-
# evaluation_event.block_value # => 'some results'
|
|
107
|
-
#
|
|
108
|
-
def expects(*args, &block)
|
|
109
|
-
expector = Expector.new(self,@control,@expectation_builder)
|
|
110
|
-
# If there are no args, we return the Expector
|
|
111
|
-
return expector if args.empty?
|
|
112
|
-
# If there ARE args, we set up the expectation right here and return it
|
|
113
|
-
expector.send(args.shift.to_sym, *args, &block)
|
|
114
|
-
end
|
|
115
|
-
alias_method :expect, :expects
|
|
116
|
-
alias_method :should_receive, :expects
|
|
117
|
-
|
|
118
|
-
# Special-case convenience: #trap sets up an expectation for a method
|
|
119
|
-
# that will take a block. That block, when sent to the expected method, will
|
|
120
|
-
# be trapped and stored in the expectation's +block_value+ field.
|
|
121
|
-
# The Expectation#trigger method may then be used to invoke that block.
|
|
122
|
-
#
|
|
123
|
-
# Like +expects+, the +trap+ mechanism can be followed by +raises+ or +returns+.
|
|
124
|
-
#
|
|
125
|
-
# _Unlike_ +expects+, you may not use an expectation block with +trap+. If
|
|
126
|
-
# the expected method takes arguments in addition to the block, they must
|
|
127
|
-
# be specified in the arguments to the +trap+ call itself.
|
|
128
|
-
#
|
|
129
|
-
# == Example
|
|
130
|
-
#
|
|
131
|
-
# create_mocks :address_book, :editor_form
|
|
132
|
-
#
|
|
133
|
-
# # Expect a subscription on the :person_added event for @address_book:
|
|
134
|
-
# person_event = @address_book.trap.subscribe(:person_added)
|
|
135
|
-
#
|
|
136
|
-
# # The runtime code would look like:
|
|
137
|
-
# @address_book.subscribe :person_added do |person_name|
|
|
138
|
-
# @editor_form.name = person_name
|
|
139
|
-
# end
|
|
140
|
-
#
|
|
141
|
-
# # At this point, the expectation for 'subscribe' is met and the
|
|
142
|
-
# # block has been captured. But we're not done:
|
|
143
|
-
# @editor_form.expects.name = "David"
|
|
144
|
-
#
|
|
145
|
-
# # Now invoke the block we trapped earlier:
|
|
146
|
-
# person_event.trigger "David"
|
|
147
|
-
#
|
|
148
|
-
# verify_mocks
|
|
149
|
-
def trap(*args)
|
|
150
|
-
Trapper.new(self,@control,ExpectationBuilder.new)
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
def method_missing(mname,*args) #:nodoc:
|
|
154
|
-
block = nil
|
|
155
|
-
block = Proc.new if block_given?
|
|
156
|
-
@control.apply_method_call(self,mname,args,block)
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
def _control #:nodoc:
|
|
161
|
-
@control
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
def _name #:nodoc:
|
|
165
|
-
@name
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
# Verify that all expectations are fulfilled. NOTE: this method triggers
|
|
169
|
-
# validation on the _control_ for this mock, so all Mocks that share the
|
|
170
|
-
# MockControl with this instance will be included in the verification.
|
|
171
|
-
#
|
|
172
|
-
# <b>Only use this method if you are managing your own Mocks and their controls.</b>
|
|
173
|
-
#
|
|
174
|
-
# Normal usage of Hardmock doesn't require you to call this; let
|
|
175
|
-
# Hardmock#verify_mocks do it for you.
|
|
176
|
-
def _verify
|
|
177
|
-
@control.verify
|
|
178
|
-
end
|
|
179
|
-
end
|
|
180
|
-
end
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
require 'hardmock/utils'
|
|
2
|
-
|
|
3
|
-
module Hardmock
|
|
4
|
-
class MockControl #:nodoc:
|
|
5
|
-
include Utils
|
|
6
|
-
attr_accessor :name
|
|
7
|
-
|
|
8
|
-
def initialize
|
|
9
|
-
clear_expectations
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def happy?
|
|
13
|
-
@expectations.empty?
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def disappointed?
|
|
17
|
-
@disappointed
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def add_expectation(expectation)
|
|
21
|
-
# puts "MockControl #{self.object_id.to_s(16)} adding expectation: #{expectation}"
|
|
22
|
-
@expectations << expectation
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def apply_method_call(mock,mname,args,block)
|
|
26
|
-
# Are we even expecting any sort of call?
|
|
27
|
-
if happy?
|
|
28
|
-
@disappointed = true
|
|
29
|
-
raise ExpectationError.new("Surprise call to #{format_method_call_string(mock,mname,args)}")
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
begin
|
|
33
|
-
@expectations.shift.apply_method_call(mock,mname,args,block)
|
|
34
|
-
rescue Exception => ouch
|
|
35
|
-
@disappointed = true
|
|
36
|
-
raise ouch
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def verify
|
|
41
|
-
# puts "MockControl #{self.object_id.to_s(16)} verify: happy? #{happy?}"
|
|
42
|
-
@disappointed = !happy?
|
|
43
|
-
raise VerifyError.new("Unmet expectations", @expectations) unless happy?
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def clear_expectations
|
|
47
|
-
@expectations = []
|
|
48
|
-
@disappointed = false
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
end
|
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
# Stubbing support
|
|
4
|
-
#
|
|
5
|
-
# Stubs methods on classes and instances
|
|
6
|
-
#
|
|
7
|
-
|
|
8
|
-
# Why's "metaid.rb" stuff crunched down:
|
|
9
|
-
class Object #:nodoc:#
|
|
10
|
-
def hm_metaclass #:nodoc:#
|
|
11
|
-
class << self
|
|
12
|
-
self
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def hm_meta_eval(&blk) #:nodoc:#
|
|
17
|
-
hm_metaclass.instance_eval(&blk)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def hm_meta_def(name, &blk) #:nodoc:#
|
|
21
|
-
hm_meta_eval { define_method name, &blk }
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
module Hardmock
|
|
28
|
-
|
|
29
|
-
# == Hardmock: Stubbing and Mocking Concrete Methods
|
|
30
|
-
#
|
|
31
|
-
# Hardmock lets you stub and/or mock methods on concrete classes or objects.
|
|
32
|
-
#
|
|
33
|
-
# * To "stub" a concrete method is to rig it to return the same thing always, disregarding any arguments.
|
|
34
|
-
# * To "mock" a concrete method is to surplant its funcionality by delegating to a mock object who will cover this behavior.
|
|
35
|
-
#
|
|
36
|
-
# Mocked methods have their expectations considered along with all other mock object expectations.
|
|
37
|
-
#
|
|
38
|
-
# If you use stubbing or concrete mocking in the absence (or before creation) of other mocks, you need to invoke <tt>prepare_hardmock_control</tt>.
|
|
39
|
-
# Once <tt>verify_mocks</tt> or <tt>clear_expectaions</tt> is called, the overriden behavior in the target objects is restored.
|
|
40
|
-
#
|
|
41
|
-
# == Examples
|
|
42
|
-
#
|
|
43
|
-
# River.stubs!(:sounds_like).returns("gurgle")
|
|
44
|
-
#
|
|
45
|
-
# River.expects!(:jump).returns("splash")
|
|
46
|
-
#
|
|
47
|
-
# rogue.stubs!(:sounds_like).returns("pshshsh")
|
|
48
|
-
#
|
|
49
|
-
# rogue.expects!(:rawhide_tanning_solvents).returns("giant snapping turtles")
|
|
50
|
-
#
|
|
51
|
-
module Stubbing
|
|
52
|
-
# Exists only for documentation
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
class ReplacedMethod #:nodoc:#
|
|
56
|
-
attr_reader :target, :method_name
|
|
57
|
-
|
|
58
|
-
def initialize(target, method_name)
|
|
59
|
-
@target = target
|
|
60
|
-
@method_name = method_name
|
|
61
|
-
|
|
62
|
-
Hardmock.track_replaced_method self
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
class StubbedMethod < ReplacedMethod #:nodoc:#
|
|
67
|
-
def invoke(args)
|
|
68
|
-
raise @raises if @raises
|
|
69
|
-
@return_value
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def returns(stubbed_return)
|
|
73
|
-
@return_value = stubbed_return
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def raises(err)
|
|
77
|
-
err = RuntimeError.new(err) unless err.kind_of?(Exception)
|
|
78
|
-
@raises = err
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
class ::Object
|
|
83
|
-
def stubs!(method_name)
|
|
84
|
-
method_name = method_name.to_s
|
|
85
|
-
already_stubbed = Hardmock.has_replaced_method?(self, method_name)
|
|
86
|
-
|
|
87
|
-
stubbed_method = Hardmock::StubbedMethod.new(self, method_name)
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
unless _is_mock? or already_stubbed
|
|
91
|
-
if methods.include?(method_name.to_s)
|
|
92
|
-
hm_meta_eval do
|
|
93
|
-
alias_method "_hardmock_original_#{method_name}".to_sym, method_name.to_sym
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
hm_meta_def method_name do |*args|
|
|
99
|
-
stubbed_method.invoke(args)
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
stubbed_method
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
def expects!(method_name, *args, &block)
|
|
106
|
-
if self._is_mock?
|
|
107
|
-
raise Hardmock::StubbingError, "Cannot use 'expects!(:#{method_name})' on a Mock object; try 'expects' instead"
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
method_name = method_name.to_s
|
|
111
|
-
|
|
112
|
-
@_my_mock = Mock.new(_my_name, $main_mock_control) if @_my_mock.nil?
|
|
113
|
-
|
|
114
|
-
unless Hardmock.has_replaced_method?(self, method_name)
|
|
115
|
-
# Track the method as replaced
|
|
116
|
-
Hardmock::ReplacedMethod.new(self, method_name)
|
|
117
|
-
|
|
118
|
-
# Preserver original implementation of the method by aliasing it away
|
|
119
|
-
if methods.include?(method_name)
|
|
120
|
-
hm_meta_eval do
|
|
121
|
-
alias_method "_hardmock_original_#{method_name}".to_sym, method_name.to_sym
|
|
122
|
-
end
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
# Re-define the method to utilize our patron mock instance.
|
|
126
|
-
# (This global-temp-var thing is hokey but I was having difficulty generating
|
|
127
|
-
# code for the meta class.)
|
|
128
|
-
begin
|
|
129
|
-
$method_text_temp = %{
|
|
130
|
-
def #{method_name}(*args,&block)
|
|
131
|
-
@_my_mock.__send__(:#{method_name}, *args, &block)
|
|
132
|
-
end
|
|
133
|
-
}
|
|
134
|
-
class << self
|
|
135
|
-
eval $method_text_temp
|
|
136
|
-
end
|
|
137
|
-
ensure
|
|
138
|
-
$method_text_temp = nil
|
|
139
|
-
end
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
return @_my_mock.expects(method_name, *args, &block)
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
def _is_mock?
|
|
146
|
-
self.kind_of?(Mock)
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
def _my_name
|
|
150
|
-
self.kind_of?(Class) ? self.name : self.class.name
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
def _clear_mock
|
|
154
|
-
@_my_mock = nil
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
class ::NilClass
|
|
160
|
-
# Use this only if you really mean it
|
|
161
|
-
alias_method :intentionally_stubs!, :stubs!
|
|
162
|
-
|
|
163
|
-
# Use this only if you really mean it
|
|
164
|
-
alias_method :intentionally_expects!, :expects!
|
|
165
|
-
|
|
166
|
-
# Overridden to protect against accidental nil reference self delusion
|
|
167
|
-
def stubs!(mname)
|
|
168
|
-
raise StubbingError, "Cannot stub #{mname} method on nil. (If you really mean to, try 'intentionally_stubs!')"
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
# Overridden to protect against accidental nil reference self delusion
|
|
172
|
-
def expects!(mname, *args)
|
|
173
|
-
raise StubbingError, "Cannot mock #{mname} method on nil. (If you really mean to, try 'intentionally_expects!')"
|
|
174
|
-
end
|
|
175
|
-
end
|
|
176
|
-
|
|
177
|
-
class << self
|
|
178
|
-
def track_replaced_method(replaced_method)
|
|
179
|
-
all_replaced_methods << replaced_method
|
|
180
|
-
end
|
|
181
|
-
|
|
182
|
-
def all_replaced_methods
|
|
183
|
-
$all_replaced_methods ||= []
|
|
184
|
-
end
|
|
185
|
-
|
|
186
|
-
def has_replaced_method?(obj, method_name)
|
|
187
|
-
hits = all_replaced_methods.select do |replaced|
|
|
188
|
-
(replaced.target.object_id == obj.object_id) and (replaced.method_name.to_s == method_name.to_s)
|
|
189
|
-
end
|
|
190
|
-
return !hits.empty?
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
def restore_all_replaced_methods
|
|
194
|
-
all_replaced_methods.each do |replaced|
|
|
195
|
-
unless replaced.target._is_mock?
|
|
196
|
-
backed_up = "_hardmock_original_#{replaced.method_name}"
|
|
197
|
-
if replaced.target.methods.include?(backed_up)
|
|
198
|
-
replaced.target.hm_meta_eval do
|
|
199
|
-
alias_method replaced.method_name.to_sym, backed_up.to_sym
|
|
200
|
-
end
|
|
201
|
-
end
|
|
202
|
-
replaced.target._clear_mock
|
|
203
|
-
end
|
|
204
|
-
end
|
|
205
|
-
all_replaced_methods.clear
|
|
206
|
-
end
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
end
|
|
210
|
-
|