From be81193e9ea1dfbc7094466835e901337c124e12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Tue, 15 Sep 2020 13:48:09 +0200 Subject: [PATCH 1/5] Rename `menu-order` to `menu_order` --- _includes/sidebar.html | 3 +-- checkout-more/index.md | 2 +- checkout/after-payment.md | 2 +- checkout/capture.md | 2 +- checkout/checkin.md | 2 +- checkout/features/index.md | 2 +- checkout/features/payment-orders.md | 2 +- checkout/features/recurring-payments.md | 2 +- checkout/index.md | 6 +++--- checkout/payment-menu.md | 2 +- index.md | 2 +- lib/sidebar.rb | 2 +- page1.md | 2 +- page2.md | 2 +- payments/credit.md | 2 +- payments/index.md | 2 +- payments/invoice.md | 2 +- 17 files changed, 19 insertions(+), 20 deletions(-) diff --git a/_includes/sidebar.html b/_includes/sidebar.html index a61de2300..cdab89dc5 100644 --- a/_includes/sidebar.html +++ b/_includes/sidebar.html @@ -19,7 +19,7 @@ {% endif %} - diff --git a/checkout-more/index.md b/checkout-more/index.md index e7eacb455..2e058e40d 100644 --- a/checkout-more/index.md +++ b/checkout-more/index.md @@ -1,7 +1,7 @@ --- title: Checkout More -menu-order: 10 +menu_order: 10 --- ## You'd like to checko out diff --git a/checkout/after-payment.md b/checkout/after-payment.md index 24bfe5dfb..9f891f3eb 100644 --- a/checkout/after-payment.md +++ b/checkout/after-payment.md @@ -5,7 +5,7 @@ description: | icon: content: add additional: true -menu-order: 4 +menu_order: 4 --- {% include jumbotron.html body="When the consumer has **completed** the entire diff --git a/checkout/capture.md b/checkout/capture.md index 367cf066b..679772705 100644 --- a/checkout/capture.md +++ b/checkout/capture.md @@ -3,7 +3,7 @@ title: Swedbank Pay Checkout – Capture estimated_read: 10 card_title: Capture the funds core: true -menu-order: 3 +menu_order: 3 --- ## Step 5: Capture the funds diff --git a/checkout/checkin.md b/checkout/checkin.md index e80e7d747..51f64d583 100644 --- a/checkout/checkin.md +++ b/checkout/checkin.md @@ -9,7 +9,7 @@ description: | card_title: Initiate session and display checkin module estimated_read: 15 core: true -menu-order: 1 +menu_order: 1 --- ## Step 1: Initiate session for consumer identification diff --git a/checkout/features/index.md b/checkout/features/index.md index 9253c2514..4a5d89012 100644 --- a/checkout/features/index.md +++ b/checkout/features/index.md @@ -7,7 +7,7 @@ description: | icon: content: remove_red_eye additional: true -menu-order: 5 +menu_order: 5 card_list: - title: Payment orders description: When initiating a payment process diff --git a/checkout/features/payment-orders.md b/checkout/features/payment-orders.md index 30a3f697b..b3631f573 100644 --- a/checkout/features/payment-orders.md +++ b/checkout/features/payment-orders.md @@ -2,7 +2,7 @@ title: Payment Orders description: | See what other features you can implement for your checkout -menu-order: 1 +menu_order: 1 --- ## Payment Orders diff --git a/checkout/features/recurring-payments.md b/checkout/features/recurring-payments.md index 8ad6b7c90..14de0bd8b 100644 --- a/checkout/features/recurring-payments.md +++ b/checkout/features/recurring-payments.md @@ -2,7 +2,7 @@ title: Recurring payments description: | See what other features you can implement for your checkout -menu-order: 2 +menu_order: 2 --- ## Recurring Payments diff --git a/checkout/index.md b/checkout/index.md index be8d49b43..f87ece3c5 100644 --- a/checkout/index.md +++ b/checkout/index.md @@ -5,7 +5,7 @@ description: | Swedbank Pay Checkout is a complete reimagination of the checkout experience, integrating seamlessly into the merchant website through highly customizable and flexible components. -menu-order: 4 +menu_order: 4 card_list: - card_title: Initiate session for consumer identification estimated_read: 15 @@ -34,7 +34,7 @@ card_list in front matter above. ## Core implementation overview {% assign core_card_list = site.pages | where: 'dir', page.dir | where: 'core', true | -where_exp: 'page', 'page.name != "index.md"' | sort: 'menu-order' %} +where_exp: 'page', 'page.name != "index.md"' | sort: 'menu_order' %} {% include card-horizontal-list.html card_list=page.card_list %} @@ -43,7 +43,7 @@ where_exp: 'page', 'page.name != "index.md"' | sort: 'menu-order' %} {% assign additional_card_list = site.pages | where_exp: 'page', 'page.url != "/checkout/" and page.core != true and page.dir contains "/checkout/"' -| where: 'additional', true | sort: 'menu-order' +| where: 'additional', true | sort: 'menu_order' %} {% include card-list.html card_list=additional_card_list diff --git a/checkout/payment-menu.md b/checkout/payment-menu.md index c500da721..e134a463e 100644 --- a/checkout/payment-menu.md +++ b/checkout/payment-menu.md @@ -3,7 +3,7 @@ title: Swedbank Pay Checkout – Payment Menu estimated_read: 15 card_title: Create and display payment menu core: true -menu-order: 2 +menu_order: 2 --- {% include jumbotron.html body="**Payment Menu** begins where **Checkin** left diff --git a/index.md b/index.md index 64dd9013a..ab07948bc 100644 --- a/index.md +++ b/index.md @@ -6,7 +6,7 @@ description: | typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. -menu-order: 0 +menu_order: 0 --- Text can be **bold**, _italic_, or ~~strikethrough~~. diff --git a/lib/sidebar.rb b/lib/sidebar.rb index 4acbe1229..4887a789c 100644 --- a/lib/sidebar.rb +++ b/lib/sidebar.rb @@ -15,7 +15,7 @@ def initialize end def pre_render(page) - menu_order = page['menu-order'].nil? ? 0 : page['menu-order'] + menu_order = page['menu_order'].nil? ? 0 : page['menu_order'] hide_from_sidebar = page['hide_from_sidebar'].nil? ? false : page['hide_from_sidebar'] url = page['url'].gsub('index.html', '').gsub('.html', '') @hash_pre_render[url] = { diff --git a/page1.md b/page1.md index 331fdc344..d912e50bf 100644 --- a/page1.md +++ b/page1.md @@ -1,6 +1,6 @@ --- title: Page 1 -menu-order: 1 +menu_order: 1 front_page: title: design guide theme hero: Welcome to the Swedbank Pay diff --git a/page2.md b/page2.md index 53b4ddd33..6ba324a28 100644 --- a/page2.md +++ b/page2.md @@ -1,4 +1,4 @@ --- title: Page 2 -menu-order: 2 +menu_order: 2 --- diff --git a/payments/credit.md b/payments/credit.md index 3e557cdc3..2da940f11 100644 --- a/payments/credit.md +++ b/payments/credit.md @@ -1,6 +1,6 @@ --- title: Creditting? -menu-order: 10 +menu_order: 10 --- ## Don't read this diff --git a/payments/index.md b/payments/index.md index eafc30da1..5ca4c863d 100644 --- a/payments/index.md +++ b/payments/index.md @@ -1,6 +1,6 @@ --- title: Payments -menu-order: 1000 +menu_order: 1000 --- ## Woah bby diff --git a/payments/invoice.md b/payments/invoice.md index 4a9af7def..0e4e157c8 100644 --- a/payments/invoice.md +++ b/payments/invoice.md @@ -1,6 +1,6 @@ --- title: Invoicing -menu-order: 5 +menu_order: 5 --- ## Invoices From 8b4545d9b390b05d96d8cc87e49bc1a71e6844b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Tue, 15 Sep 2020 16:31:34 +0200 Subject: [PATCH 2/5] Add simple RSpec for sidebar --- .github/workflows/gem.yml | 9 +--- .github/workflows/test.yml | 19 +++++++ .rspec | 1 + .rubycop.yml | 12 +++++ Gemfile | 7 +++ Gemfile.lock | 42 +++++++++++++++ Rakefile | 35 +++++++++++-- lib/sidebar.rb | 2 + spec/sidebar_spec.rb | 33 ++++++++++++ spec/spec_helper.rb | 105 +++++++++++++++++++++++++++++++++++++ 10 files changed, 253 insertions(+), 12 deletions(-) create mode 100644 .rspec create mode 100644 .rubycop.yml create mode 100644 spec/sidebar_spec.rb create mode 100644 spec/spec_helper.rb diff --git a/.github/workflows/gem.yml b/.github/workflows/gem.yml index f50cbfe4a..faf0fc2de 100644 --- a/.github/workflows/gem.yml +++ b/.github/workflows/gem.yml @@ -17,13 +17,8 @@ jobs: with: fetch-depth: 0 - - name: Fetch all history for all tags and branches - run: | - git fetch --prune --tags --force - echo "REF: ${{ github.ref }}" - - name: Install GitVersion - uses: gittools/actions/gitversion/setup@v0.9.2 + uses: gittools/actions/gitversion/setup@v0.9.4 if: startsWith(github.ref, 'refs/tags/') != true # Only use GitVersion for unstable builds with: versionSpec: '5.2.x' @@ -31,7 +26,7 @@ jobs: - name: Execute GitVersion id: gitversion if: startsWith(github.ref, 'refs/tags/') != true - uses: gittools/actions/gitversion/execute@v0.9.2 + uses: gittools/actions/gitversion/execute@v0.9.4 - name: Create gem version number id: gemversion diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c279be27a..a3f2cdd32 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,6 +19,25 @@ jobs: name: build-site path: _site + spec: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/cache@v2 + with: + path: vendor/bundle + key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} + restore-keys: ${{ runner.os }}-gems- + - uses: actions/setup-ruby@v1 + with: + ruby-version: '2.7' + - name: bundle install + run: | + bundle config path vendor/bundle + bundle install --jobs 4 --retry 3 + - name: rake spec + run: bundle exec rake spec + verify: runs-on: ubuntu-latest steps: diff --git a/.rspec b/.rspec new file mode 100644 index 000000000..c1fb6a6b3 --- /dev/null +++ b/.rspec @@ -0,0 +1 @@ +--require "spec_helper" diff --git a/.rubycop.yml b/.rubycop.yml new file mode 100644 index 000000000..3fa1897ca --- /dev/null +++ b/.rubycop.yml @@ -0,0 +1,12 @@ +AllCops: + NewCops: enable + Exclude: + - "Rakefile" + - "_site/**/*.rb" + - "spec/**/*.rb" +Layout: + LineLength: 100 + IndentationStyle: + IndentationWidth: 2 +Metrics/MethodLength: + Max: 20 diff --git a/Gemfile b/Gemfile index 5f10ba8c9..bf804d42c 100644 --- a/Gemfile +++ b/Gemfile @@ -2,3 +2,10 @@ source 'https://rubygems.org' gemspec + +group :development, :test do + gem 'rspec' + gem 'rubocop', require: false +end + +gem 'codecov', require: false, group: :test diff --git a/Gemfile.lock b/Gemfile.lock index 41d837514..f5d54a9f7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -25,8 +25,14 @@ GEM zeitwerk (~> 2.2, >= 2.2.2) addressable (2.7.0) public_suffix (>= 2.0.2, < 5.0) + ast (2.4.1) + codecov (0.2.11) + json + simplecov colorator (1.1.0) concurrent-ruby (1.1.7) + diff-lcs (1.4.4) + docile (1.3.2) em-websocket (0.5.1) eventmachine (>= 0.12.9) http_parser.rb (~> 0.6.0) @@ -81,6 +87,7 @@ GEM gemoji (~> 3.0) html-pipeline (~> 2.2) jekyll (>= 3.0, < 5.0) + json (2.3.1) kramdown (2.3.0) rexml kramdown-parser-gfm (1.1.0) @@ -102,6 +109,8 @@ GEM faraday (>= 0.9) sawyer (~> 0.8.0, >= 0.5.3) parallel (1.19.2) + parser (2.7.1.4) + ast (~> 2.4.1) pathutil (0.16.2) forwardable-extended (~> 2.6) public_suffix (4.0.6) @@ -110,8 +119,34 @@ GEM rb-fsevent (0.10.4) rb-inotify (0.10.1) ffi (~> 1.0) + regexp_parser (1.7.1) rexml (3.2.4) rouge (3.23.0) + rspec (3.9.0) + rspec-core (~> 3.9.0) + rspec-expectations (~> 3.9.0) + rspec-mocks (~> 3.9.0) + rspec-core (3.9.2) + rspec-support (~> 3.9.3) + rspec-expectations (3.9.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.9.0) + rspec-mocks (3.9.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.9.0) + rspec-support (3.9.3) + rubocop (0.91.0) + parallel (~> 1.10) + parser (>= 2.7.1.1) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.7) + rexml + rubocop-ast (>= 0.4.0, < 1.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 1.4.0, < 2.0) + rubocop-ast (0.4.0) + parser (>= 2.7.1.4) + ruby-progressbar (1.10.1) safe_yaml (1.0.5) sass (3.7.4) sass-listen (~> 4.0.0) @@ -123,6 +158,10 @@ GEM sawyer (0.8.2) addressable (>= 2.3.5) faraday (> 0.8, < 2.0) + simplecov (0.19.0) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov-html (0.12.2) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) thread_safe (0.3.6) @@ -139,6 +178,9 @@ PLATFORMS DEPENDENCIES bundler + codecov + rspec + rubocop swedbank-pay-design-guide-jekyll-theme! BUNDLED WITH diff --git a/Rakefile b/Rakefile index 0dc4df4d7..8549f59a2 100644 --- a/Rakefile +++ b/Rakefile @@ -1,4 +1,8 @@ -# coding: utf-8 +# frozen_string_literal: true + +require 'rake' +require 'rspec/core/rake_task' +require 'rubocop/rake_task' require 'jekyll' require 'html-proofer' @@ -9,6 +13,27 @@ class String end end +RSpec::Core::RakeTask.new(:spec) do |t| + t.pattern = Dir.glob('spec/*_spec.rb') + t.rspec_opts = '--format documentation' +end + +desc 'Runs RuboCop' +desc task :rubocop do + RuboCop::RakeTask.new +end + +namespace :codecov do + desc 'Uploads the latest SimpleCov result set to codecov.io' + task :upload do + require 'simplecov' + require 'codecov' + + formatter = SimpleCov::Formatter::Codecov.new + formatter.format(SimpleCov::ResultMerger.merged_result) + end +end + # Rake Jekyll tasks task :build do puts 'Building site...'.bold @@ -21,9 +46,9 @@ task :clean do end # Test generated output has valid HTML and links. -task :test => :build do - options = { :assume_extension => true } - HTMLProofer.check_directory("./_site", options).run +task test: :build do + options = { assume_extension: true } + HTMLProofer.check_directory('./_site', options).run end -task :default => ["build"] \ No newline at end of file +task default: ['build'] diff --git a/lib/sidebar.rb b/lib/sidebar.rb index 4887a789c..e3cfa48da 100644 --- a/lib/sidebar.rb +++ b/lib/sidebar.rb @@ -5,6 +5,7 @@ require 'json' module Jekyll + # A nice sidebar class Sidebar attr_accessor :hash_pre_render attr_accessor :filename_with_headers @@ -72,6 +73,7 @@ def sanitize_filename(filename) def generateSubgroup(filename, key, value, all_subgroups, level) title = value[:title].split('–').last + subsubgroup_list = all_subgroups.select do |subsubgroup_key, _subsubgroup_value| subsubgroup_key.include? key and subsubgroup_key != key and \ key.split('/').length > level diff --git a/spec/sidebar_spec.rb b/spec/sidebar_spec.rb new file mode 100644 index 000000000..ee5296c7f --- /dev/null +++ b/spec/sidebar_spec.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require 'sidebar' + +describe Jekyll::Sidebar do + describe 'render' do + source_dir = File.join(__dir__, '..') + dest_dir = File.join(source_dir, '_site') + + before(:all) do + config = Jekyll.configuration( + { + 'config' => File.join(source_dir, '_config.yml'), + 'source' => source_dir, + 'destination' => dest_dir + } + ) + Jekyll::Commands::Build.process(config) + end + + index_path = File.join(dest_dir, 'index.html') + + subject { File.read(index_path) } + + it { + expect(File).to exist(index_path) + } + + it { + is_expected.to include('arrow_rightHome') + } + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 000000000..cb49c5a75 --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,105 @@ +# frozen_string_literal: true + +# This file was generated by the `rspec --init` command. Conventionally, all +# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`. +# The generated `.rspec` file contains `--require spec_helper` which will cause +# this file to always be loaded, without a need to explicitly require it in any +# files. +# +# Given that it is always loaded, you are encouraged to keep this file as +# light-weight as possible. Requiring heavyweight dependencies from this file +# will add to the boot time of your test suite on EVERY test run, even for an +# individual file that may not need all of that loaded. Instead, consider making +# a separate helper file that requires the additional dependencies and performs +# the additional setup, and require it from the spec files that actually need +# it. +# +# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration +RSpec.configure do |config| + # rspec-expectations config goes here. You can use an alternate + # assertion/expectation library such as wrong or the stdlib/minitest + # assertions if you prefer. + config.expect_with :rspec do |expectations| + # This option will default to `true` in RSpec 4. It makes the `description` + # and `failure_message` of custom matchers include text for helper methods + # defined using `chain`, e.g.: + # be_bigger_than(2).and_smaller_than(4).description + # # => "be bigger than 2 and smaller than 4" + # ...rather than: + # # => "be bigger than 2" + expectations.include_chain_clauses_in_custom_matcher_descriptions = true + end + + # rspec-mocks config goes here. You can use an alternate test double + # library (such as bogus or mocha) by changing the `mock_with` option here. + config.mock_with :rspec do |mocks| + # Prevents you from mocking or stubbing a method that does not exist on + # a real object. This is generally recommended, and will default to + # `true` in RSpec 4. + mocks.verify_partial_doubles = true + end + + # This option will default to `:apply_to_host_groups` in RSpec 4 (and will + # have no way to turn it off -- the option exists only for backwards + # compatibility in RSpec 3). It causes shared context metadata to be + # inherited by the metadata hash of host groups and examples, rather than + # triggering implicit auto-inclusion in groups with matching metadata. + config.shared_context_metadata_behavior = :apply_to_host_groups + + # The settings below are suggested to provide a good initial experience + # with RSpec, but feel free to customize to your heart's content. + # # This allows you to limit a spec run to individual examples or groups + # # you care about by tagging them with `:focus` metadata. When nothing + # # is tagged with `:focus`, all examples get run. RSpec also provides + # # aliases for `it`, `describe`, and `context` that include `:focus` + # # metadata: `fit`, `fdescribe` and `fcontext`, respectively. + # config.filter_run_when_matching :focus + # + # # Allows RSpec to persist some state between runs in order to support + # # the `--only-failures` and `--next-failure` CLI options. We recommend + # # you configure your source control system to ignore this file. + # config.example_status_persistence_file_path = "spec/examples.txt" + # + # # Limits the available syntax to the non-monkey patched syntax that is + # # recommended. For more details, see: + # # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/ + # # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/ + # # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode + # config.disable_monkey_patching! + # + # # This setting enables warnings. It's recommended, but in some cases may + # # be too noisy due to issues in dependencies. + # config.warnings = true + # + # # Many RSpec users commonly either run the entire suite or an individual + # # file, and it's useful to allow more verbose output when running an + # # individual spec file. + # if config.files_to_run.one? + # # Use the documentation formatter for detailed output, + # # unless a formatter has already been configured + # # (e.g. via a command-line flag). + # config.default_formatter = "doc" + # end + # + # # Print the 10 slowest examples and example groups at the + # # end of the spec run, to help surface which specs are running + # # particularly slow. + # config.profile_examples = 10 + # + # # Run specs in random order to surface order dependencies. If you find an + # # order dependency and want to debug it, you can fix the order by providing + # # the seed, which is printed after each run. + # # --seed 1234 + # config.order = :random + # + # # Seed global randomization in this process using the `--seed` CLI option. + # # Setting this allows you to use `--seed` to deterministically reproduce + # # test failures related to randomization by passing the same `--seed` value + # # as the one that triggered the failure. + # Kernel.srand config.seed + end + + if ENV.fetch('GITHUB_ACTIONS', false) || ENV.fetch('COVER', false) + require 'simplecov' + SimpleCov.start + end From 2151ed63827c4bdb72298dcc3bb1c28102671a70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Tue, 15 Sep 2020 22:20:43 +0200 Subject: [PATCH 3/5] Run RuboCop and Codecov --- .github/workflows/test.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a3f2cdd32..a26a3ef7a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -35,9 +35,20 @@ jobs: run: | bundle config path vendor/bundle bundle install --jobs 4 --retry 3 - - name: rake spec - run: bundle exec rake spec + - name: rspec + env: + PAGES_REPO_NWO: ${{ github.repository }} + JEKYLL_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: bundle exec rake + + - name: codecov upload + run: bundle exec rake codecov:upload || echo 'Codecov upload failed' + + - name: rubocop + run: bundle exec rubocop --fail-level warning --display-only-fail-level-offenses + + verify: runs-on: ubuntu-latest steps: From 48ad96ae7b05a65a351fb9e88d59d55b6ea0b187 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Tue, 15 Sep 2020 22:23:11 +0200 Subject: [PATCH 4/5] Set up Java --- .github/workflows/test.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a26a3ef7a..b27102948 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -28,9 +28,15 @@ jobs: path: vendor/bundle key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} restore-keys: ${{ runner.os }}-gems- + - uses: actions/setup-ruby@v1 with: ruby-version: '2.7' + + - uses: actions/setup-java@v1 + with: + java-version: '1.8' + - name: bundle install run: | bundle config path vendor/bundle @@ -48,7 +54,6 @@ jobs: - name: rubocop run: bundle exec rubocop --fail-level warning --display-only-fail-level-offenses - verify: runs-on: ubuntu-latest steps: From 8a431db72a9599416d4561d853edca3fb3ffea53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Ulsberg?= Date: Tue, 15 Sep 2020 22:23:54 +0200 Subject: [PATCH 5/5] Set up GraphViz --- .github/workflows/test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b27102948..7ab933603 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -37,6 +37,8 @@ jobs: with: java-version: '1.8' + - uses: kamiazya/setup-graphviz@v1 + - name: bundle install run: | bundle config path vendor/bundle