├── assets └── stylesheets │ └── redmine_refresh.css ├── config └── locales │ ├── en.yml │ ├── pt.yml │ ├── pt-BR.yml │ ├── fr.yml │ ├── ru.yml │ └── zh.yml ├── app ├── overrides │ ├── issues │ │ └── index.rb │ └── my │ │ └── page.rb └── views │ └── redmine_refresh │ └── _refresher.html.erb ├── lib ├── redmine_refresh │ ├── hooks.rb │ ├── my_controller_patch.rb │ └── users_controller_patch.rb └── redmine_refresh.rb ├── init.rb ├── README.md ├── spec └── models │ └── redmine_refresh_spec.rb └── .github └── workflows ├── 6_0_7.yml.backup ├── 6_1_0.yml.backup ├── master.yml.backup ├── 6_0_7.yml ├── 6_1_0.yml └── master.yml /assets/stylesheets/redmine_refresh.css: -------------------------------------------------------------------------------- 1 | #refresher_seconds::before { 2 | content: "\00a0"; 3 | } 4 | -------------------------------------------------------------------------------- /config/locales/en.yml: -------------------------------------------------------------------------------- 1 | en: 2 | refresh_in: "Refresh in %{value}s" 3 | automatic_refresh: "Automatic refresh" 4 | label_refresh_interval: "Refresh in" 5 | label_refresh: "Automatic refresh task lists" 6 | -------------------------------------------------------------------------------- /config/locales/pt.yml: -------------------------------------------------------------------------------- 1 | pt: 2 | refresh_in: "Atualizando em %{value}s" 3 | automatic_refresh: "Refresh automático" 4 | label_refresh_interval: "Atualizando em" 5 | label_refresh: "Atualizar as tarefas automáticamente" 6 | -------------------------------------------------------------------------------- /config/locales/pt-BR.yml: -------------------------------------------------------------------------------- 1 | pt-BR: 2 | refresh_in: "Atualizando em %{value}s" 3 | automatic_refresh: "Refresh automático" 4 | label_refresh_interval: "Atualizando em" 5 | label_refresh: "Atualizar as tarefas automáticamente" 6 | -------------------------------------------------------------------------------- /config/locales/fr.yml: -------------------------------------------------------------------------------- 1 | fr: 2 | refresh_in: "Actualisation dans %{value}s" 3 | automatic_refresh: "Actualisation automatique" 4 | label_refresh_interval: "Intervalle en secondes" 5 | label_refresh: "Rafraîchissement automatique" 6 | -------------------------------------------------------------------------------- /config/locales/ru.yml: -------------------------------------------------------------------------------- 1 | ru: 2 | refresh_in: "Обновление через %{value}с" 3 | automatic_refresh: "Атоматическое обновление" 4 | label_refresh_interval: "Периодичность обновления" 5 | label_refresh: "Автообновление списков задач" 6 | 7 | -------------------------------------------------------------------------------- /config/locales/zh.yml: -------------------------------------------------------------------------------- 1 | zh: 2 | refresh_in: "刷新频率 %{value}s" 3 | automatic_refresh: "自动刷新" 4 | label_refresh_interval: "刷新剩余时间" 5 | label_refresh: "自动刷新任务列表" 6 | 7 | # Simplified Chinese strings go here for Rails i18n 8 | # Author: Steven.W 9 | # Based on file: en.yml 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/overrides/issues/index.rb: -------------------------------------------------------------------------------- 1 | Deface::Override.new :virtual_path => 'issues/index', 2 | :original => '402b3096154c5706049c1de2f9fedeaa63f6b618', 3 | :name => 'add-refresh-link-to-issues-list', 4 | :insert_top => 'div.contextual', 5 | :partial => 'redmine_refresh/refresher' 6 | -------------------------------------------------------------------------------- /lib/redmine_refresh/hooks.rb: -------------------------------------------------------------------------------- 1 | module RedmineRefresh 2 | 3 | class Hooks < Redmine::Hook::ViewListener 4 | def view_layouts_base_html_head(context) 5 | stylesheet_link_tag("redmine_refresh", :plugin => "redmine_refresh") 6 | end 7 | end 8 | 9 | class ModelHook < Redmine::Hook::Listener 10 | def after_plugins_loaded(_context = {}) 11 | require_relative '../redmine_refresh' 12 | end 13 | end 14 | 15 | end 16 | -------------------------------------------------------------------------------- /init.rb: -------------------------------------------------------------------------------- 1 | require 'redmine' 2 | require_relative 'lib/redmine_refresh/hooks' 3 | 4 | Redmine::Plugin.register :redmine_refresh do 5 | name 'Redmine Refresh plugin' 6 | description 'This is a plugin for Redmine' 7 | url 'https://github.com/jbbarth/redmine_refresh' 8 | author 'Jean-Baptiste BARTH' 9 | author_url 'mailto:jeanbaptiste.barth@gmail.com' 10 | version '0.2.0' 11 | requires_redmine :version_or_higher => '2.1.0' 12 | requires_redmine_plugin :redmine_base_rspec, :version_or_higher => '0.0.4' if Rails.env.test? 13 | requires_redmine_plugin :redmine_base_deface, :version_or_higher => '0.0.1' 14 | #settings :default => { }, :partial => 'settings/sudo_settings' 15 | end 16 | -------------------------------------------------------------------------------- /lib/redmine_refresh/my_controller_patch.rb: -------------------------------------------------------------------------------- 1 | require_dependency 'my_controller' 2 | 3 | module RedmineRefresh 4 | module MyControllerPatch 5 | def self.included(base) # :nodoc: 6 | base.extend(ClassMethods) 7 | base.send(:include, InstanceMethods) 8 | 9 | base.class_eval do 10 | after_action :save_helpdesk_preferences, :only => [:account] 11 | end 12 | end 13 | 14 | module ClassMethods 15 | end 16 | 17 | module InstanceMethods 18 | def save_helpdesk_preferences 19 | if request.put? && flash[:notice] == l(:notice_account_updated) 20 | User.current.pref[:refresh_interval] = ( params[:refresh] && params[:refresh][:refresh_interval] ? params[:refresh][:refresh_interval] : 120 ).to_i 21 | end 22 | User.current.pref.save 23 | end 24 | end 25 | end 26 | end 27 | 28 | MyController.send(:include, RedmineRefresh::MyControllerPatch) unless MyController.included_modules.include? RedmineRefresh::MyControllerPatch 29 | -------------------------------------------------------------------------------- /lib/redmine_refresh/users_controller_patch.rb: -------------------------------------------------------------------------------- 1 | require_dependency 'users_controller' 2 | 3 | module RedmineRefresh 4 | module UsersControllerPatch 5 | def self.included(base) # :nodoc: 6 | base.extend(ClassMethods) 7 | base.send(:include, InstanceMethods) 8 | 9 | base.class_eval do 10 | after_action :save_helpdesk_preferences 11 | end 12 | end 13 | 14 | module ClassMethods 15 | end 16 | 17 | module InstanceMethods 18 | def save_helpdesk_preferences 19 | if @user.present? && request.method == "POST" && flash[:notice] == l(:notice_successful_update) 20 | @user.pref[:refresh_interval] = (request.params[:refresh] && request.params[:refresh][:refresh_interval] ? request.params[:refresh][:refresh_interval] : '120').to_i 21 | @user.pref.save 22 | end 23 | end 24 | end 25 | end 26 | end 27 | 28 | UsersController.send(:include, RedmineRefresh::UsersControllerPatch) unless UsersController.included_modules.include? RedmineRefresh::UsersControllerPatch 29 | -------------------------------------------------------------------------------- /app/views/redmine_refresh/_refresher.html.erb: -------------------------------------------------------------------------------- 1 | <% 2 | interval = RedmineRefresh.refresh_interval_for(User.current, params[:refresh]) 3 | should_be_refreshed = RedmineRefresh.refresh_status_for_controller(User.current, controller.controller_name) 4 | should_be_refreshed ||= params[:refresh].present? 5 | should_be_refreshed = false if params[:norefresh] 6 | RedmineRefresh.save_refresh_status_for_controller(User.current, controller.controller_name, should_be_refreshed) 7 | %> 8 | 44 | 45 | <% opts = {:class => 'icon icon-reload', :id => 'refresher'} %> 46 | <% if should_be_refreshed %> 47 | <%= link_to_function l(:refresh_in, content_tag(:span, interval, :id => 'refresher_seconds')).html_safe, 48 | "startCountDown('#{url_for(request.params.merge(:norefresh => 1).except(:refresh))}')", opts %> 49 | <% else %> 50 | <%= link_to_function l(:automatic_refresh), "stopCountDown('#{url_for(request.params.merge(:refresh => interval).except(:norefresh))}')", opts %> 51 | <% end %> 52 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Redmine Refresh plugin 2 | ====================== 3 | 4 | This plugin adds an automatic refresh on "Issues" lists and "My Page". 5 | 6 | Screenshot 7 | ---------- 8 | 9 | With this plugin you'll have a clickable link on these pages for enabling/disabling automatic refresh. Here's an example on an Issues list: 10 | 11 |  12 | 13 | Install 14 | ------- 15 | 16 | This plugin is compatible with Redmine 2.1.x and 2.2.x, and should be compatible with future versions. 17 | 18 | You can first take a look at general instructions for plugins [here](http://www.redmine.org/wiki/redmine/Plugins). 19 | 20 | Then : 21 | * install the redmine_base_deface plugin (see [here](https://github.com/jbbarth/redmine_base_deface)) 22 | * clone this repository in your "plugins/" directory ; if you have a doubt you put it at the good level, you can check you have a plugins/redmine_refresh/init.rb file 23 | * install dependencies (gems) by running `bundle install` from the root of your redmine instance 24 | * restart your Redmine instance (depends on how you host it) 25 | 26 | Test status 27 | ------------ 28 | 29 | |Plugin branch| Redmine Version | Test Status | 30 | |-------------|-----------------|-------------------| 31 | |master | 6.0.7 | [![6.0.7][1]][5] | 32 | |master | 6.1.0 | [![6.1.0][2]][5] | 33 | |master | master | [![master][4]][5] | 34 | 35 | [1]: https://github.com/jbbarth/redmine_refresh/actions/workflows/6_0_7.yml/badge.svg 36 | [2]: https://github.com/jbbarth/redmine_refresh/actions/workflows/6_1_0.yml/badge.svg 37 | [3]: https://github.com/jbbarth/redmine_refresh/actions/workflows/master.yml/badge.svg 38 | [5]: https://github.com/jbbarth/redmine_refresh/actions 39 | 40 | Contribute 41 | ---------- 42 | 43 | If you like this plugin, it's a good idea to contribute : 44 | * by giving feed back on what is cool, what should be improved 45 | * by reporting bugs: you can open issues directly on GitHub 46 | * by forking it and sending pull request if you have a patch or a feature you want to implement 47 | -------------------------------------------------------------------------------- /app/overrides/my/page.rb: -------------------------------------------------------------------------------- 1 | Deface::Override.new :virtual_path => 'my/page', 2 | :original => '7b02b984dabd756a62959aeea9c05db9d378bf7a', 3 | :name => 'add-refresh-link-to-my-page', 4 | :insert_top => 'div.contextual', 5 | :partial => 'redmine_refresh/refresher' 6 | 7 | Deface::Override.new :virtual_path => 'my/custom_page', 8 | :original => '7b02b984dabd756a62959aeea9c05db9d378bf7a', 9 | :name => 'add-refresh-link-to-my-custom-page', 10 | :insert_top => 'div.contextual', 11 | :partial => 'redmine_refresh/refresher' 12 | 13 | # Replace javascript_tag helper with script tag so the content is NOT modified by Deface 14 | Deface::Override.new :virtual_path => 'my/page', 15 | :name => 'replace_javascript_tag', 16 | :replace => 'erb[loud]:contains("javascript_tag")', 17 | :text => < 19 | // Code copied from standard my/page without any change 20 | $(document).ready(function(){ 21 | $('#block-select').val(''); 22 | $('.block-receiver').sortable({ 23 | connectWith: '.block-receiver', 24 | tolerance: 'pointer', 25 | handle: '.sort-handle', 26 | start: function(event, ui){$(this).parent().addClass('dragging');}, 27 | stop: function(event, ui){$(this).parent().removeClass('dragging');}, 28 | update: function(event, ui){ 29 | // trigger the call on the list that receives the block only 30 | if ($(this).find(ui.item).length > 0) { 31 | $.ajax({ 32 | url: "<%= escape_javascript url_for(:action => "order_blocks") %>", 33 | type: 'post', 34 | data: { 35 | 'group': $(this).attr('id').replace(/^list-/, ''), 36 | 'blocks': $.map($(this).children(), function(el){return $(el).attr('id').replace(/^block-/, '');}) 37 | } 38 | }); 39 | } 40 | } 41 | }); 42 | }); 43 | 44 | <% if false %> 45 | STANDARD_CODE_WITHOUT_JAVASCRIPT_TAG_HELPER 46 | -------------------------------------------------------------------------------- /lib/redmine_refresh.rb: -------------------------------------------------------------------------------- 1 | require_relative 'redmine_refresh/my_controller_patch' 2 | require_relative 'redmine_refresh/users_controller_patch' 3 | 4 | module RedmineRefresh 5 | 6 | extend self #... so we can call RedmineRefresh. directly 7 | 8 | DEFAULT_INTERVAL = 120 9 | 10 | def refresh_interval_for(user, refresh_param = nil) 11 | interval = DEFAULT_INTERVAL 12 | user_interval = user.pref[:refresh_interval].to_i 13 | #if parameter is provided 14 | if refresh_param.to_i >= 10 15 | interval = refresh_param.to_i 16 | #save it if modified 17 | if interval != user_interval 18 | user.pref[:refresh_interval] = interval 19 | user.pref.save 20 | end 21 | #if not, get the user's 22 | elsif user_interval >= 10 23 | interval = user_interval 24 | end 25 | interval 26 | end 27 | 28 | #if should_be_refreshed != RedmineRefresh.refresh_status_for_controller(controller.controller_name) 29 | def refresh_status_for_controller(user, controller = nil) 30 | controller = controller.to_s 31 | controller.present? && user.pref[:refresh_status].is_a?(Hash) && user.pref[:refresh_status][controller] 32 | end 33 | 34 | def save_refresh_status_for_controller(user, controller, current_refresh_status) 35 | user_refresh_status = refresh_status_for_controller(user, controller) 36 | controller = controller.to_s 37 | if controller.present? && user_refresh_status != current_refresh_status 38 | user.pref[:refresh_status] ||= Hash.new 39 | user.pref[:refresh_status][controller] = current_refresh_status 40 | user.pref.save 41 | end 42 | end 43 | 44 | class Hooks < Redmine::Hook::ViewListener 45 | def view_my_account(context = {}) 46 | begin 47 | return %( 48 | 49 | 50 | #{l(:label_refresh)} 51 | 52 | #{label_tag "refresh_interval", l(:label_refresh_interval)} 53 | #{text_field :refresh, :refresh_interval, :value => (User.current.pref[:refresh_interval].nil? ? DEFAULT_INTERVAL : User.current.pref[:refresh_interval]).to_i} 54 | 55 | ) 56 | rescue => e 57 | Rails.logger.error e 58 | return "#{e}" 59 | end 60 | end 61 | 62 | def view_users_form(context = {}) 63 | begin 64 | return %( 65 | 66 | 67 | #{l(:label_refresh)} 68 | 69 | #{label_tag "refresh_interval", l(:label_refresh_interval)} 70 | #{text_field :refresh, :refresh_interval, :value => (context[:user].pref[:refresh_interval].nil? ? DEFAULT_INTERVAL : context[:user].pref[:refresh_interval]).to_i} 71 | 72 | ) 73 | rescue => e 74 | Rails.logger.error e 75 | return "#{e}" 76 | end 77 | end 78 | end 79 | end 80 | -------------------------------------------------------------------------------- /spec/models/redmine_refresh_spec.rb: -------------------------------------------------------------------------------- 1 | require "spec_helper" 2 | 3 | describe RedmineRefresh do 4 | fixtures :users, :user_preferences 5 | 6 | before do 7 | @user = User.find(1) #permissions don't matter 8 | end 9 | 10 | context "#refresh_interval_for" do 11 | it "should return 120 by default " do 12 | expect(RedmineRefresh.refresh_interval_for(@user)).to eq 120 13 | end 14 | 15 | it "should return second params if >= 10" do 16 | expect(RedmineRefresh.refresh_interval_for(@user, "10")).to eq 10 17 | expect(RedmineRefresh.refresh_interval_for(@user, 12)).to eq 12 18 | end 19 | 20 | it "should not return second param if not >= 10" do 21 | expect(RedmineRefresh.refresh_interval_for(@user, 9)).to eq 120 22 | expect(RedmineRefresh.refresh_interval_for(@user, "abcd")).to eq 120 23 | expect(RedmineRefresh.refresh_interval_for(@user, -20)).to eq 120 24 | end 25 | 26 | it "should save parameter in user preferences if modified and valid" do 27 | expect(@user.reload.pref[:refresh_interval]).to eq nil 28 | expect(RedmineRefresh.refresh_interval_for(@user, "10")) 29 | expect(@user.reload.pref[:refresh_interval]).to eq 10 30 | expect(RedmineRefresh.refresh_interval_for(@user, "30")) 31 | expect(@user.reload.pref[:refresh_interval]).to eq 30 32 | expect(RedmineRefresh.refresh_interval_for(@user, "abc")) 33 | expect(@user.reload.pref[:refresh_interval]).to eq 30 34 | end 35 | 36 | it "should not save user preferences if parameter is untouched" do 37 | RedmineRefresh.refresh_interval_for(@user, "10") 38 | expect(@user.reload.pref[:refresh_interval]).to eq 10 39 | allow(@user.pref).to receive(:save) { raise(Exception, "This shouldn't be called !") } 40 | expect{ RedmineRefresh.refresh_interval_for(@user, "10") }.to_not raise_error 41 | end 42 | 43 | it "should get the user preference if no valid parameter provided" do 44 | @user.pref[:refresh_interval] = 30 45 | @user.pref.save 46 | expect(RedmineRefresh.refresh_interval_for(@user)).to eq 30 47 | end 48 | 49 | it "should not get the user preference if a valid parameter is provided" do 50 | @user.pref[:refresh_interval] = 30 51 | @user.pref.save 52 | expect(@user.reload.pref[:refresh_interval]).to eq 30 53 | expect(RedmineRefresh.refresh_interval_for(@user, "50")).to eq 50 54 | end 55 | end 56 | 57 | context "#refresh_status_for_controller" do 58 | it "should return false if no controller provided" do 59 | assert !RedmineRefresh.refresh_status_for_controller(@user) 60 | end 61 | 62 | it "should return false by default" do 63 | assert !RedmineRefresh.refresh_status_for_controller(@user, "my") 64 | end 65 | 66 | it "should proxy to user preferences for refresh_status" do 67 | @user.pref[:refresh_status] = {"my" => true} 68 | @user.pref.save 69 | @user.reload 70 | assert RedmineRefresh.refresh_status_for_controller(@user, "my") 71 | assert !RedmineRefresh.refresh_status_for_controller(@user, "other") 72 | end 73 | 74 | it "should be falsy for not-logged user" do 75 | @user = User.anonymous 76 | @user.pref[:refresh_status] = {"my" => true} 77 | assert !RedmineRefresh.refresh_status_for_controller(@user, "my") 78 | end 79 | end 80 | 81 | context "#save_refresh_status_for_controller" do 82 | before do 83 | @user.pref[:refresh_status] = {"my" => true} 84 | @user.pref.save 85 | @user.reload 86 | end 87 | 88 | it "should save refresh_status for this controller if needed" do 89 | RedmineRefresh.save_refresh_status_for_controller(@user, "my", false) 90 | @user.reload 91 | assert !RedmineRefresh.refresh_status_for_controller(@user, "my") 92 | end 93 | 94 | it "should not save refresh_status for this controller if not changed" do 95 | allow(@user.pref).to receive(:save) { raise(Exception, "This shouldn't be called !") } 96 | expect{ RedmineRefresh.save_refresh_status_for_controller(@user, "my", true) }.to_not raise_error 97 | end 98 | end 99 | end 100 | -------------------------------------------------------------------------------- /.github/workflows/6_0_7.yml.backup: -------------------------------------------------------------------------------- 1 | name: Tests 6.0.7 2 | 3 | env: 4 | PLUGIN_NAME: redmine_refresh 5 | REDMINE_VERSION: 6.0.7 6 | RAILS_ENV: test 7 | 8 | on: 9 | push: 10 | pull_request: 11 | 12 | jobs: 13 | test: 14 | name: ${{ github.workflow }} ${{ matrix.db }} ruby-${{ matrix.ruby }} 15 | runs-on: ubuntu-latest 16 | 17 | strategy: 18 | matrix: 19 | ruby: ['3.3'] 20 | db: ['postgres'] 21 | fail-fast: false 22 | 23 | services: 24 | postgres: 25 | image: postgres:13 26 | env: 27 | POSTGRES_DB: redmine 28 | POSTGRES_USER: postgres 29 | POSTGRES_PASSWORD: postgres 30 | ports: 31 | - 5432:5432 32 | options: >- 33 | --health-cmd pg_isready 34 | --health-interval 10s 35 | --health-timeout 5s 36 | --health-retries 5 37 | 38 | steps: 39 | - name: Checkout Redmine 40 | uses: actions/checkout@v4 41 | with: 42 | repository: redmine/redmine 43 | ref: ${{ env.REDMINE_VERSION }} 44 | path: redmine 45 | 46 | - name: Update package archives 47 | run: sudo apt-get update --yes --quiet 48 | 49 | - name: Install package dependencies 50 | run: > 51 | sudo apt-get update && sudo apt-get install --yes --quiet 52 | build-essential 53 | cmake 54 | libicu-dev 55 | libpq-dev 56 | ghostscript 57 | gsfonts 58 | 59 | - name: Set up chromedriver 60 | uses: nanasess/setup-chromedriver@master 61 | - run: | 62 | export DISPLAY=:99 63 | chromedriver --url-base=/wd/hub & 64 | sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 & # optional 65 | 66 | - name: Allow imagemagick to read PDF files 67 | run: | 68 | echo '' > policy.xml 69 | echo '' >> policy.xml 70 | echo '' >> policy.xml 71 | sudo rm /etc/ImageMagick-6/policy.xml 72 | sudo mv policy.xml /etc/ImageMagick-6/policy.xml 73 | 74 | - name: Setup Ruby 75 | uses: ruby/setup-ruby@v1 76 | with: 77 | ruby-version: ${{ matrix.ruby }} 78 | bundler-cache: true # runs 'bundle install' and caches installed gems automatically 79 | 80 | - name: Setup Bundler 81 | run: gem install bundler -v '~> 1.0' 82 | 83 | - name: Checkout dependencies - Base RSpec plugin 84 | uses: actions/checkout@v4 85 | with: 86 | repository: jbbarth/redmine_base_rspec 87 | path: redmine/plugins/redmine_base_rspec 88 | 89 | - name: Prepare Redmine source 90 | working-directory: redmine 91 | run: | 92 | sed -i '/rubocop/d' Gemfile 93 | rm -f .rubocop* 94 | cp plugins/redmine_base_rspec/spec/support/database-${{ matrix.db }}.yml config/database.yml 95 | 96 | - name: Install Ruby dependencies 97 | working-directory: redmine 98 | run: | 99 | bundle install --jobs=4 --retry=3 --without development 100 | 101 | - name: Generate session store secret 102 | env: 103 | RAILS_ENV: test 104 | working-directory: redmine 105 | run: | 106 | bundle exec rake generate_secret_token 107 | 108 | - name: Run Redmine DB and migration tasks 109 | env: 110 | RAILS_ENV: test 111 | working-directory: redmine 112 | run: | 113 | bundle exec rake db:create db:migrate 114 | bundle exec rails test:scm:setup:subversion 115 | 116 | - name: Checkout dependencies - Base Deface plugin 117 | uses: actions/checkout@v4 118 | with: 119 | repository: jbbarth/redmine_base_deface 120 | path: redmine/plugins/redmine_base_deface 121 | 122 | - name: Checkout dependencies - Base StimulusJS plugin 123 | uses: actions/checkout@v4 124 | with: 125 | repository: nanego/redmine_base_stimulusjs 126 | path: redmine/plugins/redmine_base_stimulusjs 127 | 128 | - name: Checkout plugin 129 | uses: actions/checkout@v4 130 | with: 131 | path: redmine/plugins/${{ env.PLUGIN_NAME }} 132 | 133 | - name: Install plugins dependencies and run plugins migrations 134 | env: 135 | RAILS_ENV: test 136 | working-directory: redmine 137 | run: | 138 | bundle install --jobs=4 --retry=3 --without development 139 | bundle exec rake redmine:plugins:migrate 140 | # cp -i plugins/*/spec/fixtures/*yml test/fixtures/ 141 | bundle exec rails db:fixtures:load 142 | 143 | - name: Run core tests 144 | env: 145 | RAILS_ENV: test 146 | working-directory: redmine 147 | run: bundle exec rails test 148 | 149 | - name: Run plugin tests 150 | env: 151 | RAILS_ENV: test 152 | working-directory: redmine 153 | run: bundle exec rails redmine:plugins:test NAME=${{ env.PLUGIN_NAME }} RUBYOPT="-W0" 154 | 155 | - name: Run uninstall test 156 | env: 157 | RAILS_ENV: test 158 | working-directory: redmine 159 | run: bundle exec rake redmine:plugins:migrate NAME=${{ env.PLUGIN_NAME }} VERSION=0 160 | -------------------------------------------------------------------------------- /.github/workflows/6_1_0.yml.backup: -------------------------------------------------------------------------------- 1 | name: Tests 6.1.0 2 | 3 | env: 4 | PLUGIN_NAME: redmine_refresh 5 | REDMINE_VERSION: 6.1.0 6 | RAILS_ENV: test 7 | 8 | on: 9 | push: 10 | pull_request: 11 | 12 | jobs: 13 | test: 14 | name: ${{ github.workflow }} ${{ matrix.db }} ruby-${{ matrix.ruby }} 15 | runs-on: ubuntu-latest 16 | 17 | strategy: 18 | matrix: 19 | ruby: ['3.4'] 20 | db: ['postgres'] 21 | fail-fast: false 22 | 23 | services: 24 | postgres: 25 | image: postgres:13 26 | env: 27 | POSTGRES_DB: redmine 28 | POSTGRES_USER: postgres 29 | POSTGRES_PASSWORD: postgres 30 | ports: 31 | - 5432:5432 32 | options: >- 33 | --health-cmd pg_isready 34 | --health-interval 10s 35 | --health-timeout 5s 36 | --health-retries 5 37 | 38 | steps: 39 | - name: Checkout Redmine 40 | uses: actions/checkout@v4 41 | with: 42 | repository: redmine/redmine 43 | ref: ${{ env.REDMINE_VERSION }} 44 | path: redmine 45 | 46 | - name: Update package archives 47 | run: sudo apt-get update --yes --quiet 48 | 49 | - name: Install package dependencies 50 | run: > 51 | sudo apt-get update && sudo apt-get install --yes --quiet 52 | build-essential 53 | cmake 54 | libicu-dev 55 | libpq-dev 56 | ghostscript 57 | gsfonts 58 | 59 | - name: Set up chromedriver 60 | uses: nanasess/setup-chromedriver@master 61 | - run: | 62 | export DISPLAY=:99 63 | chromedriver --url-base=/wd/hub & 64 | sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 & # optional 65 | 66 | - name: Allow imagemagick to read PDF files 67 | run: | 68 | echo '' > policy.xml 69 | echo '' >> policy.xml 70 | echo '' >> policy.xml 71 | sudo rm /etc/ImageMagick-6/policy.xml 72 | sudo mv policy.xml /etc/ImageMagick-6/policy.xml 73 | 74 | - name: Setup Ruby 75 | uses: ruby/setup-ruby@v1 76 | with: 77 | ruby-version: ${{ matrix.ruby }} 78 | bundler-cache: true # runs 'bundle install' and caches installed gems automatically 79 | 80 | - name: Setup Bundler 81 | run: gem install bundler -v '~> 1.0' 82 | 83 | - name: Checkout dependencies - Base RSpec plugin 84 | uses: actions/checkout@v4 85 | with: 86 | repository: jbbarth/redmine_base_rspec 87 | path: redmine/plugins/redmine_base_rspec 88 | 89 | - name: Prepare Redmine source 90 | working-directory: redmine 91 | run: | 92 | sed -i '/rubocop/d' Gemfile 93 | rm -f .rubocop* 94 | cp plugins/redmine_base_rspec/spec/support/database-${{ matrix.db }}.yml config/database.yml 95 | 96 | - name: Install Ruby dependencies 97 | working-directory: redmine 98 | run: | 99 | bundle install --jobs=4 --retry=3 --without development 100 | 101 | - name: Generate session store secret 102 | env: 103 | RAILS_ENV: test 104 | working-directory: redmine 105 | run: | 106 | bundle exec rake generate_secret_token 107 | 108 | - name: Run Redmine DB and migration tasks 109 | env: 110 | RAILS_ENV: test 111 | working-directory: redmine 112 | run: | 113 | bundle exec rake db:create db:migrate 114 | bundle exec rails test:scm:setup:subversion 115 | 116 | - name: Checkout dependencies - Base Deface plugin 117 | uses: actions/checkout@v4 118 | with: 119 | repository: jbbarth/redmine_base_deface 120 | path: redmine/plugins/redmine_base_deface 121 | 122 | - name: Checkout dependencies - Base StimulusJS plugin 123 | uses: actions/checkout@v4 124 | with: 125 | repository: nanego/redmine_base_stimulusjs 126 | path: redmine/plugins/redmine_base_stimulusjs 127 | 128 | - name: Checkout plugin 129 | uses: actions/checkout@v4 130 | with: 131 | path: redmine/plugins/${{ env.PLUGIN_NAME }} 132 | 133 | - name: Install plugins dependencies and run plugins migrations 134 | env: 135 | RAILS_ENV: test 136 | working-directory: redmine 137 | run: | 138 | bundle install --jobs=4 --retry=3 --without development 139 | bundle exec rake redmine:plugins:migrate 140 | # cp -i plugins/*/spec/fixtures/*yml test/fixtures/ 141 | bundle exec rails db:fixtures:load 142 | 143 | - name: Run core tests 144 | env: 145 | RAILS_ENV: test 146 | working-directory: redmine 147 | run: bundle exec rails test 148 | 149 | - name: Run plugin tests 150 | env: 151 | RAILS_ENV: test 152 | working-directory: redmine 153 | run: bundle exec rails redmine:plugins:test NAME=${{ env.PLUGIN_NAME }} RUBYOPT="-W0" 154 | 155 | - name: Run uninstall test 156 | env: 157 | RAILS_ENV: test 158 | working-directory: redmine 159 | run: bundle exec rake redmine:plugins:migrate NAME=${{ env.PLUGIN_NAME }} VERSION=0 160 | -------------------------------------------------------------------------------- /.github/workflows/master.yml.backup: -------------------------------------------------------------------------------- 1 | name: Tests master 2 | 3 | env: 4 | PLUGIN_NAME: redmine_refresh 5 | REDMINE_VERSION: master 6 | RAILS_ENV: test 7 | 8 | on: 9 | push: 10 | pull_request: 11 | 12 | jobs: 13 | test: 14 | name: ${{ github.workflow }} ${{ matrix.db }} ruby-${{ matrix.ruby }} 15 | runs-on: ubuntu-latest 16 | 17 | strategy: 18 | matrix: 19 | ruby: ['3.4'] 20 | db: ['postgres'] 21 | fail-fast: false 22 | 23 | services: 24 | postgres: 25 | image: postgres:13 26 | env: 27 | POSTGRES_DB: redmine 28 | POSTGRES_USER: postgres 29 | POSTGRES_PASSWORD: postgres 30 | ports: 31 | - 5432:5432 32 | options: >- 33 | --health-cmd pg_isready 34 | --health-interval 10s 35 | --health-timeout 5s 36 | --health-retries 5 37 | 38 | steps: 39 | - name: Checkout Redmine 40 | uses: actions/checkout@v4 41 | with: 42 | repository: redmine/redmine 43 | ref: ${{ env.REDMINE_VERSION }} 44 | path: redmine 45 | 46 | - name: Update package archives 47 | run: sudo apt-get update --yes --quiet 48 | 49 | - name: Install package dependencies 50 | run: > 51 | sudo apt-get update && sudo apt-get install --yes --quiet 52 | build-essential 53 | cmake 54 | libicu-dev 55 | libpq-dev 56 | ghostscript 57 | gsfonts 58 | 59 | - name: Set up chromedriver 60 | uses: nanasess/setup-chromedriver@master 61 | - run: | 62 | export DISPLAY=:99 63 | chromedriver --url-base=/wd/hub & 64 | sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 & # optional 65 | 66 | - name: Allow imagemagick to read PDF files 67 | run: | 68 | echo '' > policy.xml 69 | echo '' >> policy.xml 70 | echo '' >> policy.xml 71 | sudo rm /etc/ImageMagick-6/policy.xml 72 | sudo mv policy.xml /etc/ImageMagick-6/policy.xml 73 | 74 | - name: Setup Ruby 75 | uses: ruby/setup-ruby@v1 76 | with: 77 | ruby-version: ${{ matrix.ruby }} 78 | bundler-cache: true # runs 'bundle install' and caches installed gems automatically 79 | 80 | - name: Setup Bundler 81 | run: gem install bundler -v '~> 1.0' 82 | 83 | - name: Checkout dependencies - Base RSpec plugin 84 | uses: actions/checkout@v4 85 | with: 86 | repository: jbbarth/redmine_base_rspec 87 | path: redmine/plugins/redmine_base_rspec 88 | 89 | - name: Prepare Redmine source 90 | working-directory: redmine 91 | run: | 92 | sed -i '/rubocop/d' Gemfile 93 | rm -f .rubocop* 94 | cp plugins/redmine_base_rspec/spec/support/database-${{ matrix.db }}.yml config/database.yml 95 | 96 | - name: Install Ruby dependencies 97 | working-directory: redmine 98 | run: | 99 | bundle install --jobs=4 --retry=3 --without development 100 | 101 | - name: Generate session store secret 102 | env: 103 | RAILS_ENV: test 104 | working-directory: redmine 105 | run: | 106 | bundle exec rake generate_secret_token 107 | 108 | - name: Run Redmine DB and migration tasks 109 | env: 110 | RAILS_ENV: test 111 | working-directory: redmine 112 | run: | 113 | bundle exec rake db:create db:migrate 114 | bundle exec rails test:scm:setup:subversion 115 | 116 | - name: Checkout dependencies - Base Deface plugin 117 | uses: actions/checkout@v4 118 | with: 119 | repository: jbbarth/redmine_base_deface 120 | path: redmine/plugins/redmine_base_deface 121 | 122 | - name: Checkout dependencies - Base StimulusJS plugin 123 | uses: actions/checkout@v4 124 | with: 125 | repository: nanego/redmine_base_stimulusjs 126 | path: redmine/plugins/redmine_base_stimulusjs 127 | 128 | - name: Checkout plugin 129 | uses: actions/checkout@v4 130 | with: 131 | path: redmine/plugins/${{ env.PLUGIN_NAME }} 132 | 133 | - name: Install plugins dependencies and run plugins migrations 134 | env: 135 | RAILS_ENV: test 136 | working-directory: redmine 137 | run: | 138 | bundle install --jobs=4 --retry=3 --without development 139 | bundle exec rake redmine:plugins:migrate 140 | # cp -i plugins/*/spec/fixtures/*yml test/fixtures/ 141 | bundle exec rails db:fixtures:load 142 | 143 | - name: Run core tests 144 | env: 145 | RAILS_ENV: test 146 | working-directory: redmine 147 | run: bundle exec rails test 148 | 149 | - name: Run plugin tests 150 | env: 151 | RAILS_ENV: test 152 | working-directory: redmine 153 | run: bundle exec rails redmine:plugins:test NAME=${{ env.PLUGIN_NAME }} RUBYOPT="-W0" 154 | 155 | - name: Run uninstall test 156 | env: 157 | RAILS_ENV: test 158 | working-directory: redmine 159 | run: bundle exec rake redmine:plugins:migrate NAME=${{ env.PLUGIN_NAME }} VERSION=0 160 | -------------------------------------------------------------------------------- /.github/workflows/6_0_7.yml: -------------------------------------------------------------------------------- 1 | name: Tests 6.0.7 2 | 3 | env: 4 | PLUGIN_NAME: redmine_refresh 5 | REDMINE_VERSION: 6.0.7 6 | RAILS_ENV: test 7 | 8 | on: 9 | push: 10 | pull_request: 11 | 12 | jobs: 13 | test: 14 | name: ${{ github.workflow }} ${{ matrix.db }} ruby-${{ matrix.ruby }} 15 | runs-on: ubuntu-latest 16 | 17 | strategy: 18 | matrix: 19 | ruby: ['3.3'] 20 | db: ['postgres'] 21 | fail-fast: false 22 | 23 | services: 24 | postgres: 25 | image: postgres:13 26 | env: 27 | POSTGRES_DB: redmine 28 | POSTGRES_USER: postgres 29 | POSTGRES_PASSWORD: postgres 30 | ports: 31 | - 5432:5432 32 | options: >- 33 | --health-cmd pg_isready 34 | --health-interval 10s 35 | --health-timeout 5s 36 | --health-retries 5 37 | 38 | steps: 39 | - name: Checkout Redmine 40 | uses: actions/checkout@v4 41 | with: 42 | repository: redmine/redmine 43 | ref: ${{ env.REDMINE_VERSION }} 44 | path: redmine 45 | 46 | - name: Update package archives 47 | run: sudo apt-get update --yes --quiet 48 | 49 | - name: Install package dependencies 50 | run: > 51 | sudo apt-get update && sudo apt-get install --yes --quiet 52 | build-essential 53 | cmake 54 | libicu-dev 55 | libpq-dev 56 | ghostscript 57 | gsfonts 58 | 59 | - name: Set up chromedriver 60 | uses: nanasess/setup-chromedriver@master 61 | - run: | 62 | export DISPLAY=:99 63 | chromedriver --url-base=/wd/hub & 64 | sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 & # optional 65 | 66 | - name: Allow imagemagick to read PDF files 67 | run: | 68 | echo '' > policy.xml 69 | echo '' >> policy.xml 70 | echo '' >> policy.xml 71 | sudo rm /etc/ImageMagick-6/policy.xml 72 | sudo mv policy.xml /etc/ImageMagick-6/policy.xml 73 | 74 | - name: Setup Ruby 75 | uses: ruby/setup-ruby@v1 76 | with: 77 | ruby-version: ${{ matrix.ruby }} 78 | bundler-cache: true # runs 'bundle install' and caches installed gems automatically 79 | 80 | - name: Setup Bundler 81 | run: gem install bundler -v '~> 1.0' 82 | 83 | - name: Checkout dependencies - Base RSpec plugin 84 | uses: actions/checkout@v4 85 | with: 86 | repository: jbbarth/redmine_base_rspec 87 | path: redmine/plugins/redmine_base_rspec 88 | 89 | - name: Prepare Redmine source 90 | working-directory: redmine 91 | run: | 92 | sed -i '/rubocop/d' Gemfile 93 | rm -f test/integration/routing/plugins_test.rb # Fix routing tests # TODO Remove this line when https://www.redmine.org/issues/38707 is fixed 94 | rm -f .rubocop* 95 | cp plugins/redmine_base_rspec/spec/support/database-${{ matrix.db }}.yml config/database.yml 96 | 97 | - name: Install Ruby dependencies 98 | working-directory: redmine 99 | run: | 100 | bundle install --jobs=4 --retry=3 --without development 101 | 102 | - name: Generate session store secret 103 | env: 104 | RAILS_ENV: test 105 | working-directory: redmine 106 | run: | 107 | bundle exec rake generate_secret_token 108 | 109 | - name: Run Redmine DB and migration tasks 110 | env: 111 | RAILS_ENV: test 112 | working-directory: redmine 113 | run: | 114 | bundle exec rake db:create db:migrate 115 | bundle exec rails test:scm:setup:subversion 116 | 117 | - name: Checkout dependencies - Base Deface plugin 118 | uses: actions/checkout@v4 119 | with: 120 | repository: jbbarth/redmine_base_deface 121 | path: redmine/plugins/redmine_base_deface 122 | 123 | - name: Checkout dependencies - Base StimulusJS plugin 124 | uses: actions/checkout@v4 125 | with: 126 | repository: nanego/redmine_base_stimulusjs 127 | path: redmine/plugins/redmine_base_stimulusjs 128 | 129 | - name: Checkout plugin 130 | uses: actions/checkout@v4 131 | with: 132 | path: redmine/plugins/${{ env.PLUGIN_NAME }} 133 | 134 | - name: Install plugins dependencies and run plugins migrations 135 | env: 136 | RAILS_ENV: test 137 | working-directory: redmine 138 | run: | 139 | bundle install --jobs=4 --retry=3 --without development 140 | bundle exec rake redmine:plugins:migrate 141 | # cp -i plugins/*/spec/fixtures/*yml test/fixtures/ 142 | bundle exec rails db:fixtures:load 143 | 144 | - name: Run core tests 145 | env: 146 | RAILS_ENV: test 147 | working-directory: redmine 148 | run: bundle exec rails test 149 | 150 | - name: Run plugin tests 151 | env: 152 | RAILS_ENV: test 153 | working-directory: redmine 154 | run: bundle exec rails redmine:plugins:test NAME=${{ env.PLUGIN_NAME }} RUBYOPT="-W0" 155 | 156 | - name: Run uninstall test 157 | env: 158 | RAILS_ENV: test 159 | working-directory: redmine 160 | run: bundle exec rake redmine:plugins:migrate NAME=${{ env.PLUGIN_NAME }} VERSION=0 161 | -------------------------------------------------------------------------------- /.github/workflows/6_1_0.yml: -------------------------------------------------------------------------------- 1 | name: Tests 6.1.0 2 | 3 | env: 4 | PLUGIN_NAME: redmine_refresh 5 | REDMINE_VERSION: 6.1.0 6 | RAILS_ENV: test 7 | 8 | on: 9 | push: 10 | pull_request: 11 | 12 | jobs: 13 | test: 14 | name: ${{ github.workflow }} ${{ matrix.db }} ruby-${{ matrix.ruby }} 15 | runs-on: ubuntu-latest 16 | 17 | strategy: 18 | matrix: 19 | ruby: ['3.4'] 20 | db: ['postgres'] 21 | fail-fast: false 22 | 23 | services: 24 | postgres: 25 | image: postgres:13 26 | env: 27 | POSTGRES_DB: redmine 28 | POSTGRES_USER: postgres 29 | POSTGRES_PASSWORD: postgres 30 | ports: 31 | - 5432:5432 32 | options: >- 33 | --health-cmd pg_isready 34 | --health-interval 10s 35 | --health-timeout 5s 36 | --health-retries 5 37 | 38 | steps: 39 | - name: Checkout Redmine 40 | uses: actions/checkout@v4 41 | with: 42 | repository: redmine/redmine 43 | ref: ${{ env.REDMINE_VERSION }} 44 | path: redmine 45 | 46 | - name: Update package archives 47 | run: sudo apt-get update --yes --quiet 48 | 49 | - name: Install package dependencies 50 | run: > 51 | sudo apt-get update && sudo apt-get install --yes --quiet 52 | build-essential 53 | cmake 54 | libicu-dev 55 | libpq-dev 56 | ghostscript 57 | gsfonts 58 | 59 | - name: Set up chromedriver 60 | uses: nanasess/setup-chromedriver@master 61 | - run: | 62 | export DISPLAY=:99 63 | chromedriver --url-base=/wd/hub & 64 | sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 & # optional 65 | 66 | - name: Allow imagemagick to read PDF files 67 | run: | 68 | echo '' > policy.xml 69 | echo '' >> policy.xml 70 | echo '' >> policy.xml 71 | sudo rm /etc/ImageMagick-6/policy.xml 72 | sudo mv policy.xml /etc/ImageMagick-6/policy.xml 73 | 74 | - name: Setup Ruby 75 | uses: ruby/setup-ruby@v1 76 | with: 77 | ruby-version: ${{ matrix.ruby }} 78 | bundler-cache: true # runs 'bundle install' and caches installed gems automatically 79 | 80 | - name: Setup Bundler 81 | run: gem install bundler -v '~> 1.0' 82 | 83 | - name: Checkout dependencies - Base RSpec plugin 84 | uses: actions/checkout@v4 85 | with: 86 | repository: jbbarth/redmine_base_rspec 87 | path: redmine/plugins/redmine_base_rspec 88 | 89 | - name: Prepare Redmine source 90 | working-directory: redmine 91 | run: | 92 | sed -i '/rubocop/d' Gemfile 93 | rm -f test/integration/routing/plugins_test.rb # Fix routing tests # TODO Remove this line when https://www.redmine.org/issues/38707 is fixed 94 | rm -f .rubocop* 95 | cp plugins/redmine_base_rspec/spec/support/database-${{ matrix.db }}.yml config/database.yml 96 | 97 | - name: Install Ruby dependencies 98 | working-directory: redmine 99 | run: | 100 | bundle install --jobs=4 --retry=3 --without development 101 | 102 | - name: Generate session store secret 103 | env: 104 | RAILS_ENV: test 105 | working-directory: redmine 106 | run: | 107 | bundle exec rake generate_secret_token 108 | 109 | - name: Run Redmine DB and migration tasks 110 | env: 111 | RAILS_ENV: test 112 | working-directory: redmine 113 | run: | 114 | bundle exec rake db:create db:migrate 115 | bundle exec rails test:scm:setup:subversion 116 | 117 | - name: Checkout dependencies - Base Deface plugin 118 | uses: actions/checkout@v4 119 | with: 120 | repository: jbbarth/redmine_base_deface 121 | path: redmine/plugins/redmine_base_deface 122 | 123 | - name: Checkout dependencies - Base StimulusJS plugin 124 | uses: actions/checkout@v4 125 | with: 126 | repository: nanego/redmine_base_stimulusjs 127 | path: redmine/plugins/redmine_base_stimulusjs 128 | 129 | - name: Checkout plugin 130 | uses: actions/checkout@v4 131 | with: 132 | path: redmine/plugins/${{ env.PLUGIN_NAME }} 133 | 134 | - name: Install plugins dependencies and run plugins migrations 135 | env: 136 | RAILS_ENV: test 137 | working-directory: redmine 138 | run: | 139 | bundle install --jobs=4 --retry=3 --without development 140 | bundle exec rake redmine:plugins:migrate 141 | # cp -i plugins/*/spec/fixtures/*yml test/fixtures/ 142 | bundle exec rails db:fixtures:load 143 | 144 | - name: Run core tests 145 | env: 146 | RAILS_ENV: test 147 | working-directory: redmine 148 | run: bundle exec rails test 149 | 150 | - name: Run plugin tests 151 | env: 152 | RAILS_ENV: test 153 | working-directory: redmine 154 | run: bundle exec rails redmine:plugins:test NAME=${{ env.PLUGIN_NAME }} RUBYOPT="-W0" 155 | 156 | - name: Run uninstall test 157 | env: 158 | RAILS_ENV: test 159 | working-directory: redmine 160 | run: bundle exec rake redmine:plugins:migrate NAME=${{ env.PLUGIN_NAME }} VERSION=0 161 | -------------------------------------------------------------------------------- /.github/workflows/master.yml: -------------------------------------------------------------------------------- 1 | name: Tests master 2 | 3 | env: 4 | PLUGIN_NAME: redmine_refresh 5 | REDMINE_VERSION: master 6 | RAILS_ENV: test 7 | 8 | on: 9 | push: 10 | pull_request: 11 | 12 | jobs: 13 | test: 14 | name: ${{ github.workflow }} ${{ matrix.db }} ruby-${{ matrix.ruby }} 15 | runs-on: ubuntu-latest 16 | 17 | strategy: 18 | matrix: 19 | ruby: ['3.4'] 20 | db: ['postgres'] 21 | fail-fast: false 22 | 23 | services: 24 | postgres: 25 | image: postgres:13 26 | env: 27 | POSTGRES_DB: redmine 28 | POSTGRES_USER: postgres 29 | POSTGRES_PASSWORD: postgres 30 | ports: 31 | - 5432:5432 32 | options: >- 33 | --health-cmd pg_isready 34 | --health-interval 10s 35 | --health-timeout 5s 36 | --health-retries 5 37 | 38 | steps: 39 | - name: Checkout Redmine 40 | uses: actions/checkout@v4 41 | with: 42 | repository: redmine/redmine 43 | ref: ${{ env.REDMINE_VERSION }} 44 | path: redmine 45 | 46 | - name: Update package archives 47 | run: sudo apt-get update --yes --quiet 48 | 49 | - name: Install package dependencies 50 | run: > 51 | sudo apt-get update && sudo apt-get install --yes --quiet 52 | build-essential 53 | cmake 54 | libicu-dev 55 | libpq-dev 56 | ghostscript 57 | gsfonts 58 | 59 | - name: Set up chromedriver 60 | uses: nanasess/setup-chromedriver@master 61 | - run: | 62 | export DISPLAY=:99 63 | chromedriver --url-base=/wd/hub & 64 | sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 & # optional 65 | 66 | - name: Allow imagemagick to read PDF files 67 | run: | 68 | echo '' > policy.xml 69 | echo '' >> policy.xml 70 | echo '' >> policy.xml 71 | sudo rm /etc/ImageMagick-6/policy.xml 72 | sudo mv policy.xml /etc/ImageMagick-6/policy.xml 73 | 74 | - name: Setup Ruby 75 | uses: ruby/setup-ruby@v1 76 | with: 77 | ruby-version: ${{ matrix.ruby }} 78 | bundler-cache: true # runs 'bundle install' and caches installed gems automatically 79 | 80 | - name: Setup Bundler 81 | run: gem install bundler -v '~> 1.0' 82 | 83 | - name: Checkout dependencies - Base RSpec plugin 84 | uses: actions/checkout@v4 85 | with: 86 | repository: jbbarth/redmine_base_rspec 87 | path: redmine/plugins/redmine_base_rspec 88 | 89 | - name: Prepare Redmine source 90 | working-directory: redmine 91 | run: | 92 | sed -i '/rubocop/d' Gemfile 93 | rm -f test/integration/routing/plugins_test.rb # Fix routing tests # TODO Remove this line when https://www.redmine.org/issues/38707 is fixed 94 | rm -f .rubocop* 95 | cp plugins/redmine_base_rspec/spec/support/database-${{ matrix.db }}.yml config/database.yml 96 | 97 | - name: Install Ruby dependencies 98 | working-directory: redmine 99 | run: | 100 | bundle install --jobs=4 --retry=3 --without development 101 | 102 | - name: Generate session store secret 103 | env: 104 | RAILS_ENV: test 105 | working-directory: redmine 106 | run: | 107 | bundle exec rake generate_secret_token 108 | 109 | - name: Run Redmine DB and migration tasks 110 | env: 111 | RAILS_ENV: test 112 | working-directory: redmine 113 | run: | 114 | bundle exec rake db:create db:migrate 115 | bundle exec rails test:scm:setup:subversion 116 | 117 | - name: Checkout dependencies - Base Deface plugin 118 | uses: actions/checkout@v4 119 | with: 120 | repository: jbbarth/redmine_base_deface 121 | path: redmine/plugins/redmine_base_deface 122 | 123 | - name: Checkout dependencies - Base StimulusJS plugin 124 | uses: actions/checkout@v4 125 | with: 126 | repository: nanego/redmine_base_stimulusjs 127 | path: redmine/plugins/redmine_base_stimulusjs 128 | 129 | - name: Checkout plugin 130 | uses: actions/checkout@v4 131 | with: 132 | path: redmine/plugins/${{ env.PLUGIN_NAME }} 133 | 134 | - name: Install plugins dependencies and run plugins migrations 135 | env: 136 | RAILS_ENV: test 137 | working-directory: redmine 138 | run: | 139 | bundle install --jobs=4 --retry=3 --without development 140 | bundle exec rake redmine:plugins:migrate 141 | # cp -i plugins/*/spec/fixtures/*yml test/fixtures/ 142 | bundle exec rails db:fixtures:load 143 | 144 | - name: Run core tests 145 | env: 146 | RAILS_ENV: test 147 | working-directory: redmine 148 | run: bundle exec rails test 149 | 150 | - name: Run plugin tests 151 | env: 152 | RAILS_ENV: test 153 | working-directory: redmine 154 | run: bundle exec rails redmine:plugins:test NAME=${{ env.PLUGIN_NAME }} RUBYOPT="-W0" 155 | 156 | - name: Run uninstall test 157 | env: 158 | RAILS_ENV: test 159 | working-directory: redmine 160 | run: bundle exec rake redmine:plugins:migrate NAME=${{ env.PLUGIN_NAME }} VERSION=0 161 | --------------------------------------------------------------------------------
52 | #{label_tag "refresh_interval", l(:label_refresh_interval)} 53 | #{text_field :refresh, :refresh_interval, :value => (User.current.pref[:refresh_interval].nil? ? DEFAULT_INTERVAL : User.current.pref[:refresh_interval]).to_i} 54 |
#{e}
69 | #{label_tag "refresh_interval", l(:label_refresh_interval)} 70 | #{text_field :refresh, :refresh_interval, :value => (context[:user].pref[:refresh_interval].nil? ? DEFAULT_INTERVAL : context[:user].pref[:refresh_interval]).to_i} 71 |