From ff6115247eb1d4e971ea44c1f2b1133700836a19 Mon Sep 17 00:00:00 2001 From: Petr Korolev Date: Wed, 10 Jun 2015 13:27:27 +0300 Subject: [PATCH] Move logging to separate class, disable logging during test execution. --- github_changelog_generator.gemspec | 7 +++-- lib/CHANGELOG.md | 16 ---------- lib/github_changelog_generator.rb | 1 + lib/github_changelog_generator/fetcher.rb | 34 +++++++++------------ lib/github_changelog_generator/helper.rb | 37 +++++++++++++++++++++++ lib/github_changelog_generator/parser.rb | 4 +-- spec/spec_helper.rb | 4 +++ 7 files changed, 62 insertions(+), 41 deletions(-) create mode 100644 lib/github_changelog_generator/helper.rb diff --git a/github_changelog_generator.gemspec b/github_changelog_generator.gemspec index ff4c3cc..6f4c59d 100644 --- a/github_changelog_generator.gemspec +++ b/github_changelog_generator.gemspec @@ -23,9 +23,10 @@ Gem::Specification.new do |spec| spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ["lib"] - spec.add_development_dependency "bundler", "~> 1.7" - spec.add_development_dependency "rake", "~> 10.0" - spec.add_runtime_dependency("github_api", ["~> 0.12"]) spec.add_runtime_dependency("colorize", ["~> 0.7"]) + + # Development only + spec.add_development_dependency "bundler", "~> 1.7" + spec.add_development_dependency "rake", "~> 10.0" end diff --git a/lib/CHANGELOG.md b/lib/CHANGELOG.md index 3c6e8bd..085d363 100644 --- a/lib/CHANGELOG.md +++ b/lib/CHANGELOG.md @@ -2,8 +2,6 @@ ## [0.0.4](https://github.com/skywinder/changelog_test/tree/0.0.4) (2015-05-22) -[Full Changelog](https://github.com/skywinder/changelog_test/compare/v0.0.3...0.0.4) - **Closed issues:** - Test issue, that should appear in 0.0.4 [\#3](https://github.com/skywinder/changelog_test/issues/3) @@ -12,24 +10,10 @@ - Add automatically generated change log file. [\#5](https://github.com/skywinder/changelog_test/pull/5) ([skywinder](https://github.com/skywinder)) -## [v0.0.3](https://github.com/skywinder/changelog_test/tree/v0.0.3) (2015-03-04) - -[Full Changelog](https://github.com/skywinder/changelog_test/compare/v0.0.2...v0.0.3) - -**Merged pull requests:** - - fix \#3. hotfix. Should appear in v0.0.3 [\#4](https://github.com/skywinder/changelog_test/pull/4) ([skywinder](https://github.com/skywinder)) -## [v0.0.2](https://github.com/skywinder/changelog_test/tree/v0.0.2) (2015-03-04) - -[Full Changelog](https://github.com/skywinder/changelog_test/compare/v0.0.1...v0.0.2) - -**Merged pull requests:** - - Here is a test hotfix should appear in v.0.0.2 [\#2](https://github.com/skywinder/changelog_test/pull/2) ([skywinder](https://github.com/skywinder)) -## [v0.0.1](https://github.com/skywinder/changelog_test/tree/v0.0.1) (2015-03-02) - \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* \ No newline at end of file diff --git a/lib/github_changelog_generator.rb b/lib/github_changelog_generator.rb index c35db79..3b1e60f 100755 --- a/lib/github_changelog_generator.rb +++ b/lib/github_changelog_generator.rb @@ -5,6 +5,7 @@ require "json" require "colorize" require "benchmark" +require_relative "github_changelog_generator/helper" require_relative "github_changelog_generator/parser" require_relative "github_changelog_generator/generator/generator" require_relative "github_changelog_generator/version" diff --git a/lib/github_changelog_generator/fetcher.rb b/lib/github_changelog_generator/fetcher.rb index 5fb3c57..8cb0553 100644 --- a/lib/github_changelog_generator/fetcher.rb +++ b/lib/github_changelog_generator/fetcher.rb @@ -1,4 +1,3 @@ -require "logger" module GitHubChangelogGenerator # A Fetcher responsible for all requests to GitHub and all basic manipulation with related data @@ -6,6 +5,7 @@ module GitHubChangelogGenerator # # Example: # fetcher = GitHubChangelogGenerator::Fetcher.new options + class Fetcher PER_PAGE_NUMBER = 30 CHANGELOG_GITHUB_TOKEN = "CHANGELOG_GITHUB_TOKEN" @@ -16,12 +16,6 @@ module GitHubChangelogGenerator def initialize(options = {}) @options = options || {} - - @logger = Logger.new(STDOUT) - @logger.formatter = proc do |_severity, _datetime, _progname, msg| - "#{msg}\n" - end - @user = @options[:user] @project = @options[:project] @github_token = fetch_github_token @@ -41,7 +35,7 @@ module GitHubChangelogGenerator def fetch_github_token env_var = @options[:token] ? @options[:token] : (ENV.fetch CHANGELOG_GITHUB_TOKEN, nil) - @logger.warn NO_TOKEN_PROVIDED.yellow unless env_var + Helper.log.warn NO_TOKEN_PROVIDED.yellow unless env_var env_var end @@ -62,11 +56,11 @@ module GitHubChangelogGenerator begin value = yield rescue Github::Error::Unauthorized => e - @logger.error e.body.red + Helper.log.error e.body.red abort "Error: wrong GitHub token" rescue Github::Error::Forbidden => e - @logger.warn e.body.red - @logger.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow + Helper.log.warn e.body.red + Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow end value end @@ -83,10 +77,10 @@ module GitHubChangelogGenerator print_empty_line if tags.count == 0 - @logger.warn "Warning: Can't find any tags in repo.\ + Helper.log.warn "Warning: Can't find any tags in repo.\ Make sure, that you push tags to remote repo via 'git push --tags'".yellow else - @logger.info "Found #{tags.count} tags" + Helper.log.info "Found #{tags.count} tags" end end @@ -112,10 +106,10 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow break if @options[:max_issues] && issues.length >= @options[:max_issues] end print_empty_line - @logger.info "Received issues: #{issues.count}" + Helper.log.info "Received issues: #{issues.count}" rescue - @logger.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow + Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow end # separate arrays of issues and pull requests: @@ -140,10 +134,10 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow end print_empty_line rescue - @logger.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow + Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow end - @logger.info "Fetching merged dates: #{pull_requests.count}" + Helper.log.info "Fetching merged dates: #{pull_requests.count}" pull_requests end @@ -170,7 +164,7 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow repo: @options[:project], issue_number: issue["number"] rescue - @logger.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow + Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow end issue[:events] = obj.body print_in_same_line("Fetching events for issues and PR: #{i + 1}/#{issues.count}") @@ -184,7 +178,7 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow # to clear line from prev print print_empty_line - @logger.info "Fetching events for issues and PR: #{i}" + Helper.log.info "Fetching events for issues and PR: #{i}" end # Try to find tag date in local hash. @@ -203,7 +197,7 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow @options[:project], tag_name["commit"]["sha"] rescue - @logger.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow + Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow end time_string = github_git_data_commits_get["committer"]["date"] @tag_times_hash[tag_name["name"]] = Time.parse(time_string) diff --git a/lib/github_changelog_generator/helper.rb b/lib/github_changelog_generator/helper.rb new file mode 100644 index 0000000..7c13407 --- /dev/null +++ b/lib/github_changelog_generator/helper.rb @@ -0,0 +1,37 @@ +require "logger" +module GitHubChangelogGenerator + module Helper + # @return true if the currently running program is a unit test + def self.test? + defined?SpecHelper + end + + if test? + @log ||= Logger.new(nil) # don't show any logs when running tests + else + @log ||= Logger.new(STDOUT) + end + @log.formatter = proc do |severity, _datetime, _progname, msg| + string = "#{msg}\n" + + if severity == "DEBUG" + string = string.magenta + elsif severity == "INFO" + string = string.white + elsif severity == "WARN" + string = string.yellow + elsif severity == "ERROR" + string = string.red + elsif severity == "FATAL" + string = string.red.bold + end + + string + end + + # Logging happens using this method + class << self + attr_reader :log + end + end +end diff --git a/lib/github_changelog_generator/parser.rb b/lib/github_changelog_generator/parser.rb index 683b294..892a5ad 100644 --- a/lib/github_changelog_generator/parser.rb +++ b/lib/github_changelog_generator/parser.rb @@ -2,7 +2,7 @@ require "optparse" require "pp" require_relative "version" - +require_relative "helper" module GitHubChangelogGenerator class Parser # parse options with optparse @@ -21,7 +21,7 @@ module GitHubChangelogGenerator end if options[:verbose] - puts "Performing task with options:" + Helper.log.info "Performing task with options:" pp options puts "" end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index dccfbf0..5c4749d 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -19,6 +19,10 @@ require "codeclimate-test-reporter" require "simplecov" require "coveralls" +# This module is only used to check the environment is currently a testing env +module SpecHelper +end + SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[ Coveralls::SimpleCov::Formatter, SimpleCov::Formatter::HTMLFormatter,