origen 0.0.1 → 0.0.2
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 +4 -4
- data/bin/ctags +0 -0
- data/bin/origen +165 -1
- data/bin/rgen +2 -0
- data/config/application.rb +141 -0
- data/config/commands.rb +72 -0
- data/config/development.rb +7 -0
- data/config/environment.rb +0 -0
- data/config/rgen.policy +7 -0
- data/config/rubocop/easy.yml +620 -0
- data/config/rubocop/easy_disabled.yml +271 -0
- data/config/rubocop/easy_enabled.yml +731 -0
- data/config/rubocop/strict.yml +620 -0
- data/config/rubocop/strict_disabled.yml +247 -0
- data/config/rubocop/strict_enabled.yml +755 -0
- data/config/users.rb +20 -0
- data/config/version.rb +1 -1
- data/helpers/url.rb +68 -0
- data/lib/c99/doc_interface.rb +56 -0
- data/lib/c99/j750_interface.rb +85 -0
- data/lib/c99/nvm.rb +89 -0
- data/lib/c99/target/mock2.rb +1 -0
- data/lib/c99/target/subdir/mock3.rb +1 -0
- data/lib/option_parser/optparse.rb +12 -0
- data/lib/origen/acronyms.rb +60 -0
- data/lib/origen/application/command_dispatcher.rb +12 -0
- data/lib/origen/application/configuration.rb +206 -0
- data/lib/origen/application/configuration_manager.rb +78 -0
- data/lib/origen/application/deployer.rb +367 -0
- data/lib/origen/application/environment.rb +186 -0
- data/lib/origen/application/lsf.rb +145 -0
- data/lib/origen/application/lsf_manager.rb +657 -0
- data/lib/origen/application/plugins_manager.rb +280 -0
- data/lib/origen/application/release.rb +359 -0
- data/lib/origen/application/runner.rb +246 -0
- data/lib/origen/application/statistics.rb +191 -0
- data/lib/origen/application/target.rb +374 -0
- data/lib/origen/application/version_tracker.rb +59 -0
- data/lib/origen/application/workspace_manager.rb +151 -0
- data/lib/origen/application.rb +746 -0
- data/lib/origen/bugs/bug.rb +36 -0
- data/lib/origen/bugs.rb +45 -0
- data/lib/origen/callbacks.rb +35 -0
- data/lib/origen/chip_mode.rb +118 -0
- data/lib/origen/chip_package.rb +461 -0
- data/lib/origen/client.rb +87 -0
- data/lib/origen/code_generators/actions.rb +258 -0
- data/lib/origen/code_generators/base.rb +57 -0
- data/lib/origen/code_generators/bundler.rb +17 -0
- data/lib/origen/code_generators/gem_setup.rb +49 -0
- data/lib/origen/code_generators/rake.rb +13 -0
- data/lib/origen/code_generators/rspec.rb +12 -0
- data/lib/origen/code_generators/semver.rb +39 -0
- data/lib/origen/code_generators/timever.rb +37 -0
- data/lib/origen/code_generators.rb +111 -0
- data/lib/origen/commands/add.rb +12 -0
- data/lib/origen/commands/compile.rb +62 -0
- data/lib/origen/commands/ctags.rb +9 -0
- data/lib/origen/commands/dispatch.rb +22 -0
- data/lib/origen/commands/environment.rb +11 -0
- data/lib/origen/commands/fetch.rb +63 -0
- data/lib/origen/commands/generate.rb +130 -0
- data/lib/origen/commands/interactive.rb +73 -0
- data/lib/origen/commands/lint.rb +82 -0
- data/lib/origen/commands/lsf.rb +93 -0
- data/lib/origen/commands/merge.rb +55 -0
- data/lib/origen/commands/modifications.rb +12 -0
- data/lib/origen/commands/new.rb +113 -0
- data/lib/origen/commands/plugin.rb +105 -0
- data/lib/origen/commands/program.rb +70 -0
- data/lib/origen/commands/rc.rb +442 -0
- data/lib/origen/commands/save.rb +56 -0
- data/lib/origen/commands/target.rb +27 -0
- data/lib/origen/commands/time.rb +127 -0
- data/lib/origen/commands/version.rb +17 -0
- data/lib/origen/commands/web.rb +221 -0
- data/lib/origen/commands.rb +272 -0
- data/lib/origen/commands_global.rb +76 -0
- data/lib/origen/controller.rb +94 -0
- data/lib/origen/core_ext/array.rb +23 -0
- data/lib/origen/core_ext/bignum.rb +36 -0
- data/lib/origen/core_ext/enumerable.rb +76 -0
- data/lib/origen/core_ext/fixnum.rb +46 -0
- data/lib/origen/core_ext/hash.rb +52 -0
- data/lib/origen/core_ext/module.rb +14 -0
- data/lib/origen/core_ext/numeric.rb +126 -0
- data/lib/origen/core_ext/object.rb +13 -0
- data/lib/origen/core_ext/range.rb +7 -0
- data/lib/origen/core_ext/string.rb +124 -0
- data/lib/origen/core_ext.rb +10 -0
- data/lib/origen/database/key_value_store.rb +111 -0
- data/lib/origen/database/key_value_stores.rb +108 -0
- data/lib/origen/database.rb +6 -0
- data/lib/origen/encodings.rb +102 -0
- data/lib/origen/features/feature.rb +22 -0
- data/lib/origen/features.rb +104 -0
- data/lib/origen/file_handler.rb +429 -0
- data/lib/origen/generator/comparator.rb +56 -0
- data/lib/origen/generator/compiler.rb +277 -0
- data/lib/origen/generator/flow.rb +49 -0
- data/lib/origen/generator/job.rb +131 -0
- data/lib/origen/generator/pattern.rb +356 -0
- data/lib/origen/generator/pattern_finder.rb +155 -0
- data/lib/origen/generator/pattern_iterator.rb +55 -0
- data/lib/origen/generator/renderer.rb +113 -0
- data/lib/origen/generator/resources.rb +40 -0
- data/lib/origen/generator/stage.rb +89 -0
- data/lib/origen/generator.rb +85 -0
- data/lib/origen/global_methods.rb +205 -0
- data/lib/origen/import_manager.rb +596 -0
- data/lib/origen/location/base.rb +116 -0
- data/lib/origen/location/map.rb +83 -0
- data/lib/origen/location.rb +6 -0
- data/lib/origen/log.rb +217 -0
- data/lib/origen/logger_methods.rb +56 -0
- data/lib/origen/mode.rb +61 -0
- data/lib/origen/model.rb +267 -0
- data/lib/origen/model_initializer.rb +45 -0
- data/lib/origen/nvm/block_array.rb +72 -0
- data/lib/origen/nvm.rb +6 -0
- data/lib/origen/parameters/live.rb +22 -0
- data/lib/origen/parameters/missing.rb +28 -0
- data/lib/origen/parameters/set.rb +144 -0
- data/lib/origen/parameters.rb +107 -0
- data/lib/origen/pdm.rb +218 -0
- data/lib/origen/pins/function_proxy.rb +36 -0
- data/lib/origen/pins/ground_pin.rb +6 -0
- data/lib/origen/pins/pin.rb +860 -0
- data/lib/origen/pins/pin_bank.rb +349 -0
- data/lib/origen/pins/pin_clock.rb +124 -0
- data/lib/origen/pins/pin_collection.rb +492 -0
- data/lib/origen/pins/pin_common.rb +206 -0
- data/lib/origen/pins/port.rb +268 -0
- data/lib/origen/pins/power_pin.rb +30 -0
- data/lib/origen/pins.rb +696 -0
- data/lib/origen/registers/bit.rb +562 -0
- data/lib/origen/registers/bit_collection.rb +787 -0
- data/lib/origen/registers/container.rb +288 -0
- data/lib/origen/registers/domain.rb +16 -0
- data/lib/origen/registers/reg.rb +1406 -0
- data/lib/origen/registers/reg_collection.rb +24 -0
- data/lib/origen/registers.rb +652 -0
- data/lib/origen/regression_manager.rb +251 -0
- data/lib/origen/remote_manager.rb +340 -0
- data/lib/origen/revision_control/base.rb +257 -0
- data/lib/origen/revision_control/design_sync.rb +276 -0
- data/lib/origen/revision_control/git.rb +243 -0
- data/lib/origen/revision_control/subversion.rb +6 -0
- data/lib/origen/revision_control.rb +44 -0
- data/lib/origen/ruby_version_check.rb +131 -0
- data/lib/origen/site_config.rb +61 -0
- data/lib/origen/specs/checkers.rb +103 -0
- data/lib/origen/specs/creation_info.rb +17 -0
- data/lib/origen/specs/doc_resource.rb +91 -0
- data/lib/origen/specs/exhibit.rb +17 -0
- data/lib/origen/specs/mode_select.rb +16 -0
- data/lib/origen/specs/note.rb +17 -0
- data/lib/origen/specs/override.rb +21 -0
- data/lib/origen/specs/power_supply.rb +13 -0
- data/lib/origen/specs/spec.rb +226 -0
- data/lib/origen/specs/version_history.rb +14 -0
- data/lib/origen/specs.rb +552 -0
- data/lib/origen/sub_blocks.rb +298 -0
- data/lib/origen/tester/api.rb +277 -0
- data/lib/origen/tester/bdm/bdm.rb +25 -0
- data/lib/origen/tester/command_based_tester.rb +46 -0
- data/lib/origen/tester/doc/doc.rb +226 -0
- data/lib/origen/tester/doc/generator/flow.rb +71 -0
- data/lib/origen/tester/doc/generator/flow_line.rb +203 -0
- data/lib/origen/tester/doc/generator/test.rb +68 -0
- data/lib/origen/tester/doc/generator/test_group.rb +66 -0
- data/lib/origen/tester/doc/generator/tests.rb +47 -0
- data/lib/origen/tester/doc/generator.rb +126 -0
- data/lib/origen/tester/doc/model.rb +162 -0
- data/lib/origen/tester/generator/flow_control_api.rb +606 -0
- data/lib/origen/tester/generator/identity_map.rb +25 -0
- data/lib/origen/tester/generator/placeholder.rb +13 -0
- data/lib/origen/tester/generator/test_numberer.rb +25 -0
- data/lib/origen/tester/generator.rb +271 -0
- data/lib/origen/tester/interface.rb +154 -0
- data/lib/origen/tester/j750/files.rb +45 -0
- data/lib/origen/tester/j750/generator/flow.rb +123 -0
- data/lib/origen/tester/j750/generator/flow_line.rb +288 -0
- data/lib/origen/tester/j750/generator/patgroup.rb +111 -0
- data/lib/origen/tester/j750/generator/patgroups.rb +41 -0
- data/lib/origen/tester/j750/generator/patset.rb +111 -0
- data/lib/origen/tester/j750/generator/patsets.rb +41 -0
- data/lib/origen/tester/j750/generator/templates/flow.txt.erb +9 -0
- data/lib/origen/tester/j750/generator/templates/instances.txt.erb +16 -0
- data/lib/origen/tester/j750/generator/templates/patgroups.txt.erb +8 -0
- data/lib/origen/tester/j750/generator/templates/patsets.txt.erb +10 -0
- data/lib/origen/tester/j750/generator/test_instance.rb +846 -0
- data/lib/origen/tester/j750/generator/test_instance_group.rb +60 -0
- data/lib/origen/tester/j750/generator/test_instances.rb +182 -0
- data/lib/origen/tester/j750/generator.rb +203 -0
- data/lib/origen/tester/j750/j750.rb +845 -0
- data/lib/origen/tester/j750/j750_hpt.rb +35 -0
- data/lib/origen/tester/j750/parser/ac_spec.rb +11 -0
- data/lib/origen/tester/j750/parser/ac_specs.rb +0 -0
- data/lib/origen/tester/j750/parser/dc_spec.rb +36 -0
- data/lib/origen/tester/j750/parser/dc_specs.rb +50 -0
- data/lib/origen/tester/j750/parser/descriptions.rb +340 -0
- data/lib/origen/tester/j750/parser/flow.rb +111 -0
- data/lib/origen/tester/j750/parser/flow_line.rb +207 -0
- data/lib/origen/tester/j750/parser/flows.rb +23 -0
- data/lib/origen/tester/j750/parser/pattern_set.rb +94 -0
- data/lib/origen/tester/j750/parser/pattern_sets.rb +33 -0
- data/lib/origen/tester/j750/parser/test_instance.rb +322 -0
- data/lib/origen/tester/j750/parser/test_instances.rb +26 -0
- data/lib/origen/tester/j750/parser/timeset.rb +15 -0
- data/lib/origen/tester/j750/parser/timesets.rb +0 -0
- data/lib/origen/tester/j750/parser.rb +104 -0
- data/lib/origen/tester/jlink/jlink.rb +33 -0
- data/lib/origen/tester/parser/description_lookup.rb +64 -0
- data/lib/origen/tester/parser/searchable_array.rb +32 -0
- data/lib/origen/tester/parser/searchable_hash.rb +32 -0
- data/lib/origen/tester/parser.rb +24 -0
- data/lib/origen/tester/time.rb +338 -0
- data/lib/origen/tester/timing.rb +253 -0
- data/lib/origen/tester/ultraflex/files.rb +45 -0
- data/lib/origen/tester/ultraflex/generator/flow.rb +119 -0
- data/lib/origen/tester/ultraflex/generator/flow_line.rb +269 -0
- data/lib/origen/tester/ultraflex/generator/patgroup.rb +111 -0
- data/lib/origen/tester/ultraflex/generator/patgroups.rb +41 -0
- data/lib/origen/tester/ultraflex/generator/patset.rb +111 -0
- data/lib/origen/tester/ultraflex/generator/patsets.rb +41 -0
- data/lib/origen/tester/ultraflex/generator/templates/flow.txt.erb +9 -0
- data/lib/origen/tester/ultraflex/generator/templates/instances.txt.erb +16 -0
- data/lib/origen/tester/ultraflex/generator/templates/patgroups.txt.erb +8 -0
- data/lib/origen/tester/ultraflex/generator/templates/patsets.txt.erb +10 -0
- data/lib/origen/tester/ultraflex/generator/test_instance.rb +622 -0
- data/lib/origen/tester/ultraflex/generator/test_instance_group.rb +60 -0
- data/lib/origen/tester/ultraflex/generator/test_instances.rb +174 -0
- data/lib/origen/tester/ultraflex/generator.rb +200 -0
- data/lib/origen/tester/ultraflex/parser/ac_spec.rb +11 -0
- data/lib/origen/tester/ultraflex/parser/ac_specs.rb +0 -0
- data/lib/origen/tester/ultraflex/parser/dc_spec.rb +36 -0
- data/lib/origen/tester/ultraflex/parser/dc_specs.rb +50 -0
- data/lib/origen/tester/ultraflex/parser/descriptions.rb +342 -0
- data/lib/origen/tester/ultraflex/parser/flow.rb +111 -0
- data/lib/origen/tester/ultraflex/parser/flow_line.rb +207 -0
- data/lib/origen/tester/ultraflex/parser/flows.rb +23 -0
- data/lib/origen/tester/ultraflex/parser/pattern_set.rb +94 -0
- data/lib/origen/tester/ultraflex/parser/pattern_sets.rb +33 -0
- data/lib/origen/tester/ultraflex/parser/test_instance.rb +262 -0
- data/lib/origen/tester/ultraflex/parser/test_instances.rb +26 -0
- data/lib/origen/tester/ultraflex/parser/timeset.rb +15 -0
- data/lib/origen/tester/ultraflex/parser/timesets.rb +0 -0
- data/lib/origen/tester/ultraflex/parser.rb +104 -0
- data/lib/origen/tester/ultraflex/ultraflex.rb +759 -0
- data/lib/origen/tester/v93k/generator/flow.rb +63 -0
- data/lib/origen/tester/v93k/generator/flow_node/print.rb +10 -0
- data/lib/origen/tester/v93k/generator/flow_node.rb +17 -0
- data/lib/origen/tester/v93k/generator/pattern.rb +16 -0
- data/lib/origen/tester/v93k/generator/pattern_master.rb +54 -0
- data/lib/origen/tester/v93k/generator/templates/_test_method.txt.erb +6 -0
- data/lib/origen/tester/v93k/generator/templates/_test_suite.txt.erb +11 -0
- data/lib/origen/tester/v93k/generator/templates/template.flow.erb +121 -0
- data/lib/origen/tester/v93k/generator/templates/template.pmfl.erb +9 -0
- data/lib/origen/tester/v93k/generator/test_function.rb +103 -0
- data/lib/origen/tester/v93k/generator/test_functions.rb +79 -0
- data/lib/origen/tester/v93k/generator/test_method.rb +46 -0
- data/lib/origen/tester/v93k/generator/test_methods.rb +75 -0
- data/lib/origen/tester/v93k/generator/test_suite.rb +54 -0
- data/lib/origen/tester/v93k/generator/test_suites.rb +65 -0
- data/lib/origen/tester/v93k/generator.rb +80 -0
- data/lib/origen/tester/v93k/v93k.rb +420 -0
- data/lib/origen/tester/vector.rb +86 -0
- data/lib/origen/tester/vector_generator.rb +633 -0
- data/lib/origen/tester/vector_pipeline.rb +150 -0
- data/lib/origen/tester.rb +56 -0
- data/lib/origen/top_level.rb +134 -0
- data/lib/origen/users/ldap.rb +65 -0
- data/lib/origen/users/user.rb +149 -0
- data/lib/origen/users.rb +30 -0
- data/lib/origen/utility/block_args.rb +93 -0
- data/lib/origen/utility/csv_data.rb +110 -0
- data/lib/origen/utility/design_sync.rb +494 -0
- data/lib/origen/utility/diff.rb +158 -0
- data/lib/origen/utility/input_capture.rb +121 -0
- data/lib/origen/utility/mailer.rb +143 -0
- data/lib/origen/utility/s_record.rb +205 -0
- data/lib/origen/utility/time_and_date.rb +30 -0
- data/lib/origen/utility.rb +12 -0
- data/lib/origen/version_checker.rb +117 -0
- data/lib/origen/version_string.rb +356 -0
- data/lib/origen.rb +648 -0
- data/lib/tasks/gem.rake +27 -22
- data/origen_site_config.yml +36 -0
- data/source_setup +17 -0
- data/spec/format/rgen_formatter.rb +14 -0
- data/templates/api_doc/README.txt.erb +24 -0
- data/templates/code_generators/gemfile_app.rb +4 -0
- data/templates/code_generators/gemfile_plugin.rb +6 -0
- data/templates/code_generators/gemspec.rb +33 -0
- data/templates/code_generators/rakefile.rb +10 -0
- data/templates/code_generators/spec_helper.rb +49 -0
- data/templates/code_generators/version.rb +8 -0
- data/templates/code_generators/version_time.rb +3 -0
- data/templates/git/gitignore.erb +33 -0
- data/templates/j750/_vt_flow.txt.erb +8 -0
- data/templates/j750/_vt_instances.txt.erb +4 -0
- data/templates/j750/program_sheet.txt.erb +9 -0
- data/templates/nanoc/Rules +74 -0
- data/templates/nanoc/config.yaml +77 -0
- data/templates/nanoc/content/favicon.ico +0 -0
- data/templates/nanoc/layouts/bootstrap.html.erb +63 -0
- data/templates/nanoc/layouts/bootstrap3.html.erb +71 -0
- data/templates/nanoc/layouts/freescale.html.erb +79 -0
- data/templates/nanoc/lib/bootstrap_filter.rb +49 -0
- data/templates/nanoc/lib/codeblocks_filter.rb +41 -0
- data/templates/nanoc/lib/default.rb +2 -0
- data/templates/nanoc/lib/gzip_filter.rb +16 -0
- data/templates/nanoc/lib/haml_code_filter.rb +41 -0
- data/templates/nanoc/lib/helpers.rb +1 -0
- data/templates/nanoc/lib/search_filter.rb +62 -0
- data/templates/nanoc_dynamic/content/search.js.erb +92 -0
- data/templates/shared/web/_logo.html +10 -0
- data/templates/test/_inline_sub.txt.erb +2 -0
- data/templates/test/environment.txt.erb +1 -0
- data/templates/test/inline.txt.erb +11 -0
- data/templates/test/inspections.txt.erb +19 -0
- data/templates/test/set1/_sub1.txt.erb +12 -0
- data/templates/test/set1/_sub4.txt.erb +1 -0
- data/templates/test/set1/_sub5.txt.erb +1 -0
- data/templates/test/set1/main.txt.erb +53 -0
- data/templates/test/set1/sub_dir/_sub2.txt.erb +20 -0
- data/templates/test/set1/sub_dir/_sub3.txt.erb +12 -0
- data/templates/test/set1/sub_dir/main2.txt.erb +4 -0
- data/templates/test/set2/template_with_no_erb_1.txt +9 -0
- data/templates/test/set2/template_with_no_erb_2.txt +9 -0
- data/templates/test/set3/_layout.html.erb +4 -0
- data/templates/test/set3/content.html.erb +6 -0
- data/templates/time/filter.rb.erb +15 -0
- data/templates/time/rules.rb.erb +45 -0
- metadata +639 -5
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
require 'active_support/concern'
|
|
2
|
+
|
|
3
|
+
module Origen
|
|
4
|
+
module Tester
|
|
5
|
+
class Doc
|
|
6
|
+
module Generator
|
|
7
|
+
extend ActiveSupport::Concern
|
|
8
|
+
|
|
9
|
+
autoload :Test, 'origen/tester/doc/generator/test'
|
|
10
|
+
autoload :TestGroup, 'origen/tester/doc/generator/test_group'
|
|
11
|
+
autoload :Tests, 'origen/tester/doc/generator/tests'
|
|
12
|
+
autoload :Flow, 'origen/tester/doc/generator/flow'
|
|
13
|
+
autoload :FlowLine, 'origen/tester/doc/generator/flow_line'
|
|
14
|
+
autoload :Placeholder, 'origen/tester/generator/placeholder'
|
|
15
|
+
|
|
16
|
+
included do
|
|
17
|
+
include Origen::Tester::Interface # adds the interface helpers/Origen hook-up
|
|
18
|
+
include Origen::Tester::Generator::FlowControlAPI::Interface
|
|
19
|
+
PLATFORM = Origen::Tester::Doc
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Returns the current flow (as defined by the name of the current top
|
|
23
|
+
# level flow source file).
|
|
24
|
+
#
|
|
25
|
+
# Pass in a filename argument to have a specific flow returned instead.
|
|
26
|
+
#
|
|
27
|
+
# If the flow does not exist yet it will be created.
|
|
28
|
+
def flow(filename = nil)
|
|
29
|
+
unless filename
|
|
30
|
+
if Origen.file_handler.current_file
|
|
31
|
+
filename = Origen.file_handler.current_file.basename('.rb').to_s
|
|
32
|
+
else
|
|
33
|
+
filename = 'anonymous'
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
f = filename.to_sym
|
|
37
|
+
return flows[f] if flows[f]
|
|
38
|
+
p = Flow.new
|
|
39
|
+
p.inhibit_output if Origen.interface.resources_mode?
|
|
40
|
+
p.filename = f
|
|
41
|
+
flows[f] = p
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# @api private
|
|
45
|
+
def at_flow_start
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# @api private
|
|
49
|
+
def at_run_start
|
|
50
|
+
flow.at_run_start
|
|
51
|
+
@@tests = nil
|
|
52
|
+
@@flows = nil
|
|
53
|
+
end
|
|
54
|
+
alias_method :reset_globals, :at_run_start
|
|
55
|
+
|
|
56
|
+
# Returns a container for all generated tests.
|
|
57
|
+
def tests
|
|
58
|
+
@@tests ||= Tests.new
|
|
59
|
+
end
|
|
60
|
+
alias_method :test_instances, :tests
|
|
61
|
+
|
|
62
|
+
# Returns a hash containing all flows
|
|
63
|
+
def flows
|
|
64
|
+
@@flows ||= {}
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Returns an array containing all sheet generators where a sheet generator is a flow,
|
|
68
|
+
# test instance, patset or pat group sheet.
|
|
69
|
+
# All Origen program generators must implement this method
|
|
70
|
+
def sheet_generators # :nodoc:
|
|
71
|
+
g = []
|
|
72
|
+
[flows].each do |sheets|
|
|
73
|
+
sheets.each do |_name, sheet|
|
|
74
|
+
g << sheet
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
g
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Returns an array containing all flow generators.
|
|
81
|
+
# All Origen program generators must implement this method
|
|
82
|
+
def flow_generators
|
|
83
|
+
g = []
|
|
84
|
+
flows.each do |_name, sheet|
|
|
85
|
+
g << sheet
|
|
86
|
+
end
|
|
87
|
+
g
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# The source of all program files is passed in here before executing.
|
|
91
|
+
# This will replace all comments with a method call containing the comment so that
|
|
92
|
+
# they can be captured.
|
|
93
|
+
def filter_source(source) # :nodoc:
|
|
94
|
+
src = ''
|
|
95
|
+
source.split(/\r?\n/).each do |line|
|
|
96
|
+
if line !~ /^\s*#-/ && line =~ /^\s*#(.*)/
|
|
97
|
+
comment = Regexp.last_match[1].gsub("'", "\\\\'")
|
|
98
|
+
src << "Origen.interface.doc_comments_capture('#{comment}')\n"
|
|
99
|
+
else
|
|
100
|
+
src << "#{line}\n"
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
src
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def doc_comments_capture(comment)
|
|
107
|
+
doc_comments << "#{comment}"
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def doc_comments
|
|
111
|
+
@doc_comments ||= []
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def doc_comments_consume
|
|
115
|
+
c = doc_comments
|
|
116
|
+
doc_comments_discard
|
|
117
|
+
c
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def doc_comments_discard
|
|
121
|
+
@doc_comments = []
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
module Origen
|
|
2
|
+
module Tester
|
|
3
|
+
class Doc
|
|
4
|
+
# Class representing a program model, provides an API to iterate
|
|
5
|
+
# on the flow based on context (e.g. which job).
|
|
6
|
+
class Model
|
|
7
|
+
attr_accessor :flows, :target
|
|
8
|
+
|
|
9
|
+
def initialize
|
|
10
|
+
@flows = {}
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Iterates through each line in the given flow returning a hash for each
|
|
14
|
+
# line with the following structure:
|
|
15
|
+
#
|
|
16
|
+
# {
|
|
17
|
+
# :type => Symbol, # Type of flow line
|
|
18
|
+
# :description => [], # Array of strings
|
|
19
|
+
# :instance => [{}], # Array of attributes hashes (each one represents an individual test instance)
|
|
20
|
+
# :flow => {}, # Hash of attributes
|
|
21
|
+
# :context => {}, # Hash of attributes
|
|
22
|
+
# }
|
|
23
|
+
#
|
|
24
|
+
# In all cases if an item is missing then it will be replaced by an empty
|
|
25
|
+
# array or hash as appropriate so that the caller does not need to worry
|
|
26
|
+
# about this.
|
|
27
|
+
#
|
|
28
|
+
# Supply the name of the flow(s) to consider, if the flows argument is left
|
|
29
|
+
# out then all lines in all flows will be returned.
|
|
30
|
+
#
|
|
31
|
+
# A context option can be supplied to only return the tests for which the given
|
|
32
|
+
# context is true.
|
|
33
|
+
#
|
|
34
|
+
# puts "The following tests run at FR:"
|
|
35
|
+
# program_model.each_in_flow(:ft_flow, :context => { :job => "FR" }) do |line|
|
|
36
|
+
# puts " #{line[:flow][:name]}"
|
|
37
|
+
# end
|
|
38
|
+
def each_in_flow(flows = nil, options = {})
|
|
39
|
+
if flows.is_a?(Hash)
|
|
40
|
+
options = flows
|
|
41
|
+
flows = nil
|
|
42
|
+
end
|
|
43
|
+
unless flows
|
|
44
|
+
flows = self.flows.keys
|
|
45
|
+
end
|
|
46
|
+
[flows].flatten.each do |flow|
|
|
47
|
+
@flows[flow.to_sym].each do |test|
|
|
48
|
+
test = format_test(test)
|
|
49
|
+
if valid_in_context?(test, options[:context])
|
|
50
|
+
yield test
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
nil
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Searches the given flows to find dependents of the given test id. The dependents
|
|
58
|
+
# are returned in arrays grouped by context:
|
|
59
|
+
#
|
|
60
|
+
# {
|
|
61
|
+
# :if_failed => [],
|
|
62
|
+
# :if_passed => [],
|
|
63
|
+
# :if_ran => [],
|
|
64
|
+
# :unless_ran => [],
|
|
65
|
+
# }
|
|
66
|
+
#
|
|
67
|
+
# Each test will have the same format as described in #each_in_flow.
|
|
68
|
+
#
|
|
69
|
+
# If no dependents are found an empty hash is returned.
|
|
70
|
+
def dependents_of(id, flows, options = {})
|
|
71
|
+
d = {}
|
|
72
|
+
each_in_flow(flows, options) do |test|
|
|
73
|
+
test[:context].each do |key, val|
|
|
74
|
+
if val == id
|
|
75
|
+
d[key] ||= []
|
|
76
|
+
d[key] << test
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
d
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Search for the given test id in the given flows.
|
|
84
|
+
# Returns nil if not found.
|
|
85
|
+
def find_by_id(id, flows, options = {})
|
|
86
|
+
each_in_flow(flows, options) do |test|
|
|
87
|
+
return test if test[:flow][:id] == id
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Returns true if the given tests id valid under the given context
|
|
92
|
+
# (currently only tests for job matching)
|
|
93
|
+
def valid_in_context?(test, context = nil)
|
|
94
|
+
if context && context[:job] && test[:context]
|
|
95
|
+
if test[:context][:if_jobs]
|
|
96
|
+
test[:context][:if_jobs].include?(context[:job])
|
|
97
|
+
elsif test[:context][:unless_jobs]
|
|
98
|
+
!test[:context][:unless_jobs].include?(context[:job])
|
|
99
|
+
else
|
|
100
|
+
true
|
|
101
|
+
end
|
|
102
|
+
else
|
|
103
|
+
true
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# @api private
|
|
108
|
+
def format_test(test, _options = {})
|
|
109
|
+
{
|
|
110
|
+
type: test[:type] ? test[:type].to_sym : :unknown,
|
|
111
|
+
description: test[:description] || [],
|
|
112
|
+
instance: build_instance(test),
|
|
113
|
+
flow: test[:flow] ? test[:flow][:attributes] || {} : {},
|
|
114
|
+
context: test[:flow] ? test[:flow][:context] || {} : {}
|
|
115
|
+
}
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# @api private
|
|
119
|
+
def build_instance(test)
|
|
120
|
+
if test[:instance]
|
|
121
|
+
if test[:instance][:group]
|
|
122
|
+
test[:instance][:group].map { |g| g[:attributes] || {} }
|
|
123
|
+
else
|
|
124
|
+
[test[:instance][:attributes] || {}]
|
|
125
|
+
end
|
|
126
|
+
else
|
|
127
|
+
[{}]
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# YAML likes strings for keys, we don't, so make sure all keys are symbols
|
|
132
|
+
# when receiving a new flow
|
|
133
|
+
# @api private
|
|
134
|
+
def add_flow(name, content)
|
|
135
|
+
@flows[name.to_sym] = content.map do |h|
|
|
136
|
+
h = symbolize_keys h
|
|
137
|
+
if h[:instance] && h[:instance][:group]
|
|
138
|
+
h[:instance][:group] = h[:instance][:group].map { |j| symbolize_keys j }
|
|
139
|
+
end
|
|
140
|
+
h
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
# @api private
|
|
145
|
+
def symbolize_keys(hash)
|
|
146
|
+
hash.reduce({}) do |result, (key, value)|
|
|
147
|
+
new_key = case key
|
|
148
|
+
when String then key.to_sym
|
|
149
|
+
else key
|
|
150
|
+
end
|
|
151
|
+
new_value = case value
|
|
152
|
+
when Hash then symbolize_keys(value)
|
|
153
|
+
else value
|
|
154
|
+
end
|
|
155
|
+
result[new_key] = new_value
|
|
156
|
+
result
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
end
|