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,479 +0,0 @@
|
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
|
|
2
|
-
require 'hardmock'
|
|
3
|
-
require 'assert_error'
|
|
4
|
-
|
|
5
|
-
class StubbingTest < Test::Unit::TestCase
|
|
6
|
-
|
|
7
|
-
#
|
|
8
|
-
# TESTS
|
|
9
|
-
#
|
|
10
|
-
|
|
11
|
-
it "stubs a class method (and un-stubs after reset_stubs)" do
|
|
12
|
-
assert_equal "stones and gravel", Concrete.pour
|
|
13
|
-
assert_equal "glug glug", Jug.pour
|
|
14
|
-
|
|
15
|
-
Concrete.stubs!(:pour).returns("dust and plaster")
|
|
16
|
-
|
|
17
|
-
3.times do
|
|
18
|
-
assert_equal "dust and plaster", Concrete.pour
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
assert_equal "glug glug", Jug.pour, "Jug's 'pour' method broken"
|
|
22
|
-
assert_equal "stones and gravel", Concrete._hardmock_original_pour, "Original 'pour' method not aliased"
|
|
23
|
-
|
|
24
|
-
assert_equal "For roads", Concrete.describe, "'describe' method broken"
|
|
25
|
-
|
|
26
|
-
reset_stubs
|
|
27
|
-
|
|
28
|
-
assert_equal "stones and gravel", Concrete.pour, "'pour' method not restored"
|
|
29
|
-
assert_equal "For roads", Concrete.describe, "'describe' method broken after verify"
|
|
30
|
-
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
it "stubs several class methods" do
|
|
34
|
-
Concrete.stubs!(:pour).returns("sludge")
|
|
35
|
-
Concrete.stubs!(:describe).returns("awful")
|
|
36
|
-
Jug.stubs!(:pour).returns("milk")
|
|
37
|
-
|
|
38
|
-
assert_equal "sludge", Concrete.pour
|
|
39
|
-
assert_equal "awful", Concrete.describe
|
|
40
|
-
assert_equal "milk", Jug.pour
|
|
41
|
-
|
|
42
|
-
reset_stubs
|
|
43
|
-
|
|
44
|
-
assert_equal "stones and gravel", Concrete.pour
|
|
45
|
-
assert_equal "For roads", Concrete.describe
|
|
46
|
-
assert_equal "glug glug", Jug.pour
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
it "stubs instance methods" do
|
|
50
|
-
slab = Concrete.new
|
|
51
|
-
assert_equal "bonk", slab.hit
|
|
52
|
-
|
|
53
|
-
slab.stubs!(:hit).returns("slap")
|
|
54
|
-
assert_equal "slap", slab.hit, "'hit' not stubbed"
|
|
55
|
-
|
|
56
|
-
reset_stubs
|
|
57
|
-
|
|
58
|
-
assert_equal "bonk", slab.hit, "'hit' not restored"
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
it "stubs instance methods without breaking class methods or other instances" do
|
|
62
|
-
slab = Concrete.new
|
|
63
|
-
scrape = Concrete.new
|
|
64
|
-
assert_equal "an instance", slab.describe
|
|
65
|
-
assert_equal "an instance", scrape.describe
|
|
66
|
-
assert_equal "For roads", Concrete.describe
|
|
67
|
-
|
|
68
|
-
slab.stubs!(:describe).returns("new instance describe")
|
|
69
|
-
assert_equal "new instance describe", slab.describe, "'describe' on instance not stubbed"
|
|
70
|
-
assert_equal "an instance", scrape.describe, "'describe' on 'scrape' instance broken"
|
|
71
|
-
assert_equal "For roads", Concrete.describe, "'describe' class method broken"
|
|
72
|
-
|
|
73
|
-
reset_stubs
|
|
74
|
-
|
|
75
|
-
assert_equal "an instance", slab.describe, "'describe' instance method not restored"
|
|
76
|
-
assert_equal "an instance", scrape.describe, "'describe' on 'scrape' instance broken after restore"
|
|
77
|
-
assert_equal "For roads", Concrete.describe, "'describe' class method broken after restore"
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
should "allow stubbing of nonexistant class methods" do
|
|
81
|
-
Concrete.stubs!(:funky).returns('juice')
|
|
82
|
-
assert_equal 'juice', Concrete.funky
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
should "allow stubbing of nonexistant instance methods" do
|
|
86
|
-
chunk = Concrete.new
|
|
87
|
-
chunk.stubs!(:shark).returns('bite')
|
|
88
|
-
assert_equal 'bite', chunk.shark
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
should "allow re-stubbing" do
|
|
92
|
-
Concrete.stubs!(:pour).returns("one")
|
|
93
|
-
assert_equal "one", Concrete.pour
|
|
94
|
-
|
|
95
|
-
Concrete.stubs!(:pour).raises("hell")
|
|
96
|
-
assert_error RuntimeError, /hell/ do
|
|
97
|
-
Concrete.pour
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
Concrete.stubs!(:pour).returns("two")
|
|
101
|
-
assert_equal "two", Concrete.pour
|
|
102
|
-
|
|
103
|
-
reset_stubs
|
|
104
|
-
|
|
105
|
-
assert_equal "stones and gravel", Concrete.pour
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
it "does nothing with a runtime block when simply stubbing" do
|
|
109
|
-
slab = Concrete.new
|
|
110
|
-
slab.stubs!(:hit) do |nothing|
|
|
111
|
-
raise "BOOOMM!"
|
|
112
|
-
end
|
|
113
|
-
slab.hit
|
|
114
|
-
reset_stubs
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
it "can raise errors from a stubbed method" do
|
|
118
|
-
Concrete.stubs!(:pour).raises(StandardError.new("no!"))
|
|
119
|
-
assert_error StandardError, /no!/ do
|
|
120
|
-
Concrete.pour
|
|
121
|
-
end
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
it "provides string syntax for convenient raising of RuntimeErrors" do
|
|
125
|
-
Concrete.stubs!(:pour).raises("never!")
|
|
126
|
-
assert_error RuntimeError, /never!/ do
|
|
127
|
-
Concrete.pour
|
|
128
|
-
end
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
#
|
|
133
|
-
# Per-method mocking on classes or instances
|
|
134
|
-
#
|
|
135
|
-
|
|
136
|
-
it "mocks specific methods on existing classes, and returns the class method to normal after verification" do
|
|
137
|
-
|
|
138
|
-
assert_equal "stones and gravel", Concrete.pour, "Concrete.pour is already messed up"
|
|
139
|
-
|
|
140
|
-
Concrete.expects!(:pour).returns("ALIGATORS")
|
|
141
|
-
assert_equal "ALIGATORS", Concrete.pour
|
|
142
|
-
|
|
143
|
-
verify_mocks
|
|
144
|
-
assert_equal "stones and gravel", Concrete.pour, "Concrete.pour not restored"
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
it "flunks if expected class method is not invoked" do
|
|
148
|
-
|
|
149
|
-
Concrete.expects!(:pour).returns("ALIGATORS")
|
|
150
|
-
assert_error(Hardmock::VerifyError, /Concrete.pour/, /unmet expectations/i) do
|
|
151
|
-
verify_mocks
|
|
152
|
-
end
|
|
153
|
-
clear_expectations
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
it "supports all normal mock functionality for class methods" do
|
|
157
|
-
|
|
158
|
-
Concrete.expects!(:pour, "two tons").returns("mice")
|
|
159
|
-
Concrete.expects!(:pour, "three tons").returns("cats")
|
|
160
|
-
Concrete.expects!(:pour, "four tons").raises("Can't do it")
|
|
161
|
-
Concrete.expects!(:pour) do |some, args|
|
|
162
|
-
"==#{some}+#{args}=="
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
assert_equal "mice", Concrete.pour("two tons")
|
|
166
|
-
assert_equal "cats", Concrete.pour("three tons")
|
|
167
|
-
assert_error(RuntimeError, /Can't do it/) do
|
|
168
|
-
Concrete.pour("four tons")
|
|
169
|
-
end
|
|
170
|
-
assert_equal "==first+second==", Concrete.pour("first","second")
|
|
171
|
-
end
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
it "enforces inter-mock ordering when mocking class methods" do
|
|
175
|
-
create_mocks :truck, :foreman
|
|
176
|
-
|
|
177
|
-
@truck.expects.backup
|
|
178
|
-
Concrete.expects!(:pour, "something")
|
|
179
|
-
@foreman.expects.shout
|
|
180
|
-
|
|
181
|
-
@truck.backup
|
|
182
|
-
assert_error Hardmock::ExpectationError, /wrong/i, /expected call/i, /Concrete.pour/ do
|
|
183
|
-
@foreman.shout
|
|
184
|
-
end
|
|
185
|
-
assert_error Hardmock::VerifyError, /unmet expectations/i, /foreman.shout/ do
|
|
186
|
-
verify_mocks
|
|
187
|
-
end
|
|
188
|
-
clear_expectations
|
|
189
|
-
end
|
|
190
|
-
|
|
191
|
-
should "allow mocking non-existant class methods" do
|
|
192
|
-
Concrete.expects!(:something).returns("else")
|
|
193
|
-
assert_equal "else", Concrete.something
|
|
194
|
-
end
|
|
195
|
-
|
|
196
|
-
it "mocks specific methods on existing instances, then restore them after verify" do
|
|
197
|
-
|
|
198
|
-
slab = Concrete.new
|
|
199
|
-
assert_equal "bonk", slab.hit
|
|
200
|
-
|
|
201
|
-
slab.expects!(:hit).returns("slap")
|
|
202
|
-
assert_equal "slap", slab.hit, "'hit' not stubbed"
|
|
203
|
-
|
|
204
|
-
verify_mocks
|
|
205
|
-
assert_equal "bonk", slab.hit, "'hit' not restored"
|
|
206
|
-
end
|
|
207
|
-
|
|
208
|
-
it "flunks if expected instance method is not invoked" do
|
|
209
|
-
|
|
210
|
-
slab = Concrete.new
|
|
211
|
-
slab.expects!(:hit)
|
|
212
|
-
|
|
213
|
-
assert_error Hardmock::VerifyError, /unmet expectations/i, /Concrete.hit/ do
|
|
214
|
-
verify_mocks
|
|
215
|
-
end
|
|
216
|
-
clear_expectations
|
|
217
|
-
end
|
|
218
|
-
|
|
219
|
-
it "supports all normal mock functionality for instance methods" do
|
|
220
|
-
|
|
221
|
-
slab = Concrete.new
|
|
222
|
-
|
|
223
|
-
slab.expects!(:hit, "soft").returns("hey")
|
|
224
|
-
slab.expects!(:hit, "hard").returns("OOF")
|
|
225
|
-
slab.expects!(:hit).raises("stoppit")
|
|
226
|
-
slab.expects!(:hit) do |some, args|
|
|
227
|
-
"==#{some}+#{args}=="
|
|
228
|
-
end
|
|
229
|
-
|
|
230
|
-
assert_equal "hey", slab.hit("soft")
|
|
231
|
-
assert_equal "OOF", slab.hit("hard")
|
|
232
|
-
assert_error(RuntimeError, /stoppit/) do
|
|
233
|
-
slab.hit
|
|
234
|
-
end
|
|
235
|
-
assert_equal "==first+second==", slab.hit("first","second")
|
|
236
|
-
|
|
237
|
-
end
|
|
238
|
-
|
|
239
|
-
it "enforces inter-mock ordering when mocking instance methods" do
|
|
240
|
-
create_mocks :truck, :foreman
|
|
241
|
-
slab1 = Concrete.new
|
|
242
|
-
slab2 = Concrete.new
|
|
243
|
-
|
|
244
|
-
@truck.expects.backup
|
|
245
|
-
slab1.expects!(:hit)
|
|
246
|
-
@foreman.expects.shout
|
|
247
|
-
slab2.expects!(:hit)
|
|
248
|
-
@foreman.expects.whatever
|
|
249
|
-
|
|
250
|
-
@truck.backup
|
|
251
|
-
slab1.hit
|
|
252
|
-
@foreman.shout
|
|
253
|
-
assert_error Hardmock::ExpectationError, /wrong/i, /expected call/i, /Concrete.hit/ do
|
|
254
|
-
@foreman.whatever
|
|
255
|
-
end
|
|
256
|
-
assert_error Hardmock::VerifyError, /unmet expectations/i, /foreman.whatever/ do
|
|
257
|
-
verify_mocks
|
|
258
|
-
end
|
|
259
|
-
clear_expectations
|
|
260
|
-
end
|
|
261
|
-
|
|
262
|
-
should "allow mocking non-existant instance methods" do
|
|
263
|
-
slab = Concrete.new
|
|
264
|
-
slab.expects!(:wholly).returns('happy')
|
|
265
|
-
assert_equal 'happy', slab.wholly
|
|
266
|
-
end
|
|
267
|
-
|
|
268
|
-
should "support concrete expectations that deal with runtime blocks" do
|
|
269
|
-
|
|
270
|
-
Concrete.expects!(:pour, "a lot") do |how_much, block|
|
|
271
|
-
assert_equal "a lot", how_much, "Wrong how_much arg"
|
|
272
|
-
assert_not_nil block, "nil runtime block"
|
|
273
|
-
assert_equal "the block value", block.call, "Wrong runtime block value"
|
|
274
|
-
end
|
|
275
|
-
|
|
276
|
-
Concrete.pour("a lot") do
|
|
277
|
-
"the block value"
|
|
278
|
-
end
|
|
279
|
-
|
|
280
|
-
end
|
|
281
|
-
|
|
282
|
-
it "can stub methods on mock objects" do
|
|
283
|
-
create_mock :horse
|
|
284
|
-
@horse.stubs!(:speak).returns("silence")
|
|
285
|
-
@horse.stubs!(:hello).returns("nothing")
|
|
286
|
-
@horse.expects(:canter).returns("clip clop")
|
|
287
|
-
|
|
288
|
-
assert_equal "silence", @horse.speak
|
|
289
|
-
assert_equal "clip clop", @horse.canter
|
|
290
|
-
assert_equal "silence", @horse.speak
|
|
291
|
-
assert_equal "silence", @horse.speak
|
|
292
|
-
assert_equal "nothing", @horse.hello
|
|
293
|
-
assert_equal "nothing", @horse.hello
|
|
294
|
-
|
|
295
|
-
verify_mocks
|
|
296
|
-
reset_stubs
|
|
297
|
-
end
|
|
298
|
-
|
|
299
|
-
it "can stub the new method and return values" do
|
|
300
|
-
Concrete.stubs!(:new).returns("this value")
|
|
301
|
-
assert_equal "this value", Concrete.new, "did not properly stub new class method"
|
|
302
|
-
reset_stubs
|
|
303
|
-
end
|
|
304
|
-
|
|
305
|
-
it "can mock the new method and return values" do
|
|
306
|
-
Concrete.expects!(:new).with("foo").returns("hello")
|
|
307
|
-
Concrete.expects!(:new).with("bar").returns("world")
|
|
308
|
-
|
|
309
|
-
assert_equal "hello", Concrete.new("foo"), "did not properly mock out new class method"
|
|
310
|
-
assert_equal "world", Concrete.new("bar"), "did not properly mock out new class method"
|
|
311
|
-
|
|
312
|
-
verify_mocks
|
|
313
|
-
reset_stubs
|
|
314
|
-
end
|
|
315
|
-
|
|
316
|
-
it "can mock several different class methods at once" do
|
|
317
|
-
sim_code = lambda do |input|
|
|
318
|
-
record = Multitool.find_record(input)
|
|
319
|
-
report = Multitool.generate_report(record)
|
|
320
|
-
Multitool.format_output(report)
|
|
321
|
-
end
|
|
322
|
-
|
|
323
|
-
@identifier = "the id"
|
|
324
|
-
@record = "the record"
|
|
325
|
-
@report = "the report"
|
|
326
|
-
@output = "the output"
|
|
327
|
-
|
|
328
|
-
Multitool.expects!(:find_record).with(@identifier).returns(@record)
|
|
329
|
-
Multitool.expects!(:generate_report).with(@record).returns(@report)
|
|
330
|
-
Multitool.expects!(:format_output).with(@report).returns(@output)
|
|
331
|
-
|
|
332
|
-
result = sim_code.call(@identifier)
|
|
333
|
-
assert_equal @output, result, "Wrong output"
|
|
334
|
-
end
|
|
335
|
-
|
|
336
|
-
it "can handle a mix of different and repeat class method mock calls" do
|
|
337
|
-
prep = lambda {
|
|
338
|
-
Multitool.expects!(:find_record).with("A").returns("1")
|
|
339
|
-
Multitool.expects!(:generate_report).with("1")
|
|
340
|
-
Multitool.expects!(:find_record).with("B").returns("2")
|
|
341
|
-
Multitool.expects!(:generate_report).with("2")
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
prep[]
|
|
345
|
-
Multitool.generate_report(Multitool.find_record("A"))
|
|
346
|
-
Multitool.generate_report(Multitool.find_record("B"))
|
|
347
|
-
|
|
348
|
-
prep[]
|
|
349
|
-
Multitool.generate_report(Multitool.find_record("A"))
|
|
350
|
-
assert_error Hardmock::ExpectationError, /Wrong arguments/, /find_record\("B"\)/, /find_record\("C"\)/ do
|
|
351
|
-
Multitool.generate_report(Multitool.find_record("C"))
|
|
352
|
-
end
|
|
353
|
-
clear_expectations
|
|
354
|
-
end
|
|
355
|
-
|
|
356
|
-
it "can mock several concrete instance methods at once" do
|
|
357
|
-
inst = OtherMultitool.new
|
|
358
|
-
sim_code = lambda do |input|
|
|
359
|
-
record = inst.find_record(input)
|
|
360
|
-
report = inst.generate_report(record)
|
|
361
|
-
inst.format_output(report)
|
|
362
|
-
end
|
|
363
|
-
|
|
364
|
-
@identifier = "the id"
|
|
365
|
-
@record = "the record"
|
|
366
|
-
@report = "the report"
|
|
367
|
-
@output = "the output"
|
|
368
|
-
|
|
369
|
-
inst.expects!(:find_record).with(@identifier).returns(@record)
|
|
370
|
-
inst.expects!(:generate_report).with(@record).returns(@report)
|
|
371
|
-
inst.expects!(:format_output).with(@report).returns(@output)
|
|
372
|
-
|
|
373
|
-
result = sim_code.call(@identifier)
|
|
374
|
-
assert_equal @output, result, "Wrong output"
|
|
375
|
-
end
|
|
376
|
-
|
|
377
|
-
it "verifies all concrete expects! from several different expectations" do
|
|
378
|
-
Multitool.expects!(:find_record)
|
|
379
|
-
Multitool.expects!(:generate_report)
|
|
380
|
-
Multitool.expects!(:format_output)
|
|
381
|
-
|
|
382
|
-
Multitool.find_record
|
|
383
|
-
Multitool.generate_report
|
|
384
|
-
|
|
385
|
-
assert_error Hardmock::VerifyError, /unmet expectations/i, /format_output/i do
|
|
386
|
-
verify_mocks
|
|
387
|
-
end
|
|
388
|
-
end
|
|
389
|
-
|
|
390
|
-
it "will not allow expects! to be used on a mock object" do
|
|
391
|
-
create_mock :cow
|
|
392
|
-
assert_error Hardmock::StubbingError, /expects!/, /mock/i, /something/ do
|
|
393
|
-
@cow.expects!(:something)
|
|
394
|
-
end
|
|
395
|
-
end
|
|
396
|
-
|
|
397
|
-
it "does not allow stubbing on nil objects" do
|
|
398
|
-
[ nil, @this_is_nil ].each do |nil_obj|
|
|
399
|
-
assert_error Hardmock::StubbingError, /cannot/i, /nil/i, /intentionally/ do
|
|
400
|
-
nil_obj.stubs!(:wont_work)
|
|
401
|
-
end
|
|
402
|
-
end
|
|
403
|
-
end
|
|
404
|
-
|
|
405
|
-
it "does not allow concrete method mocking on nil objects" do
|
|
406
|
-
[ nil, @this_is_nil ].each do |nil_obj|
|
|
407
|
-
assert_error Hardmock::StubbingError, /cannot/i, /nil/i, /intentionally/ do
|
|
408
|
-
nil_obj.expects!(:wont_work)
|
|
409
|
-
end
|
|
410
|
-
end
|
|
411
|
-
end
|
|
412
|
-
|
|
413
|
-
it "provides an alternate method for stubbing on nil objects" do
|
|
414
|
-
@this_is_nil.intentionally_stubs!(:bogus).returns('output')
|
|
415
|
-
assert_equal 'output', @this_is_nil.bogus
|
|
416
|
-
end
|
|
417
|
-
|
|
418
|
-
it "provides an alternate method for mocking concreate methods on nil objects" do
|
|
419
|
-
@this_is_nil.intentionally_expects!(:bogus).returns('output')
|
|
420
|
-
assert_error Hardmock::VerifyError, /unmet expectations/i, /NilClass.bogus/ do
|
|
421
|
-
verify_mocks
|
|
422
|
-
end
|
|
423
|
-
end
|
|
424
|
-
|
|
425
|
-
#
|
|
426
|
-
# HELPERS
|
|
427
|
-
#
|
|
428
|
-
|
|
429
|
-
class Concrete
|
|
430
|
-
def initialize; end
|
|
431
|
-
def self.pour
|
|
432
|
-
"stones and gravel"
|
|
433
|
-
end
|
|
434
|
-
|
|
435
|
-
def self.describe
|
|
436
|
-
"For roads"
|
|
437
|
-
end
|
|
438
|
-
|
|
439
|
-
def hit
|
|
440
|
-
"bonk"
|
|
441
|
-
end
|
|
442
|
-
|
|
443
|
-
def describe
|
|
444
|
-
"an instance"
|
|
445
|
-
end
|
|
446
|
-
end
|
|
447
|
-
|
|
448
|
-
class Jug
|
|
449
|
-
def self.pour
|
|
450
|
-
"glug glug"
|
|
451
|
-
end
|
|
452
|
-
end
|
|
453
|
-
|
|
454
|
-
class Multitool
|
|
455
|
-
def self.find_record(*a)
|
|
456
|
-
raise "The real Multitool.find_record was called with #{a.inspect}"
|
|
457
|
-
end
|
|
458
|
-
def self.generate_report(*a)
|
|
459
|
-
raise "The real Multitool.generate_report was called with #{a.inspect}"
|
|
460
|
-
end
|
|
461
|
-
def self.format_output(*a)
|
|
462
|
-
raise "The real Multitool.format_output was called with #{a.inspect}"
|
|
463
|
-
end
|
|
464
|
-
end
|
|
465
|
-
|
|
466
|
-
class OtherMultitool
|
|
467
|
-
def find_record(*a)
|
|
468
|
-
raise "The real OtherMultitool#find_record was called with #{a.inspect}"
|
|
469
|
-
end
|
|
470
|
-
def generate_report(*a)
|
|
471
|
-
raise "The real OtherMultitool#generate_report was called with #{a.inspect}"
|
|
472
|
-
end
|
|
473
|
-
def format_output(*a)
|
|
474
|
-
raise "The real OtherMultitool#format_output was called with #{a.inspect}"
|
|
475
|
-
end
|
|
476
|
-
end
|
|
477
|
-
|
|
478
|
-
end
|
|
479
|
-
|