fbe 0.30.0 → 0.31.1
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 +4 -4
- data/fbe.gemspec +1 -1
- data/lib/fbe/conclude.rb +28 -11
- data/lib/fbe/fb.rb +6 -2
- data/lib/fbe/iterate.rb +2 -2
- data/lib/fbe/octo.rb +40 -22
- data/lib/fbe.rb +1 -1
- metadata +1 -31
- data/renovate.json +0 -6
- data/test/fbe/middleware/test_formatter.rb +0 -104
- data/test/fbe/middleware/test_rate_limit.rb +0 -152
- data/test/fbe/middleware/test_sqlite_store.rb +0 -446
- data/test/fbe/middleware/test_trace.rb +0 -168
- data/test/fbe/test_award.rb +0 -126
- data/test/fbe/test_bylaws.rb +0 -111
- data/test/fbe/test_conclude.rb +0 -172
- data/test/fbe/test_copy.rb +0 -39
- data/test/fbe/test_delete.rb +0 -117
- data/test/fbe/test_delete_one.rb +0 -56
- data/test/fbe/test_enter.rb +0 -35
- data/test/fbe/test_fb.rb +0 -102
- data/test/fbe/test_github_graph.rb +0 -169
- data/test/fbe/test_if_absent.rb +0 -107
- data/test/fbe/test_issue.rb +0 -26
- data/test/fbe/test_iterate.rb +0 -253
- data/test/fbe/test_just_one.rb +0 -33
- data/test/fbe/test_kill_if.rb +0 -39
- data/test/fbe/test_octo.rb +0 -791
- data/test/fbe/test_overwrite.rb +0 -103
- data/test/fbe/test_pmp.rb +0 -34
- data/test/fbe/test_regularly.rb +0 -27
- data/test/fbe/test_repeatedly.rb +0 -31
- data/test/fbe/test_sec.rb +0 -21
- data/test/fbe/test_tombstone.rb +0 -56
- data/test/fbe/test_unmask_repos.rb +0 -66
- data/test/fbe/test_who.rb +0 -25
- data/test/test__helper.rb +0 -45
- data/test/test_fbe.rb +0 -17
data/test/fbe/test_overwrite.rb
DELETED
@@ -1,103 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
|
4
|
-
# SPDX-License-Identifier: MIT
|
5
|
-
|
6
|
-
require 'factbase'
|
7
|
-
require 'judges/options'
|
8
|
-
require 'loog'
|
9
|
-
require_relative '../../lib/fbe/overwrite'
|
10
|
-
require_relative '../test__helper'
|
11
|
-
|
12
|
-
# Test.
|
13
|
-
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
14
|
-
# Copyright:: Copyright (c) 2024-2025 Zerocracy
|
15
|
-
# License:: MIT
|
16
|
-
class TestOverwrite < Fbe::Test
|
17
|
-
def test_simple_overwrite
|
18
|
-
fb = Factbase.new
|
19
|
-
f = fb.insert
|
20
|
-
f._id = 1
|
21
|
-
f.foo = 42
|
22
|
-
f.bar = 'hey you друг'
|
23
|
-
f.many = 3
|
24
|
-
f.many = 3.14
|
25
|
-
Fbe.overwrite(f, 'foo', 55, fb:)
|
26
|
-
assert_equal(55, fb.query('(always)').each.to_a.first['foo'].first)
|
27
|
-
assert_equal('hey you друг', fb.query('(always)').each.to_a.first['bar'].first)
|
28
|
-
assert_equal(2, fb.query('(always)').each.to_a.first['many'].size)
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_avoids_duplicates
|
32
|
-
fb = Factbase.new
|
33
|
-
f = fb.insert
|
34
|
-
f._id = 1
|
35
|
-
f._job = 42
|
36
|
-
f.foo = 'hello'
|
37
|
-
Fbe.overwrite(f, 'foo', 'bye', fb:)
|
38
|
-
f2 = fb.query('(exists foo)').each.to_a.first
|
39
|
-
assert_equal([1], f2['_id'])
|
40
|
-
assert_equal([42], f2['_job'])
|
41
|
-
assert_equal(['bye'], f2['foo'])
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_no_need_to_overwrite
|
45
|
-
fb = Factbase.new
|
46
|
-
f = fb.insert
|
47
|
-
f._id = 1
|
48
|
-
f.foo = 42
|
49
|
-
fb.insert._id = 2
|
50
|
-
Fbe.overwrite(f, 'foo', 42, fb:)
|
51
|
-
assert_equal(1, fb.query('(always)').each.to_a.first._id)
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_simple_insert
|
55
|
-
fb = Factbase.new
|
56
|
-
f = fb.insert
|
57
|
-
f._id = 1
|
58
|
-
Fbe.overwrite(f, 'foo', 42, fb:)
|
59
|
-
assert_equal(42, fb.query('(always)').each.to_a.first['foo'].first)
|
60
|
-
end
|
61
|
-
|
62
|
-
def test_without_id
|
63
|
-
fb = Factbase.new
|
64
|
-
f = fb.insert
|
65
|
-
assert_raises(StandardError) do
|
66
|
-
Fbe.overwrite(f, 'foo', 42, fb:)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
def test_safe_insert
|
71
|
-
fb = Factbase.new
|
72
|
-
f1 = fb.insert
|
73
|
-
f1.bar = 'a'
|
74
|
-
f2 = fb.insert
|
75
|
-
f2.bar = 'b'
|
76
|
-
f2._id = 2
|
77
|
-
f3 = fb.insert
|
78
|
-
f3._id = 1
|
79
|
-
Fbe.overwrite(f3, 'foo', 42, fb:)
|
80
|
-
assert_equal(3, fb.size)
|
81
|
-
end
|
82
|
-
|
83
|
-
def test_overwrites_in_transaction
|
84
|
-
$fb = Factbase.new
|
85
|
-
$global = {}
|
86
|
-
$options = Judges::Options.new(job_id: 42)
|
87
|
-
$loog = Loog::Buffer.new
|
88
|
-
Fbe.fb.txn do |fbt|
|
89
|
-
fbt.insert.then do |f|
|
90
|
-
f.issue = 444
|
91
|
-
f.where = 'github'
|
92
|
-
f.repository = 555
|
93
|
-
f.who = 887
|
94
|
-
f.when = Time.now
|
95
|
-
f.foo = 1
|
96
|
-
end
|
97
|
-
end
|
98
|
-
f1 = Fbe.fb.query('(always)').each.to_a.first
|
99
|
-
Fbe.overwrite(f1, 'foo', 'bar')
|
100
|
-
f2 = Fbe.fb.query('(always)').each.to_a.first
|
101
|
-
assert_equal('bar', f2.foo)
|
102
|
-
end
|
103
|
-
end
|
data/test/fbe/test_pmp.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
|
4
|
-
# SPDX-License-Identifier: MIT
|
5
|
-
|
6
|
-
require 'factbase'
|
7
|
-
require 'judges/options'
|
8
|
-
require 'loog'
|
9
|
-
require_relative '../../lib/fbe/pmp'
|
10
|
-
require_relative '../test__helper'
|
11
|
-
|
12
|
-
# Test.
|
13
|
-
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
14
|
-
# Copyright:: Copyright (c) 2024-2025 Zerocracy
|
15
|
-
# License:: MIT
|
16
|
-
class TestPmp < Fbe::Test
|
17
|
-
def test_defaults
|
18
|
-
$fb = Factbase.new
|
19
|
-
$global = {}
|
20
|
-
$options = Judges::Options.new
|
21
|
-
f = Fbe.fb(loog: Loog::NULL).insert
|
22
|
-
f.what = 'pmp'
|
23
|
-
f.area = 'hr'
|
24
|
-
f.days_to_reward = 55
|
25
|
-
$loog = Loog::NULL
|
26
|
-
assert_equal(55, Fbe.pmp(loog: Loog::NULL).hr.days_to_reward)
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_fail_on_wrong_area
|
30
|
-
$global = {}
|
31
|
-
$loog = Loog::NULL
|
32
|
-
assert_raises(StandardError) { Fbe.pmp(Factbase.new, loog: Loog::NULL).something }
|
33
|
-
end
|
34
|
-
end
|
data/test/fbe/test_regularly.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
|
4
|
-
# SPDX-License-Identifier: MIT
|
5
|
-
|
6
|
-
require 'factbase'
|
7
|
-
require 'loog'
|
8
|
-
require_relative '../../lib/fbe/regularly'
|
9
|
-
require_relative '../test__helper'
|
10
|
-
|
11
|
-
# Test.
|
12
|
-
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
13
|
-
# Copyright:: Copyright (c) 2024-2025 Zerocracy
|
14
|
-
# License:: MIT
|
15
|
-
class TestRegularly < Fbe::Test
|
16
|
-
def test_simple
|
17
|
-
fb = Factbase.new
|
18
|
-
loog = Loog::NULL
|
19
|
-
judge = 'test'
|
20
|
-
2.times do
|
21
|
-
Fbe.regularly('pmp', 'interval', 'days', fb:, loog:, judge:) do |f|
|
22
|
-
f.foo = 42
|
23
|
-
end
|
24
|
-
end
|
25
|
-
assert_equal(1, fb.size)
|
26
|
-
end
|
27
|
-
end
|
data/test/fbe/test_repeatedly.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
|
4
|
-
# SPDX-License-Identifier: MIT
|
5
|
-
|
6
|
-
require 'factbase'
|
7
|
-
require 'judges/options'
|
8
|
-
require 'loog'
|
9
|
-
require_relative '../../lib/fbe/repeatedly'
|
10
|
-
require_relative '../test__helper'
|
11
|
-
|
12
|
-
# Test.
|
13
|
-
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
14
|
-
# Copyright:: Copyright (c) 2024-2025 Zerocracy
|
15
|
-
# License:: MIT
|
16
|
-
class TestRepeatedly < Fbe::Test
|
17
|
-
def test_simple
|
18
|
-
$fb = Factbase.new
|
19
|
-
$loog = Loog::NULL
|
20
|
-
$options = Judges::Options.new
|
21
|
-
judge = 'test'
|
22
|
-
$global = {}
|
23
|
-
3.times do
|
24
|
-
Fbe.repeatedly('pmp', 'every_x_hours', judge:) do |f|
|
25
|
-
f.foo = 42
|
26
|
-
end
|
27
|
-
end
|
28
|
-
assert_equal(1, $fb.size)
|
29
|
-
assert_equal(42, $fb.query('(always)').each.to_a.first.foo)
|
30
|
-
end
|
31
|
-
end
|
data/test/fbe/test_sec.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
|
4
|
-
# SPDX-License-Identifier: MIT
|
5
|
-
|
6
|
-
require 'factbase'
|
7
|
-
require_relative '../../lib/fbe/sec'
|
8
|
-
require_relative '../test__helper'
|
9
|
-
|
10
|
-
# Test.
|
11
|
-
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
12
|
-
# Copyright:: Copyright (c) 2024-2025 Zerocracy
|
13
|
-
# License:: MIT
|
14
|
-
class TestSec < Fbe::Test
|
15
|
-
def test_simple
|
16
|
-
fb = Factbase.new
|
17
|
-
f = fb.insert
|
18
|
-
f.seconds = 333
|
19
|
-
assert(Fbe.sec(f).start_with?('5m'))
|
20
|
-
end
|
21
|
-
end
|
data/test/fbe/test_tombstone.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
|
4
|
-
# SPDX-License-Identifier: MIT
|
5
|
-
|
6
|
-
require 'factbase'
|
7
|
-
require_relative '../../lib/fbe/tombstone'
|
8
|
-
require_relative '../test__helper'
|
9
|
-
|
10
|
-
# Test.
|
11
|
-
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
12
|
-
# Copyright:: Copyright (c) 2024-2025 Zerocracy
|
13
|
-
# License:: MIT
|
14
|
-
class TestTombstone < Fbe::Test
|
15
|
-
def test_simple
|
16
|
-
fb = Factbase.new
|
17
|
-
ts = Fbe::Tombstone.new(fb:)
|
18
|
-
where = 'github'
|
19
|
-
ts.bury!(where, 41, 13)
|
20
|
-
ts.bury!(where, 42, 13)
|
21
|
-
ts.bury!(where, 42, 999)
|
22
|
-
assert(ts.has?(where, 41, 13))
|
23
|
-
assert(ts.has?(where, 42, 999))
|
24
|
-
refute(ts.has?(where, 8, 7))
|
25
|
-
refute(ts.has?(where, 43, 999))
|
26
|
-
refute(ts.has?(where, 43, 990))
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_on_empty
|
30
|
-
fb = Factbase.new
|
31
|
-
ts = Fbe::Tombstone.new(fb:)
|
32
|
-
where = 'github'
|
33
|
-
refute(ts.has?(where, 8, 7))
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_bury_twice
|
37
|
-
fb = Factbase.new
|
38
|
-
ts = Fbe::Tombstone.new(fb:)
|
39
|
-
where = 'github'
|
40
|
-
2.times { ts.bury!(where, 42, 7) }
|
41
|
-
assert(ts.has?(where, 42, 7))
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_merges_them
|
45
|
-
fb = Factbase.new
|
46
|
-
ts = Fbe::Tombstone.new(fb:)
|
47
|
-
where = 'github'
|
48
|
-
ts.bury!(where, 42, 13)
|
49
|
-
ts.bury!(where, 42, 18)
|
50
|
-
ts.bury!(where, 42, 14)
|
51
|
-
ts.bury!(where, 42, [17, 15, 16])
|
52
|
-
assert(ts.has?(where, 42, 16))
|
53
|
-
assert(ts.has?(where, 42, [16, 18]))
|
54
|
-
refute(ts.has?(where, 42, 22))
|
55
|
-
end
|
56
|
-
end
|
@@ -1,66 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
|
4
|
-
# SPDX-License-Identifier: MIT
|
5
|
-
|
6
|
-
require 'judges/options'
|
7
|
-
require 'loog'
|
8
|
-
require_relative '../../lib/fbe/unmask_repos'
|
9
|
-
require_relative '../test__helper'
|
10
|
-
|
11
|
-
# Test.
|
12
|
-
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
13
|
-
# Copyright:: Copyright (c) 2024-2025 Zerocracy
|
14
|
-
# License:: MIT
|
15
|
-
class TestUnmaskRepos < Fbe::Test
|
16
|
-
def test_simple_use
|
17
|
-
opts = Judges::Options.new(
|
18
|
-
{
|
19
|
-
'testing' => true,
|
20
|
-
'repositories' => 'yegor256/tacit,zerocracy/*,-zerocracy/judges-action,zerocracy/datum'
|
21
|
-
}
|
22
|
-
)
|
23
|
-
list = Fbe.unmask_repos(options: opts, global: {}, loog: Loog::NULL)
|
24
|
-
assert_predicate(list.size, :positive?)
|
25
|
-
refute_includes(list, 'zerocracy/datum')
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_iterates_them
|
29
|
-
opts = Judges::Options.new({ 'testing' => true, 'repositories' => 'yegor256/tacit,zerocracy/*' })
|
30
|
-
list = []
|
31
|
-
Fbe.unmask_repos(options: opts, global: {}, loog: Loog::NULL) do |n|
|
32
|
-
list << n
|
33
|
-
end
|
34
|
-
assert_predicate(list.size, :positive?)
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_fails_on_broken_names
|
38
|
-
WebMock.disable_net_connect!
|
39
|
-
stub_request(:get, 'https://api.github.com/rate_limit').to_return(
|
40
|
-
{ body: '{}', headers: { 'X-RateLimit-Remaining' => '222' } }
|
41
|
-
)
|
42
|
-
stub_request(:get, 'https://api.github.com/repos/foo/bar').to_return(status: 404)
|
43
|
-
options = Judges::Options.new({ 'repositories' => 'foo/bar' })
|
44
|
-
assert_raises(StandardError) { Fbe.unmask_repos(options:, global: {}, loog: Loog::NULL).each.to_a }
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_finds_case_insensitive
|
48
|
-
opts = Judges::Options.new({ 'testing' => true, 'repositories' => 'Yegor256/*' })
|
49
|
-
list = Fbe.unmask_repos(options: opts, global: {}, loog: Loog::NULL)
|
50
|
-
assert_equal(2, list.size)
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_live_usage
|
54
|
-
skip('Run it only manually, since it touches GitHub API')
|
55
|
-
opts = Judges::Options.new(
|
56
|
-
{
|
57
|
-
'repositories' => 'zerocracy/*,-zerocracy/judges-action,zerocracy/datum'
|
58
|
-
}
|
59
|
-
)
|
60
|
-
list = Fbe.unmask_repos(options: opts, global: {}, loog: Loog::NULL)
|
61
|
-
assert_predicate(list.size, :positive?)
|
62
|
-
assert_includes(list, 'zerocracy/pages-action')
|
63
|
-
refute_includes(list, 'zerocracy/judges-action')
|
64
|
-
refute_includes(list, 'zerocracy/datum')
|
65
|
-
end
|
66
|
-
end
|
data/test/fbe/test_who.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
|
4
|
-
# SPDX-License-Identifier: MIT
|
5
|
-
|
6
|
-
require 'factbase'
|
7
|
-
require 'judges/options'
|
8
|
-
require 'loog'
|
9
|
-
require_relative '../../lib/fbe/who'
|
10
|
-
require_relative '../test__helper'
|
11
|
-
|
12
|
-
# Test.
|
13
|
-
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
14
|
-
# Copyright:: Copyright (c) 2024-2025 Zerocracy
|
15
|
-
# License:: MIT
|
16
|
-
class TestWho < Fbe::Test
|
17
|
-
def test_simple
|
18
|
-
fb = Factbase.new
|
19
|
-
f = fb.insert
|
20
|
-
f.who = 444
|
21
|
-
global = {}
|
22
|
-
options = Judges::Options.new({ 'testing' => true })
|
23
|
-
assert_equal('@torvalds', Fbe.who(f, global:, options:, loog: Loog::NULL))
|
24
|
-
end
|
25
|
-
end
|
data/test/test__helper.rb
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
|
4
|
-
# SPDX-License-Identifier: MIT
|
5
|
-
|
6
|
-
$stdout.sync = true
|
7
|
-
|
8
|
-
ENV['RACK_ENV'] = 'test'
|
9
|
-
|
10
|
-
require 'simplecov'
|
11
|
-
require 'simplecov-cobertura'
|
12
|
-
unless SimpleCov.running || ARGV.include?('--no-cov')
|
13
|
-
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(
|
14
|
-
[
|
15
|
-
SimpleCov::Formatter::HTMLFormatter,
|
16
|
-
SimpleCov::Formatter::CoberturaFormatter
|
17
|
-
]
|
18
|
-
)
|
19
|
-
SimpleCov.minimum_coverage 80
|
20
|
-
SimpleCov.minimum_coverage_by_file 80
|
21
|
-
SimpleCov.start do
|
22
|
-
add_filter 'vendor/'
|
23
|
-
add_filter 'target/'
|
24
|
-
add_filter 'test/'
|
25
|
-
add_filter 'lib/fbe/github_graph.rb'
|
26
|
-
track_files 'lib/**/*.rb'
|
27
|
-
track_files '*.rb'
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
require 'minitest/reporters'
|
32
|
-
Minitest::Reporters.use! [Minitest::Reporters::SpecReporter.new]
|
33
|
-
|
34
|
-
require 'loog'
|
35
|
-
require 'minitest/autorun'
|
36
|
-
require 'minitest/stub_const'
|
37
|
-
require 'webmock/minitest'
|
38
|
-
require_relative '../lib/fbe'
|
39
|
-
|
40
|
-
# Parent class for all tests.
|
41
|
-
class Fbe::Test < Minitest::Test
|
42
|
-
def fake_loog
|
43
|
-
Loog::NULL
|
44
|
-
end
|
45
|
-
end
|
data/test/test_fbe.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
|
4
|
-
# SPDX-License-Identifier: MIT
|
5
|
-
|
6
|
-
require_relative '../lib/fbe'
|
7
|
-
require_relative 'test__helper'
|
8
|
-
|
9
|
-
# Main module test.
|
10
|
-
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
11
|
-
# Copyright:: Copyright (c) 2024-2025 Zerocracy
|
12
|
-
# License:: MIT
|
13
|
-
class TestFbe < Fbe::Test
|
14
|
-
def test_simple
|
15
|
-
refute_nil(Fbe::VERSION)
|
16
|
-
end
|
17
|
-
end
|