defer svcListCacheMtx.Unlock()
for _, ent := range svcListCache {
wg.Add(1)
+ clear := ent.clear
go func() {
- ent.clear <- struct{}{}
+ clear <- struct{}{}
wg.Done()
}()
}
loop do
ii = (lo + hi) / 2
range = @ranges[ii]
- if range.include?(target) && (target < range.end || ii == hi)
+ if range.include?(target) && (target < range.end || ii == hi-1)
return ii
elsif ii == lo
raise RangeError.new("%i not in segment" % target)
end
end
+ def test_range_edge_cases
+ [
+ ". d41d8cd98f00b204e9800998ecf8427e+0 0:0:file1\n",
+ ". d41d8cd98f00b204e9800998ecf8427e+0 0:0:file1 0:0:file2\n",
+ ". d41d8cd98f00b204e9800998ecf8427e+0 0:0:file1 0:0:file1\n",
+ ". d41d8cd98f00b204e9800998ecf8427e+0 0:0:file1 0:0:file2 0:0:file1\n",
+ ". 0cc175b9c0f1b6a831c399e269772661+1 0:0:file1 1:0:file2 1:0:file1\n",
+ ].each do |txt|
+ coll = Arv::Collection.new(txt)
+ coll.normalize
+ assert_match(/ 0:0:file1/, coll.manifest_text)
+ end
+ [
+ ". d41d8cd98f00b204e9800998ecf8427e+0 1:0:file1\n",
+ ". 0cc175b9c0f1b6a831c399e269772661+1 0:0:file1 2:0:file2 1:0:file1\n",
+ ].each do |txt|
+ assert_raises(RangeError) do
+ coll = Arv::Collection.new(txt)
+ coll.normalize
+ end
+ end
+ end
+
def test_non_manifest_construction_error
["word", ". abc def", ". #{random_block} 0:", ". / !"].each do |m_text|
assert_raises(ArgumentError,
# SPDX-License-Identifier: AGPL-3.0
module CommitsHelper
+ extend CurrentApiClient
class GitError < RequestError
def http_status
include KindAndEtag
include CommonApiTemplate
extend DbCurrentTime
+ extend CurrentApiClient
SERVER_START_TIME = db_current_time
require 'current_api_client'
-include CurrentApiClient
+# This is needed instead of just including CurrentApiClient so that its
+# methods don't get imported as Object's class methods; this is a problem because
+# the methods would be imported only on test environment. See #15716 for more info.
+class CurrentApiClientHelper
+ extend CurrentApiClient
+end
def has_symbols? x
if x.is_a? Hash
Node, PipelineInstance, PipelineTemplate,
Repository, Specimen, Trait, User, VirtualMachine,
Workflow].each do |klass|
- act_as_system_user do
+ CurrentApiClientHelper.act_as_system_user do
klass.all.each do |c|
check_for_serialized_symbols c
end
Node, PipelineInstance, PipelineTemplate,
Repository, Specimen, Trait, User, VirtualMachine,
Workflow].each do |klass|
- act_as_system_user do
+ CurrentApiClientHelper.act_as_system_user do
klass.all.each do |c|
stringify_serialized_symbols c
end