Skip to content

Commit 2b41f12

Browse files
authored
Merge pull request #721 from fartem/ci-34
2024-08-26 v. 6.5.5.1: updated GitHub Actions config
2 parents d31894a + 8590b03 commit 2b41f12

9 files changed

+79
-13
lines changed

.github/workflows/checks.yml

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
uses: ruby/setup-ruby@v1
2020
with:
2121
ruby-version: ${{ env.RUBY_VERSION }}
22-
- name: Run tests checker
22+
- name: Run TestsChecker
2323
run: ruby -r "./ci/tests_checker.rb" -e "::CI::TestsChecker.new.process"
2424

2525
links_checker:
@@ -30,7 +30,7 @@ jobs:
3030
uses: ruby/setup-ruby@v1
3131
with:
3232
ruby-version: ${{ env.RUBY_VERSION }}
33-
- name: Run links checker
33+
- name: Run LinksChecker
3434
run: ruby -r "./ci/links_checker.rb" -e "::CI::LinksChecker.new.process"
3535

3636
version_checker:
@@ -43,19 +43,30 @@ jobs:
4343
uses: ruby/setup-ruby@v1
4444
with:
4545
ruby-version: ${{ env.RUBY_VERSION }}
46-
- name: Run version checker
46+
- name: Run VersionChecker
4747
run: ruby -r "./ci/version_checker.rb" -e "::CI::VersionChecker.new.process"
4848

49-
readme_checker:
49+
readme_duplicates_checker:
5050
runs-on: ubuntu-latest
5151
steps:
5252
- uses: actions/checkout@v2
5353
- name: Set up Ruby
5454
uses: ruby/setup-ruby@v1
5555
with:
5656
ruby-version: ${{ env.RUBY_VERSION }}
57-
- name: Run README checker
58-
run: ruby -r "./ci/readme_checker.rb" -e "::CI::ReadmeChecker.new.process"
57+
- name: Run ReadmeDuplicatesChecker
58+
run: ruby -r "./ci/readme_duplicates_checker.rb" -e "::CI::ReadmeDuplicatesChecker.new.process"
59+
60+
readme_paths_checker:
61+
runs-on: ubuntu-latest
62+
steps:
63+
- uses: actions/checkout@v2
64+
- name: Set up Ruby
65+
uses: ruby/setup-ruby@v1
66+
with:
67+
ruby-version: ${{ env.RUBY_VERSION }}
68+
- name: Run ReadmePathsChecker
69+
run: ruby -r "./ci/readme_paths_checker.rb" -e "::CI::ReadmePathsChecker.new.process"
5970

6071
duplicate_links_checker:
6172
runs-on: ubuntu-latest
@@ -65,7 +76,7 @@ jobs:
6576
uses: ruby/setup-ruby@v1
6677
with:
6778
ruby-version: ${{ env.RUBY_VERSION }}
68-
- name: Run duplicate links checker
79+
- name: Run DuplicateLinksChecker
6980
run: ruby -r "./ci/duplicate_links_checker.rb" -e "::CI::DuplicateLinksChecker.new.process"
7081

7182
rubocop:

Rakefile

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,16 @@ end
2020

2121
desc 'Run all custom checks for CI'
2222
require_relative './ci/links_checker'
23-
require_relative './ci/readme_checker'
23+
require_relative './ci/readme_duplicates_checker'
24+
require_relative './ci/readme_paths_checker'
2425
require_relative './ci/tests_checker'
2526
require_relative './ci/version_checker'
2627
require_relative './ci/duplicate_links_checker'
2728
task :ci do
2829
[
2930
::CI::LinksChecker.new,
30-
::CI::ReadmeChecker.new,
31+
::CI::ReadmeDuplicatesChecker.new,
32+
::CI::ReadmePathsChecker.new,
3133
::CI::TestsChecker.new,
3234
::CI::VersionChecker.new,
3335
::CI::DuplicateLinksChecker.new

ci/duplicate_links_checker.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ def check
3030
return if links.size == links.uniq.size
3131

3232
error = "DuplicateLinksChecker ends with an error from. You have #{links.size - links.uniq.size} duplicates."
33+
3334
end_with_error(-> { puts(error) })
3435
end
3536
end

ci/links_checker.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ class LinksChecker < ::CI::CIJob
99
# @return {Void}
1010
def process
1111
check('easy')
12+
check('medium')
1213
end
1314

1415
private

ci/readme_checker.rb renamed to ci/readme_duplicates_checker.rb

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44

55
module CI
66
# CI job that checks links in README.
7-
class ReadmeChecker < ::CI::CIJob
8-
# Process ReadmeChecker.
7+
class ReadmeDuplicatesChecker < ::CI::CIJob
8+
# Process ReadmeDuplicatesChecker.
99
# @return {Void}
1010
def process
1111
check('easy')
12+
check('medium')
1213
end
1314

1415
private
@@ -23,7 +24,12 @@ def check(difficulty)
2324
solutions.each do |file_name|
2425
links_count = readme.count { |line| line.include?(file_name) }
2526

26-
end_with_error(-> { puts("ReadmeChecker ends with an error from #{file_name}.") }) if links_count != 1
27+
next if links_count == 1
28+
29+
error =
30+
"ReadmeDuplicatesChecker ends with an error from #{file_name}."
31+
32+
end_with_error(-> { puts(error) })
2733
end
2834
end
2935
end

ci/readme_paths_checker.rb

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# frozen_string_literal: true
2+
3+
require_relative './ci_job'
4+
5+
module CI
6+
# CI job that checks paths in README.
7+
class ReadmePathsChecker < ::CI::CIJob
8+
# Process ReadmePathsChecker.
9+
# @return {Void}
10+
def process
11+
check('easy')
12+
check('medium')
13+
end
14+
15+
private
16+
17+
# @param {String} difficulty
18+
# @return {Void}
19+
def check(difficulty)
20+
readme = ::File.read('./README.md')
21+
22+
path = "./lib/#{difficulty}"
23+
solutions = ::Dir.entries(path).reject { |file_name| file_name.start_with?('.') }
24+
solutions.each do |file_name|
25+
solution_path = "./lib/#{difficulty}/#{file_name}"
26+
tests_path = "./test/#{difficulty}/test_#{file_name}"
27+
28+
has_solution = readme.include?(solution_path)
29+
has_tests = readme.include?(tests_path)
30+
31+
next if has_solution && has_tests
32+
33+
puts(readme)
34+
35+
error = "ReadmePathsChecker ends with an error from #{file_name}."
36+
error << "\nHas solution: #{has_solution} with path #{solution_path}"
37+
error << "\nHas tests: #{has_tests} with path #{tests_path}"
38+
39+
end_with_error(-> { puts(error) })
40+
end
41+
end
42+
end
43+
end

ci/tests_checker.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ class TestsChecker < ::CI::CIJob
99
# @return {Void}
1010
def process
1111
check('easy')
12+
check('medium')
1213
end
1314

1415
private

leetcode-ruby.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ require 'English'
55
::Gem::Specification.new do |s|
66
s.required_ruby_version = '>= 3.0'
77
s.name = 'leetcode-ruby'
8-
s.version = '6.5.5'
8+
s.version = '6.5.5.1'
99
s.license = 'MIT'
1010
s.files = ::Dir['lib/**/*.rb'] + %w[README.md]
1111
s.executable = 'leetcode-ruby'

lib/medium/102_binary_tree_level_order_traversal.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# frozen_string_literal: true
22

3+
# https://leetcode.com/problems/binary-tree-level-order-traversal/
34
# @param {TreeNode} root
45
# @return {Integer[][]}
56
def level_order(root)

0 commit comments

Comments
 (0)