fbe 0.0.52 → 0.0.54

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 309cd51847c028c9e80e7e40f34ed193c9583c6694ec35bd06a4527bc4953cb4
4
- data.tar.gz: 04d8f6dd7d0e2f37197b2907ae12aa13490c450e9992b03b6a751054fabf0043
3
+ metadata.gz: 7b0b9b1716b7cc0b7f757fdbc023c90254d27582eba1e865e1d003a9a1b212f5
4
+ data.tar.gz: ba55f263c9a091c14ea08764bd081bc93e53e842539a9294899a5f6b760f32ce
5
5
  SHA512:
6
- metadata.gz: 78e677d074d3578301954956d0ff7215cfe0fa214ac6872fb548e53187d4f2fc60b735c8ef3ae35826f8bae86a4d4e0dacef16e342b82073847ee65dc02960a6
7
- data.tar.gz: 50dbfc1f7c4ee42ebf47550c1c5fd6911ae0420adb715676098d756297ca0563c7c64f6d1cda03f0987df82c6b9e5c3b1b23d05acacecaf913d709f9bb4b82df
6
+ metadata.gz: de5a40ffed186489c61661796d469c1b67a323230fb60120e4db02d6389b73e8c3d03071171dfd208e5e35813d82c05927a35f4b8e5e545507ed0e09199977a3
7
+ data.tar.gz: e2301187e03a966495eb31bd8f8ba89675ca0b78effe4f4542b04a9b03c4ce9e53f9fb31f2f0f126188187c29c9e6e06df6d562ade4e510bcae52060a816b1d5
data/Gemfile CHANGED
@@ -24,7 +24,7 @@ source 'https://rubygems.org'
24
24
  gemspec
25
25
 
26
26
  gem 'graphql-client'
27
- gem 'minitest', '5.25.0', require: false
27
+ gem 'minitest', '5.25.1', require: false
28
28
  gem 'minitest-reporters', '1.7.1', require: false
29
29
  gem 'rake', '13.2.1', require: false
30
30
  gem 'rspec-rails', '6.1.4', require: false
data/Gemfile.lock CHANGED
@@ -141,7 +141,7 @@ GEM
141
141
  crass (~> 1.0.2)
142
142
  nokogiri (>= 1.12.0)
143
143
  loog (0.6.0)
144
- minitest (5.25.0)
144
+ minitest (5.25.1)
145
145
  minitest-reporters (1.7.1)
146
146
  ansi
147
147
  builder
@@ -287,7 +287,7 @@ PLATFORMS
287
287
  DEPENDENCIES
288
288
  fbe!
289
289
  graphql-client
290
- minitest (= 5.25.0)
290
+ minitest (= 5.25.1)
291
291
  minitest-reporters (= 1.7.1)
292
292
  rake (= 13.2.1)
293
293
  rspec-rails (= 6.1.4)
data/README.md CHANGED
@@ -15,6 +15,33 @@ It's a collection of tools for
15
15
  You are not supposed to use it directly, but only in a combination
16
16
  with other tools of Zerocracy.
17
17
 
18
+ The following tools runs a block:
19
+
20
+ * `Fbe.regularly` runs a block of code every X days.
21
+ * `Fbe.conclude` runs a block on every fact from a query.
22
+ * `Fbe.iterate` runs a block on each repository, until it's time to stop.
23
+ * `Fbe.repeatedly` runs a block of code every X hours, leaving
24
+ a fact-marker in the factbase.
25
+
26
+ These tools help manage facts:
27
+
28
+ * `Fbe.fb` makes an entry point to the factbase.
29
+ * `Fbe.overwrite` changes a property in a fact to another value by deleting
30
+ the fact first, and then creating a new similar fact with all previous
31
+ properties but one changed.
32
+ * `Fbe.pmp` takes a PMP-related property by the area.
33
+
34
+ They help with formatting:
35
+
36
+ * `Fbe.who` formats user name.
37
+ * `Fbe.issue` formats issue number.
38
+ * `Fbe.award` calculates award by the policy.
39
+ * `Fbe.sec` formats seconds.
40
+
41
+ They help with external connections:
42
+
43
+ * `Fbe.octo` connects to GitHub API.
44
+
18
45
  ## How to contribute
19
46
 
20
47
  Read
data/lib/fbe/conclude.rb CHANGED
@@ -106,7 +106,6 @@ class Fbe::Conclude
106
106
  @follows.each do |follow|
107
107
  v = prev.send(follow)
108
108
  fact.send("#{follow}=", v)
109
- fact.cause = prev._id
110
109
  end
111
110
  r = yield fact, prev
112
111
  return unless r.is_a?(String)
data/lib/fbe/copy.rb ADDED
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ # MIT License
4
+ #
5
+ # Copyright (c) 2024 Zerocracy
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ # of this software and associated documentation files (the "Software"), to deal
9
+ # in the Software without restriction, including without limitation the rights
10
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ # copies of the Software, and to permit persons to whom the Software is
12
+ # furnished to do so, subject to the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be included in all
15
+ # copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ # SOFTWARE.
24
+
25
+ require_relative '../fbe'
26
+ require_relative 'fb'
27
+
28
+ # Make a copy of a fact, moving all properties to a new fact.
29
+ #
30
+ # @param [Factbase::Fact] source The source
31
+ # @param [Factbase::Fact] target The targer
32
+ # @param [Array<String>] except List of properties to NOT copy
33
+ def Fbe.copy(source, target, except: [])
34
+ raise 'The source is nil' if source.nil?
35
+ raise 'The target is nil' if target.nil?
36
+ raise 'The except is nil' if except.nil?
37
+ source.all_properties.each do |k|
38
+ next unless target[k].nil?
39
+ next if except.include?(k)
40
+ source[k].each do |v|
41
+ target.send(:"#{k}=", v)
42
+ end
43
+ end
44
+ end
@@ -22,6 +22,8 @@
22
22
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
23
  # SOFTWARE.
24
24
 
25
+ require_relative '../fbe'
26
+
25
27
  # The module.
26
28
  module Fbe::Middleware
27
29
  # empty
data/lib/fbe/octo.rb CHANGED
@@ -498,6 +498,206 @@ class Fbe::FakeOctokit
498
498
  },
499
499
  created_at: random_time,
500
500
  public: true
501
+ },
502
+ {
503
+ id: 42,
504
+ created_at: Time.now,
505
+ actor: { id: 42 },
506
+ type: 'PullRequestEvent',
507
+ repo: { id: repo },
508
+ payload: {
509
+ action: 'closed',
510
+ number: 172,
511
+ ref_type: 'tag',
512
+ ref: 'foo',
513
+ pull_request: {
514
+ url: 'https://api.github.com/repos/yegor256/judges/pulls/93',
515
+ id: 1_990_323_142,
516
+ node_id: 'PR_kwDOL6GCO852oevG',
517
+ number: 172,
518
+ state: 'closed',
519
+ locked: false,
520
+ title: '#999 new feature',
521
+ user: {
522
+ login: 'test',
523
+ id: 88_084_038,
524
+ node_id: 'MDQ6VXNlcjE2NDYwMjA=',
525
+ type: 'User',
526
+ site_admin: false
527
+ },
528
+ base: {
529
+ label: 'zerocracy:master',
530
+ ref: 'master',
531
+ user: {
532
+ login: 'zerocracy',
533
+ id: 24_234_201
534
+ },
535
+ repo: {
536
+ id: repo,
537
+ node_id: 'R_kgDOK2_4Aw',
538
+ name: 'baza',
539
+ full_name: 'zerocracy/baza',
540
+ private: false
541
+ }
542
+ },
543
+ head: {
544
+ ref: 'zerocracy/baza'
545
+ },
546
+ merged_at: Time.now,
547
+ comments: 2,
548
+ review_comments: 2,
549
+ commits: 1,
550
+ additions: 3,
551
+ deletions: 3,
552
+ changed_files: 2
553
+ }
554
+ }
555
+ }
556
+ ]
557
+ end
558
+
559
+ def pull_request_comments(_name, _number)
560
+ [
561
+ {
562
+ pull_request_review_id: 2_227_372_510,
563
+ id: 1_709_082_318,
564
+ path: 'test/baza/test_locks.rb',
565
+ commit_id: 'a9f5f94cf28f29a64d5dd96d0ee23b4174572847',
566
+ original_commit_id: 'e8c6f94274d14ed3cb26fe71467a9c3f229df59c',
567
+ user: {
568
+ login: 'Reviewer',
569
+ id: 2_566_462
570
+ },
571
+ body: 'Most likely, parentheses were missed here.',
572
+ created_at: '2024-08-08T09:41:46Z',
573
+ updated_at: '2024-08-08T09:42:46Z',
574
+ reactions: {
575
+ url: 'https://api.github.com/repos/zerocracy/baza/pulls/comments/1709082318/reactions',
576
+ total_count: 0
577
+ },
578
+ start_line: 'null',
579
+ original_start_line: 'null',
580
+ start_side: 'null',
581
+ line: 'null',
582
+ original_line: 62,
583
+ side: 'RIGHT',
584
+ original_position: 25,
585
+ position: 'null',
586
+ subject_type: 'line'
587
+ },
588
+ {
589
+ pull_request_review_id: 2_227_372_510,
590
+ id: 1_709_082_319,
591
+ path: 'test/baza/test_locks.rb',
592
+ commit_id: 'a9f5f94cf28f29a64d5dd96d0ee23b4174572847',
593
+ original_commit_id: 'e8c6f94274d14ed3cb26fe71467a9c3f229df59c',
594
+ user: {
595
+ login: 'test',
596
+ id: 88_084_038
597
+ },
598
+ body: 'definitely a typo',
599
+ created_at: '2024-08-08T09:42:46Z',
600
+ updated_at: '2024-08-08T09:42:46Z',
601
+ reactions: {
602
+ url: 'https://api.github.com/repos/zerocracy/baza/pulls/comments/1709082319/reactions',
603
+ total_count: 0
604
+ },
605
+ start_line: 'null',
606
+ original_start_line: 'null',
607
+ start_side: 'null',
608
+ line: 'null',
609
+ original_line: 62,
610
+ side: 'RIGHT',
611
+ original_position: 25,
612
+ in_reply_to_id: 1_709_082_318,
613
+ position: 'null',
614
+ subject_type: 'line'
615
+ }
616
+ ]
617
+ end
618
+
619
+ def issue_comments(_name, _number)
620
+ [
621
+ {
622
+ pull_request_review_id: 2_227_372_510,
623
+ id: 1_709_082_320,
624
+ path: 'test/baza/test_locks.rb',
625
+ commit_id: 'a9f5f94cf28f29a64d5dd96d0ee23b4174572847',
626
+ original_commit_id: 'e8c6f94274d14ed3cb26fe71467a9c3f229df59c',
627
+ user: {
628
+ login: 'Reviewer',
629
+ id: 2_566_462
630
+ },
631
+ body: 'reviewer comment',
632
+ created_at: '2024-08-08T09:41:46Z',
633
+ updated_at: '2024-08-08T09:42:46Z',
634
+ reactions: {
635
+ url: 'https://api.github.com/repos/zerocracy/baza/pulls/comments/1709082320/reactions',
636
+ total_count: 1
637
+ },
638
+ start_line: 'null',
639
+ original_start_line: 'null',
640
+ start_side: 'null',
641
+ line: 'null',
642
+ original_line: 62,
643
+ side: 'RIGHT',
644
+ original_position: 25,
645
+ position: 'null',
646
+ subject_type: 'line'
647
+ },
648
+ {
649
+ pull_request_review_id: 2_227_372_510,
650
+ id: 1_709_082_321,
651
+ path: 'test/baza/test_locks.rb',
652
+ commit_id: 'a9f5f94cf28f29a64d5dd96d0ee23b4174572847',
653
+ original_commit_id: 'e8c6f94274d14ed3cb26fe71467a9c3f229df59c',
654
+ user: {
655
+ login: 'test',
656
+ id: 88_084_038
657
+ },
658
+ body: 'author comment',
659
+ created_at: '2024-08-08T09:42:46Z',
660
+ updated_at: '2024-08-08T09:42:46Z',
661
+ reactions: {
662
+ url: 'https://api.github.com/repos/zerocracy/baza/pulls/comments/1709082321/reactions',
663
+ total_count: 1
664
+ },
665
+ start_line: 'null',
666
+ original_start_line: 'null',
667
+ start_side: 'null',
668
+ line: 'null',
669
+ original_line: 62,
670
+ side: 'RIGHT',
671
+ original_position: 25,
672
+ in_reply_to_id: 1_709_082_318,
673
+ position: 'null',
674
+ subject_type: 'line'
675
+ }
676
+ ]
677
+ end
678
+
679
+ def issue_comment_reactions(_name, _comment)
680
+ [
681
+ {
682
+ id: 248_923_574,
683
+ user: {
684
+ login: 'user',
685
+ id: 8_086_956
686
+ },
687
+ content: 'heart'
688
+ }
689
+ ]
690
+ end
691
+
692
+ def pull_request_review_comment_reactions(_name, _comment)
693
+ [
694
+ {
695
+ id: 248_923_574,
696
+ user: {
697
+ login: 'user',
698
+ id: 8_086_956
699
+ },
700
+ content: 'heart'
501
701
  }
502
702
  ]
503
703
  end
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.52'
30
+ VERSION = '0.0.54'
31
31
  end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ # MIT License
4
+ #
5
+ # Copyright (c) 2024 Zerocracy
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ # of this software and associated documentation files (the "Software"), to deal
9
+ # in the Software without restriction, including without limitation the rights
10
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ # copies of the Software, and to permit persons to whom the Software is
12
+ # furnished to do so, subject to the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be included in all
15
+ # copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ # SOFTWARE.
24
+
25
+ require 'minitest/autorun'
26
+ require 'factbase'
27
+ require_relative '../test__helper'
28
+ require_relative '../../lib/fbe/copy'
29
+
30
+ # Test.
31
+ # Author:: Yegor Bugayenko (yegor256@gmail.com)
32
+ # Copyright:: Copyright (c) 2024 Zerocracy
33
+ # License:: MIT
34
+ class TestCopy < Minitest::Test
35
+ def test_simple_copy
36
+ fb = Factbase.new
37
+ f1 = fb.insert
38
+ f1._id = 1
39
+ f1.foo = 42
40
+ f2 = fb.insert
41
+ f2._id = 2
42
+ Fbe.copy(f1, f2)
43
+ assert_equal(2, f2._id)
44
+ assert_equal(42, f2.foo)
45
+ end
46
+
47
+ def test_with_except
48
+ fb = Factbase.new
49
+ f1 = fb.insert
50
+ f1._id = 1
51
+ f1.foo = 42
52
+ f2 = fb.insert
53
+ f2._id = 2
54
+ Fbe.copy(f1, f2, except: ['foo'])
55
+ assert(f2['foo'].nil?)
56
+ end
57
+ end
@@ -160,6 +160,6 @@ class TestOcto < Minitest::Test
160
160
  assert(!o.off_quota) if n > 100
161
161
  limit -= 1
162
162
  end
163
- assert_in_delta(pause, Time.now - start_time, 0.4)
163
+ assert_in_delta(pause, Time.now - start_time, 1)
164
164
  end
165
165
  end
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.52
4
+ version: 0.0.54
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-08-16 00:00:00.000000000 Z
11
+ date: 2024-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backtrace
@@ -240,6 +240,7 @@ files:
240
240
  - lib/fbe.rb
241
241
  - lib/fbe/award.rb
242
242
  - lib/fbe/conclude.rb
243
+ - lib/fbe/copy.rb
243
244
  - lib/fbe/fb.rb
244
245
  - lib/fbe/github_graph.rb
245
246
  - lib/fbe/if_absent.rb
@@ -261,6 +262,7 @@ files:
261
262
  - test/fbe/middleware/test_quota.rb
262
263
  - test/fbe/test_award.rb
263
264
  - test/fbe/test_conclude.rb
265
+ - test/fbe/test_copy.rb
264
266
  - test/fbe/test_fb.rb
265
267
  - test/fbe/test_github_graph.rb
266
268
  - test/fbe/test_if_absent.rb