eac_redmine_base0 0.2.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: bbf8d188b27b35c40d52fe4448c6fcedd5029fa2c37be8e21cac0657e5758844
4
+ data.tar.gz: cb2b7e78f6bc86fe42c7d7f38dd05db320b80da1faddaf08037c705944df834a
5
+ SHA512:
6
+ metadata.gz: 47ce4ea9d7dd0393d8089460a16ae424ef3e7c75d6654b3a7993a000808aa393e0319631093ec6c97256c3710f011729219a674a0d7c5da71d15e4c77527b51c
7
+ data.tar.gz: a8927510fb2099705542542fb205f7777bd9403adead73d51eff224bacfa4275e5a26e00b2d02a711e0b5e902552f90a36ddea5e7d0d6de6f55fe4cb0117295b
data/init.rb ADDED
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'redmine'
4
+
5
+ require 'eac_redmine_base0/version'
6
+
7
+ Redmine::Plugin.register :eac_redmine_base0 do
8
+ name 'EacRedmineBase0'
9
+ author ::EacRedmineBase0::AUTHOR
10
+ description ::EacRedmineBase0::SUMMARY
11
+ version ::EacRedmineBase0::VERSION
12
+ end
13
+
14
+ Rails.configuration.to_prepare do
15
+ require 'eac_redmine_base0/maintained_plugins'
16
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'redmine/plugin'
4
+
5
+ module EacRedmineBase0
6
+ MAINTAINED_PLUGINS_NAMES = %w[
7
+ eac_redmine_base0 eac_redmine_usability notifyme redmine_avm redmine_events_manager
8
+ redmine_nonproject_modules redmine_plugins_helper redmine_tasks_schedulerredmine_with_git
9
+ ].freeze
10
+
11
+ class << self
12
+ def maintained_plugins
13
+ @maintained_plugins ||= ::Redmine::Plugin.registered_plugins.values.select do |plugin|
14
+ MAINTAINED_PLUGINS_NAMES.include?(plugin.id.to_s)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,108 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/result'
4
+ require 'eac_ruby_utils/console/speaker'
5
+ require 'eac_ruby_utils/envs'
6
+ require 'eac_ruby_utils/simple_cache'
7
+
8
+ module EacRedmineBase0
9
+ class PluginsTest
10
+ include ::EacRubyUtils::Console::Speaker
11
+
12
+ def run
13
+ @plugins = []
14
+ ::Redmine::Plugin.registered_plugins.values.each do |plugin|
15
+ check_plugin(plugin)
16
+ end
17
+ check_results
18
+ end
19
+
20
+ def check_plugin(plugin)
21
+ infom "Checking plugin \"#{plugin.id}\"..."
22
+ test_plugin = PluginTest.new(plugin)
23
+ test_plugin.test_result
24
+ infom "Plugin \"#{plugin.id}\" checked"
25
+ @plugins << test_plugin
26
+ results_banner
27
+ end
28
+
29
+ def results_banner
30
+ infom 'Plugins\' test results:'
31
+ @plugins.each do |plugin|
32
+ infov " * #{plugin.id}", plugin.test_result.label
33
+ end
34
+ end
35
+
36
+ def plugins_failed
37
+ @plugins.select { |plugin| plugin.test_result.error? }
38
+ end
39
+
40
+ def check_results
41
+ if plugins_failed.any?
42
+ fatal_error "Some test did not pass:\n" +
43
+ plugins_failed.map { |p| " * #{p.id} (Log: #{p.stdout_log})" }.join("\n")
44
+ else
45
+ success 'All tests passed'
46
+ end
47
+ end
48
+
49
+ class PluginTest < ::SimpleDelegator
50
+ include ::EacRubyUtils::SimpleCache
51
+
52
+ def initialize(plugin)
53
+ super(plugin)
54
+ end
55
+
56
+ def test_task_name
57
+ "#{id}:test"
58
+ end
59
+
60
+ def test_task?
61
+ ::Rake::Task.task_defined?(test_task_name)
62
+ end
63
+
64
+ def stderr_log
65
+ log_path('stderr')
66
+ end
67
+
68
+ def stdout_log
69
+ log_path('stdout')
70
+ end
71
+
72
+ def maintained?
73
+ ::EacRedmineBase0.maintained_plugins.any? { |plugin| plugin.id == id }
74
+ end
75
+
76
+ private
77
+
78
+ def log_path(suffix)
79
+ r = ::Rails.root.join('log', 'eac_redmine_base0', "#{id}_test_#{suffix}.log")
80
+ ::FileUtils.mkdir_p(::File.dirname(r))
81
+ r
82
+ end
83
+
84
+ def test_result_uncached
85
+ return ::Avm::Result.neutral('not maintained by E.A.C.') unless maintained?
86
+ return ::Avm::Result.neutral("task \"#{test_task_name}\" not found") unless test_task?
87
+
88
+ ::Avm::Result.success_or_error(
89
+ run_test ? 'success' : "failed (Log: #{stdout_log})",
90
+ run_test
91
+ )
92
+ end
93
+
94
+ def run_test_uncached
95
+ r = run_test_command.execute
96
+ ::File.write(stderr_log, r.fetch(:stderr))
97
+ ::File.write(stdout_log, r.fetch(:stdout))
98
+ r.fetch(:exit_code).zero?
99
+ end
100
+
101
+ def run_test_command
102
+ ::EacRubyUtils::Envs.local.command('bundle', 'exec', 'rake', test_task_name)
103
+ .envvar('RAILS_ENV', 'test')
104
+ .chdir(::Rails.root)
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRedmineBase0
4
+ AUTHOR = 'Eduardo Henrique Bogoni'
5
+ HOMEPAGE = 'https://github.com/esquilo-azul/eac_redmine_base0'
6
+ SUMMARY = 'E.A.C. base for Redmine.'
7
+ VERSION = '0.2.0'
8
+ end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRedmineBase0
4
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.unshift(::File.join(::File.dirname(__dir__)))
4
+ require 'eac_redmine_base0'
5
+
6
+ namespace :eac_redmine_base0 do
7
+ namespace :plugins do
8
+ desc 'Lists plugins maintained by E.A.C..'
9
+ task list: :environment do
10
+ ::EacRedmineBase0.maintained_plugins.each do |plugin|
11
+ ::Rails.logger.info("Plugin: #{plugin.name} (ID: #{plugin.id})")
12
+ end
13
+ end
14
+
15
+ desc 'Tests plugins maintained by E.A.C..'
16
+ task test: :environment do
17
+ ::EacRedmineBase0::PluginsTest.new.run
18
+ end
19
+ end
20
+
21
+ task plugins: 'plugins:list'
22
+ end
metadata ADDED
@@ -0,0 +1,90 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: eac_redmine_base0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - 0.2.0
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-08-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: avm-tools
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.9'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.9'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rubocop
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.74.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.74.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop-rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 2.2.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 2.2.1
55
+ description:
56
+ email:
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files: []
60
+ files:
61
+ - init.rb
62
+ - lib/eac_redmine_base0.rb
63
+ - lib/eac_redmine_base0/maintained_plugins.rb
64
+ - lib/eac_redmine_base0/plugins_test.rb
65
+ - lib/eac_redmine_base0/version.rb
66
+ - lib/tasks/eac_redmine_base0.rake
67
+ homepage: https://github.com/esquilo-azul/eac_redmine_base0
68
+ licenses: []
69
+ metadata: {}
70
+ post_install_message:
71
+ rdoc_options: []
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ requirements: []
85
+ rubyforge_project:
86
+ rubygems_version: 2.7.7
87
+ signing_key:
88
+ specification_version: 4
89
+ summary: E.A.C. base for Redmine.
90
+ test_files: []