class DeployDoc::TestPlan
Constants
- PHASES
Attributes
metadata[R]
required_env_vars[R]
steps_in_phases[R]
Public Class Methods
from_file(file_name)
click to toggle source
# File lib/deploy_doc/test_plan.rb, line 13 def self.from_file(file_name) content = File.read(file_name) self.from_str(content, file_name) end
from_str(content, file_name="<unknown file>")
click to toggle source
# File lib/deploy_doc/test_plan.rb, line 18 def self.from_str(content, file_name="<unknown file>") metadata = self.parse_metadata(content, file_name) if metadata["deployDoc"] != true raise DeployDoc::Error.new("Markdown file #{file_name} does not have a 'deployDoc:true' metadatum") end annotations = AnnotationParser.parse(content, file_name) required_env_vars = (annotations.select { |a| a.kind == "require-env" }).map { |a| a.params }.flatten phases = self.phases_from_annotations(annotations) TestPlan.new(metadata, required_env_vars, phases) end
new(metadata, required_env_vars, steps_in_phases)
click to toggle source
# File lib/deploy_doc/test_plan.rb, line 52 def initialize(metadata, required_env_vars, steps_in_phases) @metadata = metadata @required_env_vars = required_env_vars @steps_in_phases = steps_in_phases end
parse_metadata(content, file_name)
click to toggle source
# File lib/deploy_doc/test_plan.rb, line 31 def self.parse_metadata(content, file_name) metadata = content.split("---",3)[1] YAML.load(metadata) rescue raise Error.new("Could not parse metadata in #{file_name}") end
phases_from_annotations(annotations)
click to toggle source
# File lib/deploy_doc/test_plan.rb, line 38 def self.phases_from_annotations(annotations) phases = {} PHASES.each do |phase| phases[phase] = (annotations.select { |a| a.kind == phase }).map { |a| Step.new(a.source_name, a.line_span, a.content) } end phases end
Public Instance Methods
missing_env_vars()
click to toggle source
# File lib/deploy_doc/test_plan.rb, line 79 def missing_env_vars @required_env_vars.select { |e| ENV[e].nil? } end
to_json()
click to toggle source
# File lib/deploy_doc/test_plan.rb, line 83 def to_json json = {} PHASES.each do |phase_name| json[phase_name] = [] @steps_in_phases[phase_name].each do |step| json[phase_name].push({ line_span: step.line_span.inspect, shell: step.shell.strip }) end end JSON.pretty_generate(json) end
to_s()
click to toggle source
# File lib/deploy_doc/test_plan.rb, line 58 def to_s parts = [] parts << "Deployment test plan:" parts << "" parts << "Required environment parameters" @required_env_vars.each do |e| parts << " - #{e}" end PHASES.each do |phase| parts << "Steps in phase #{phase}:" @steps_in_phases[phase].each do |step| parts << "- #{step.source_name}:#{step.line_span.inspect}" parts << step.shell end end parts.join("\n") end