Skip to content

Commit

Permalink
Prevent index_all being called multiple times
Browse files Browse the repository at this point in the history
  • Loading branch information
andyw8 committed Nov 18, 2024
1 parent 9e24cff commit be72efe
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 0 deletions.
10 changes: 10 additions & 0 deletions lib/ruby_indexer/lib/ruby_indexer/index.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ class Index

class UnresolvableAliasError < StandardError; end
class NonExistingNamespaceError < StandardError; end
class IndexNotEmptyError < StandardError; end

# The minimum Jaro-Winkler similarity score for an entry to be considered a match for a given fuzzy search query
ENTRY_SIMILARITY_THRESHOLD = 0.7
Expand Down Expand Up @@ -360,6 +361,15 @@ def resolve(name, nesting, seen_names = [])
).void
end
def index_all(indexable_paths: @configuration.indexables, &block)
# When troubleshooting an indexing issue, e.g. through irb, it's not obvious that `index_all` will augment the
# existing index values, meaning it may contain 'stale' entries. This check ensures that the user is aware of this
# behavior and can take appropriate action.
# binding.break
if @entries.any?
raise IndexNotEmptyError,
"The index is not empty. To prevent invalid entries, `index_all` can only be called once."
end

RBSIndexer.new(self).index_ruby_core
# Calculate how many paths are worth 1% of progress
progress_step = (indexable_paths.length / 100.0).ceil
Expand Down
7 changes: 7 additions & 0 deletions lib/ruby_indexer/test/index_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2023,5 +2023,12 @@ def test_build_non_redundant_name
),
)
end

def test_prevents_multiple_calls_to_index_all
# For this test class, `index_all` is already called once in `setup`.
assert_raises(Index::IndexNotEmptyError) do
@index.index_all
end
end
end
end

0 comments on commit be72efe

Please sign in to comment.