From 191e49511b83dd17e32602de74f3ea7769a02c3a Mon Sep 17 00:00:00 2001 From: Gautham Goli Date: Sun, 25 Mar 2018 13:18:23 +0530 Subject: [PATCH] tests: Use Parser to parse args --- Library/Homebrew/dev-cmd/tests.rb | 27 +++++++++++++++++++-------- docs/Manpage.md | 2 +- manpages/brew.1 | 2 +- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/Library/Homebrew/dev-cmd/tests.rb b/Library/Homebrew/dev-cmd/tests.rb index db2a6d33ea..a1a6b7fc5b 100644 --- a/Library/Homebrew/dev-cmd/tests.rb +++ b/Library/Homebrew/dev-cmd/tests.rb @@ -1,4 +1,4 @@ -#: * `tests` [`--verbose`] [`--coverage`] [`--generic`] [`--no-compat`] [`--only=`[`:`]] [`--seed` ] [`--online`] [`--official-cmd-taps`]: +#: * `tests` [`--verbose`] [`--coverage`] [`--generic`] [`--no-compat`] [`--only=`[`:`]] [`--seed=`] [`--online`] [`--official-cmd-taps`]: #: Run Homebrew's unit and integration tests. If provided, #: `--only=` runs only _spec.rb, and `--seed` #: randomizes tests with the provided value instead of a random seed. @@ -15,6 +15,7 @@ #: If `--online` is passed, include tests that use the GitHub API and tests #: that use any of the taps for official external commands. +require "cli_parser" require "fileutils" require "tap" @@ -22,6 +23,16 @@ module Homebrew module_function def tests + args = Homebrew::CLI::Parser.new do + switch "--no-compat" + switch "--generic" + switch "-v", "--verbose" + switch "--coverage" + switch "--online" + flag "--only", required: true + flag "--seed", required: true + end.parse + HOMEBREW_LIBRARY_PATH.cd do ENV.delete("HOMEBREW_VERBOSE") ENV.delete("VERBOSE") @@ -29,16 +40,16 @@ module Homebrew ENV.delete("HOMEBREW_TEMP") ENV["HOMEBREW_NO_ANALYTICS_THIS_RUN"] = "1" ENV["HOMEBREW_DEVELOPER"] = "1" - ENV["HOMEBREW_NO_COMPAT"] = "1" if ARGV.include? "--no-compat" - ENV["HOMEBREW_TEST_GENERIC_OS"] = "1" if ARGV.include? "--generic" + ENV["HOMEBREW_NO_COMPAT"] = "1" if args.no_compat? + ENV["HOMEBREW_TEST_GENERIC_OS"] = "1" if args.generic? - if ARGV.include? "--online" + if args.online? ENV["HOMEBREW_TEST_ONLINE"] = "1" else ENV["HOMEBREW_NO_GITHUB_API"] = "1" end - if ARGV.include? "--coverage" + if args.coverage? ENV["HOMEBREW_TESTS_COVERAGE"] = "1" FileUtils.rm_f "test/coverage/.resultset.json" end @@ -58,8 +69,8 @@ module Homebrew parallel = true - files = if ARGV.value("only") - test_name, line = ARGV.value("only").split(":", 2) + files = if args.only + test_name, line = args.only.split(":", 2) if line.nil? Dir.glob("test/{#{test_name},#{test_name}/**/*}_spec.rb") @@ -84,7 +95,7 @@ module Homebrew # Generate seed ourselves and output later to avoid multiple different # seeds being output when running parallel tests. - seed = ARGV.include?("--seed") ? ARGV.next : rand(0xFFFF).to_i + seed = args.seed ? args.seed : rand(0xFFFF).to_i args = ["-I", HOMEBREW_LIBRARY_PATH/"test"] args += %W[ diff --git a/docs/Manpage.md b/docs/Manpage.md index 0ce63adfab..db6ff1cc7d 100644 --- a/docs/Manpage.md +++ b/docs/Manpage.md @@ -880,7 +880,7 @@ With `--verbose` or `-v`, many commands print extra debugging information. Note Example: `brew install jruby && brew test jruby` - * `tests` [`--verbose`] [`--coverage`] [`--generic`] [`--no-compat`] [`--only=``test_script`[`:``line_number`]] [`--seed` `seed`] [`--online`] [`--official-cmd-taps`]: + * `tests` [`--verbose`] [`--coverage`] [`--generic`] [`--no-compat`] [`--only=``test_script`[`:``line_number`]] [`--seed=``seed`] [`--online`] [`--official-cmd-taps`]: Run Homebrew's unit and integration tests. If provided, `--only=``test_script` runs only `test_script`_spec.rb, and `--seed` randomizes tests with the provided value instead of a random seed. diff --git a/manpages/brew.1 b/manpages/brew.1 index 20e51f6619..7bea0765f4 100644 --- a/manpages/brew.1 +++ b/manpages/brew.1 @@ -896,7 +896,7 @@ If \fB\-\-keep\-tmp\fR is passed, the temporary files created for the test are n Example: \fBbrew install jruby && brew test jruby\fR . .TP -\fBtests\fR [\fB\-\-verbose\fR] [\fB\-\-coverage\fR] [\fB\-\-generic\fR] [\fB\-\-no\-compat\fR] [\fB\-\-only=\fR\fItest_script\fR[\fB:\fR\fIline_number\fR]] [\fB\-\-seed\fR \fIseed\fR] [\fB\-\-online\fR] [\fB\-\-official\-cmd\-taps\fR] +\fBtests\fR [\fB\-\-verbose\fR] [\fB\-\-coverage\fR] [\fB\-\-generic\fR] [\fB\-\-no\-compat\fR] [\fB\-\-only=\fR\fItest_script\fR[\fB:\fR\fIline_number\fR]] [\fB\-\-seed=\fR\fIseed\fR] [\fB\-\-online\fR] [\fB\-\-official\-cmd\-taps\fR] Run Homebrew\'s unit and integration tests\. If provided, \fB\-\-only=\fR\fItest_script\fR runs only \fItest_script\fR_spec\.rb, and \fB\-\-seed\fR randomizes tests with the provided value instead of a random seed\. . .IP