Class: Hiptest::CliOptionsChecker
- Inherits:
-
Object
- Object
- Hiptest::CliOptionsChecker
- Defined in:
- lib/hiptest-publisher/cli_options_checker.rb
Instance Attribute Summary collapse
-
#cli_options ⇒ Object
readonly
Returns the value of attribute cli_options.
-
#reporter ⇒ Object
readonly
Returns the value of attribute reporter.
Instance Method Summary collapse
- #check! ⇒ Object
-
#initialize(cli_options, reporter) ⇒ CliOptionsChecker
constructor
A new instance of CliOptionsChecker.
Constructor Details
#initialize(cli_options, reporter) ⇒ CliOptionsChecker
Returns a new instance of CliOptionsChecker.
9 10 11 12 |
# File 'lib/hiptest-publisher/cli_options_checker.rb', line 9 def initialize(, reporter) @cli_options = @reporter = reporter end |
Instance Attribute Details
#cli_options ⇒ Object (readonly)
Returns the value of attribute cli_options.
8 9 10 |
# File 'lib/hiptest-publisher/cli_options_checker.rb', line 8 def @cli_options end |
#reporter ⇒ Object (readonly)
Returns the value of attribute reporter.
8 9 10 |
# File 'lib/hiptest-publisher/cli_options_checker.rb', line 8 def reporter @reporter end |
Instance Method Details
#check! ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/hiptest-publisher/cli_options_checker.rb', line 14 def check! # ensure config file was readable if specified begin ParseConfig.new(.config) if present?(.config) rescue Errno::EACCES => err raise CliOptionError, "Error with --config: the file \"#{.config}\" does not exist or is not readable" end if .only == 'list' return end if push?() return end # secret token if absent?(.xml_file) if absent?(.token) raise CliOptionError, [ "Missing argument --token: you must specify project secret token with --token=<project-token>", "", "The project secret token can be found on Hiptest in the settings section, under", "'Publication settings'. It is a sequence of numbers uniquely identifying your", "project.", "", "Note that settings section is available only to administrators of the project.", ].join("\n") end unless numeric?(.token) raise CliOptionError, "Invalid format --token=\"#{@cli_options.token}\": the project secret token must be numeric" end end # output directory parent = first_existing_parent(.output_directory) if !parent.writable? if parent.realpath === Pathname.new(.output_directory).cleanpath raise CliOptionError, "Error with --output-directory: the directory \"#{@cli_options.output_directory}\" is not writable" else raise CliOptionError, "Error with --output-directory: the directory \"#{@cli_options.output_directory}\" can not be created because \"#{parent.realpath}\" is not writable" end elsif !parent.directory? raise CliOptionError, "Error with --output-directory: the file \"#{@cli_options.output_directory}\" is not a directory" end # actionwords signature file if .actionwords_diff? actionwords_signature_file = Pathname.new(.output_directory).join("actionwords_signature.yaml") if actionwords_signature_file.directory? raise CliOptionError, "Bad Action Words signature file: the file \"#{actionwords_signature_file.realpath}\" is a directory" elsif !actionwords_signature_file.exist? full_path = File.(.output_directory) raise CliOptionError, [ "Missing Action Words signature file: the file \"actionwords_signature.yaml\" could not be found in directory \"#{full_path}\"", "Use --actionwords-signature to generate the file \"#{full_path}/actionwords_signature.yaml\"", ].join("\n") end end # xml file if .xml_file if !File.readable?(.xml_file) raise CliOptionError, "Error with --xml-file: the file \"#{.xml_file}\" does not exist or is not readable" elsif !File.file?(.xml_file) raise CliOptionError, "Error with --xml-file: the file \"#{.xml_file}\" is not a regular file" end end # test run id if present?(.test_run_id) && !numeric?(.test_run_id) raise CliOptionError, "Invalid format --test-run-id=\"#{@cli_options.test_run_id}\": the test run id must be numeric" end # language and --only if present?(.language) begin language_config_parser = LanguageConfigParser.new() rescue ArgumentError => err raise CliOptionError, err. end if present?(.only) if language_config_parser.filtered_group_names != .groups_to_keep unknown_categories = .groups_to_keep - language_config_parser.group_names if unknown_categories.length == 1 = "the category #{formatted_categories(unknown_categories)} does not exist" else = "the categories #{formatted_categories(unknown_categories)} do not exist" end raise CliOptionError, "Error with --only: #{} for language #{.language_framework}. " + "Available categories are #{formatted_categories(language_config_parser.group_names)}." end end end end |