fbe 0.0.21 → 0.0.23

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a57f0e5f562ad6ac7400355614f0af933b2130470759a877d34ea35878a4e52c
4
- data.tar.gz: 0c93b9b7d1de5cf6f2c5bac41f71b663e19d7c1af667f5e6a41c53a361392afc
3
+ metadata.gz: b13ad3c8a5578c4a9e248948cab63ae21caeea7052d96260f2be85a43ee6f3b8
4
+ data.tar.gz: 90f8b081a67be3fd2f94a92cea890abb9b93f9b4b11a37a7bc6502f704c16510
5
5
  SHA512:
6
- metadata.gz: 1ec9cb12e7388c4260e9740255af73d8993e5b05abb0ee613bde3ee87e140a9b4b2bb1177c3dd14025e2a83c3eb3f87e8f5b84293f2b52256491860dd67b0807
7
- data.tar.gz: e11c60c5bedc1abe4eb68702285c8a76f08c03e3b3e76a3dbf01f8ab514a1c024e1af0f1b38408cff5b5e7d370e011e5da1fee7d9c11e0be50d8e0ccd641de89
6
+ metadata.gz: 9ea216f0e9be56b06ae8e350ea89b341f9d9fc230ca7785f5b0c0a494fcba3de913143e9c0c5d7074eea3ad368520bfaa462f891c5daf744b4ababbf05e600e8
7
+ data.tar.gz: 28c70598550a0e68ad1315fee0adce8ebeb31a7eb400f348181c0f916b3b5aac646a1d4f8d51d79f70e5553f3a4a88b33ba4afd67f2075a735cb578ea5312f0c
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # FactBase Extended
1
+ # FactBase Extended (FBE)
2
2
 
3
3
  [![DevOps By Rultor.com](http://www.rultor.com/b/zerocracy/fbe)](http://www.rultor.com/p/zerocracy/fbe)
4
4
  [![We recommend RubyMine](https://www.elegantobjects.org/rubymine.svg)](https://www.jetbrains.com/ruby/)
@@ -13,12 +13,14 @@
13
13
 
14
14
  It's a collection of tools for
15
15
  [zerocracy/judges-action](https://github.com/zerocracy/judges-action).
16
+ You are not supposed to use it directly, but only in a combination
17
+ with other tools of Zerocracy.
16
18
 
17
19
  ## How to contribute
18
20
 
19
21
  Read
20
22
  [these guidelines](https://www.yegor256.com/2014/04/15/github-guidelines.html).
21
- Make sure you build is green before you contribute
23
+ Make sure your build is green before you contribute
22
24
  your pull request. You will need to have
23
25
  [Ruby](https://www.ruby-lang.org/en/) 3.2+ and
24
26
  [Bundler](https://bundler.io/) installed. Then:
data/lib/fbe/award.rb CHANGED
@@ -24,7 +24,25 @@
24
24
 
25
25
  require 'factbase/syntax'
26
26
 
27
- # Award generator.
27
+ # A generator of awards.
28
+ #
29
+ # First, you should create a policy, using the same Lisp-ish syntax as
30
+ # we use in queries to a Factbase, for example:
31
+ #
32
+ # require 'fbe/award'
33
+ # a = Fbe::Award.new('(award (in loc "lines") (give (times loc 5) "for LoC"))')
34
+ #
35
+ # Then, you can either get a bill from it:
36
+ #
37
+ # b = a.bill(loc: 345)
38
+ # puts b.points # how many points to reward, a number
39
+ # puts b.greeting # how to explain the reward, a text
40
+ #
41
+ # Or else, you can get a policy text:
42
+ #
43
+ # p = a.policy
44
+ # puts p.markdown # Markdown of the policy
45
+ #
28
46
  # Author:: Yegor Bugayenko (yegor256@gmail.com)
29
47
  # Copyright:: Copyright (c) 2024 Yegor Bugayenko
30
48
  # License:: MIT
@@ -266,7 +284,14 @@ class Fbe::Award
266
284
 
267
285
  def greeting
268
286
  items = @lines.map { |l| "#{format('%+d', l[:v])} #{l[:t]}" }
269
- "You've earned #{format('%+d', points)} points for this: #{items.join('; ')}. "
287
+ case items.size
288
+ when 0
289
+ "You've earned nothing. "
290
+ when 1
291
+ "You've earned #{format('%+d', points)} points. "
292
+ else
293
+ "You've earned #{format('%+d', points)} points for this: #{items.join('; ')}. "
294
+ end
270
295
  end
271
296
  end
272
297
 
@@ -289,7 +314,7 @@ class Fbe::Award
289
314
  end
290
315
 
291
316
  def line(line)
292
- line = line.gsub(/\$\{([a-z_0-9]+)\}/) { |_x| @lets[Regexp.last_match[1].to_sym] }
317
+ line = line.gsub(/\$\{([a-z_0-9]+)\}/) { |_x| "**#{@lets[Regexp.last_match[1].to_sym]}**" }
293
318
  @lines << line
294
319
  end
295
320
 
data/lib/fbe/octo.rb CHANGED
@@ -175,6 +175,22 @@ class Fbe::FakeOctokit
175
175
  }
176
176
  end
177
177
 
178
+ def commit_pulls(repo, _sha)
179
+ [
180
+ pull_request(repo, 42)
181
+ ]
182
+ end
183
+
184
+ def pull_request(repo, number)
185
+ {
186
+ id: 42,
187
+ number:,
188
+ repo: {
189
+ full_name: repo
190
+ }
191
+ }
192
+ end
193
+
178
194
  def add_comment(_repo, _issue, _text)
179
195
  {
180
196
  id: 42
data/lib/fbe.rb CHANGED
@@ -27,5 +27,5 @@
27
27
  # License:: MIT
28
28
  module Fbe
29
29
  # Current version of the gem (changed by .rultor.yml on every release)
30
- VERSION = '0.0.21'
30
+ VERSION = '0.0.23'
31
31
  end
@@ -92,10 +92,20 @@ class TestAward < Minitest::Test
92
92
  '(award (let x_a 25) (set z (plus x_a 1)) (give z "..."))' =>
93
93
  'First, let _x-a_ be equal to **25**. Then, set _z_ to _x-a_ + **1**, and award _z_.',
94
94
  '(award (aka (let x 17) (give x "hey") "add ${x} when necessary"))' =>
95
- 'Just add 17 when necessary'
95
+ 'Just add **17** when necessary'
96
96
  }.each do |q, t|
97
97
  md = Fbe::Award.new(q).policy.markdown
98
98
  assert(md.include?(t), md)
99
99
  end
100
100
  end
101
+
102
+ def test_shorten_when_one_number
103
+ g = Fbe::Award.new('(award (give 23 "for love"))').bill.greeting
104
+ assert_equal('You\'ve earned +23 points. ', g, g)
105
+ end
106
+
107
+ def test_shorten_when_nothing
108
+ g = Fbe::Award.new('(award (give 0 "for none"))').bill.greeting
109
+ assert_equal('You\'ve earned nothing. ', g, g)
110
+ end
101
111
  end
data/test/fbe/test_fb.rb CHANGED
@@ -39,9 +39,11 @@ class TestFb < Minitest::Test
39
39
  $fb = Factbase.new
40
40
  $global = {}
41
41
  $options = Judges::Options.new
42
- $loog = Loog::NULL
42
+ $loog = Loog::Buffer.new
43
43
  Fbe.fb.insert.foo = 1
44
44
  Fbe.fb.insert.bar = 2
45
45
  assert_equal(1, Fbe.fb.query('(exists bar)').each.to_a.size)
46
+ stdout = $loog.to_s
47
+ assert(stdout.include?('Inserted new fact #1'), stdout)
46
48
  end
47
49
  end
@@ -38,6 +38,8 @@ class TestOcto < Minitest::Test
38
38
  options = Judges::Options.new({ 'testing' => true })
39
39
  o = Fbe.octo(loog: Loog::NULL, global:, options:)
40
40
  assert(!o.off_quota)
41
+ assert(!o.pull_request('foo/foo', 42).nil?)
42
+ assert(!o.commit_pulls('foo/foo', 'sha').nil?)
41
43
  end
42
44
 
43
45
  def test_post_comment
@@ -59,4 +61,11 @@ class TestOcto < Minitest::Test
59
61
  o = Fbe.octo(loog: Loog::NULL, global:, options:)
60
62
  assert_raises { o.repository('zerocracy/fbe') }
61
63
  end
64
+
65
+ def test_commit_pulls
66
+ skip # it's a "live" test, run it manually if you need it
67
+ o = Fbe.octo(loog: Loog::NULL, global: {}, options: Judges::Options.new)
68
+ assert_equal(1, o.commit_pulls('zerocracy/fbe', '0b7d0699bd744b62c0731064c2adaad0c58e1416').size)
69
+ assert_equal(0, o.commit_pulls('zerocracy/fbe', '16b3ea6b71c6e932ba7666c40ca846ecaa6d6f0d').size)
70
+ end
62
71
  end
data/test/test__helper.rb CHANGED
@@ -22,6 +22,9 @@
22
22
 
23
23
  $stdout.sync = true
24
24
 
25
+ require 'minitest/reporters'
26
+ Minitest::Reporters.use! [Minitest::Reporters::SpecReporter.new]
27
+
25
28
  require 'simplecov'
26
29
  SimpleCov.start
27
30
 
@@ -29,6 +32,3 @@ require 'simplecov-cobertura'
29
32
  SimpleCov.formatter = SimpleCov::Formatter::CoberturaFormatter
30
33
 
31
34
  require 'minitest/autorun'
32
-
33
- require 'minitest/reporters'
34
- Minitest::Reporters.use! [Minitest::Reporters::SpecReporter.new]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fbe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.21
4
+ version: 0.0.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-18 00:00:00.000000000 Z
11
+ date: 2024-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backtrace