Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
e71f72e
Use MinVer to compute package versions
DavidNemecek Sep 20, 2025
b81c442
Merge pull request #2625 from litedb-org/codex/plan-move-to-github-ac…
JKamsker Sep 20, 2025
fda48e7
Remove MinVerDefaultPreReleaseIdentifiers environment variable from p…
JKamsker Sep 20, 2025
a12aea6
Update MinVerDefaultPreReleaseIdentifiers to use a single prerelease …
JKamsker Sep 20, 2025
e2eb0c2
Add Bitwarden secret retrieval for NuGet API key in publish workflows
JKamsker Sep 20, 2025
92b3f1b
Add test run settings and set timeout for test jobs in CI workflows
JKamsker Sep 20, 2025
6604e37
Add agents
JKamsker Sep 20, 2025
9276f08
Enhance test logging and introduce CpuBoundFactAttribute for CPU-boun…
JKamsker Sep 20, 2025
1b8a9aa
Comment out CI workflow steps for future reference
JKamsker Sep 20, 2025
c594e44
Add synthetic zip payloads for rebuild tests
JKamsker Sep 20, 2025
305aba7
Use deterministic sample for descending sort test
JKamsker Sep 20, 2025
d6dd57c
Clarify write lock timeout comment
JKamsker Sep 20, 2025
f9d9cff
Merge remote-tracking branch 'origin/codex/reduce-transaction-timeout…
JKamsker Sep 20, 2025
e77d6f4
Merge remote-tracking branch 'origin/codex/refactor-sort_tests-with-s…
JKamsker Sep 20, 2025
0ed00ff
Merge remote-tracking branch 'origin/codex/update-rebuild_tests-with-…
JKamsker Sep 20, 2025
6cbaeac
Refactor CI workflow by removing commented-out code for clarity
JKamsker Sep 20, 2025
23f5fa4
Add test database factory
JKamsker Sep 20, 2025
02cba90
Merge branch 'feat/improve-test-time' into codex/consolidate-test-dat…
JKamsker Sep 20, 2025
c880867
Default simple tests to in-memory database
JKamsker Sep 21, 2025
83c4d88
Merge remote-tracking branch 'origin/codex/consolidate-test-database-…
JKamsker Sep 21, 2025
7a0dfae
Merge pull request #10 from JKamsker/codex/consolidate-test-database-…
JKamsker Sep 21, 2025
d8f41da
Merge pull request #2627 from JKamsker/feat/improve-test-time
JKamsker Sep 21, 2025
065ae9b
Add support for multi-key query ordering
JKamsker Sep 21, 2025
69c100e
Merge remote-tracking branch 'upstream/dev' into codex/expand-query/q…
JKamsker Sep 21, 2025
1fa3bb4
Fix test
JKamsker Sep 21, 2025
40de44c
Changes from review
JKamsker Sep 21, 2025
14cd7c8
Add set of new tests
JKamsker Sep 21, 2025
26bc3da
Add more tests to multi order
JKamsker Sep 21, 2025
fa00f17
Merge pull request #2632 from JKamsker/feat/composite-sorting
JKamsker Sep 21, 2025
2eed470
Fix package versions
JKamsker Sep 21, 2025
1e37138
Merge pull request #2633 from JKamsker/dev
JKamsker Sep 21, 2025
8576017
Confirm rollback bug in dev
JKamsker Sep 23, 2025
086e813
Handle safepoint buffers during rollback
JKamsker Sep 23, 2025
98503e8
Manually verified rollback bug #2586
JKamsker Sep 23, 2025
2fcace1
Fix testing
JKamsker Sep 23, 2025
d89b162
Merge pull request #2638 from litedb-org/codex/fix-litedb-rollback-cr…
JKamsker Sep 23, 2025
8b02f19
Fix dev build
JKamsker Sep 23, 2025
bad7273
Simplify rebuild crash test setup
JKamsker Sep 23, 2025
de7fd61
Add timeouts to skipped query and rebuild tests
JKamsker Sep 23, 2025
07378b7
Log start and completion for long-running tests
JKamsker Sep 23, 2025
765c93c
Merge pull request #2639 from litedb-org/codex/investigate-rebuild_cr…
JKamsker Sep 23, 2025
7be883d
ifdef
JKamsker Sep 23, 2025
ebc9999
Switch to gitversion
JKamsker Sep 27, 2025
c32a197
Fix stuck unit tests
JKamsker Sep 27, 2025
bf3987f
Ensure external streams checkpoint on commit (#2652)
JKamsker Sep 27, 2025
30624bc
Add cleanup step for detached NuGet packages and enhance GitVersion c…
JKamsker Sep 28, 2025
d9d8a8d
Disable GitVersion in shallow clones (#2656)
JKamsker Sep 28, 2025
66ec615
Implement vectors (#2678)
JKamsker Sep 30, 2025
8630067
Repo Runner (#2690)
JKamsker Oct 1, 2025
fbb53e3
Improve build pipeline (#2692)
JKamsker Oct 1, 2025
3114fda
Add support for GroupBy (#2694)
JKamsker Oct 1, 2025
ce004d7
Use fixed stack buffers in string serializers (#2695)
JKamsker Oct 5, 2025
a540b2a
Fix support for custom dictionary key types (#546) (#2701)
JKamsker Oct 5, 2025
8622e13
Expand CI coverage across Windows and multi-target tests (#2702)
JKamsker Oct 5, 2025
2f9c286
Fix breaking change in dotnet 10 (#2703)
JKamsker Oct 5, 2025
2bb05aa
Refactor workflows to reuse CI for prerelease gating (#2704)
JKamsker Oct 5, 2025
58f5c22
Add workflow_dispatch support to publish prerelease workflow
JKamsker Oct 5, 2025
087bad0
Trigger gh workflow when workflow changes
JKamsker Oct 5, 2025
86eefe8
Fix/2670 memoryextensions net10 followup (#2710)
LPEdwin Oct 7, 2025
ff4d67c
Feat/fix mutexes (#2711)
JKamsker Oct 8, 2025
604d1d0
Fix/url encoded mutex (#2709)
JKamsker Oct 8, 2025
4b3fca1
Fix ReadFull must read PAGE_SIZE bytes [{0}]
isbdnt1 Oct 25, 2025
775349b
Add windows ci matrix (#2718)
JKamsker Oct 26, 2025
2ec2daf
Run ReproRunner in publish prerelease
JKamsker Oct 26, 2025
b9dead2
Add regression test
JKamsker Oct 28, 2025
1ab2331
Merge remote-tracking branch 'upstream/dev' into dev
JKamsker Oct 28, 2025
7ae5d1f
Merge pull request #2717 from isbdnt1/dev
JKamsker Oct 28, 2025
736ff09
Add macOS coverage to CI workflow
JKamsker Oct 28, 2025
e55199d
Merge pull request #2719 from JKamsker/feat/macos
JKamsker Oct 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .config/dotnet-tools.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"version": 1,
"isRoot": true,
"tools": {
"gitversion.tool": {
"version": "6.4.0",
"commands": [
"dotnet-gitversion"
],
"rollForward": false
}
}
}
9 changes: 9 additions & 0 deletions .github/os-matrix.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"linux": [
"ubuntu-22.04",
"ubuntu-24.04"
],
"windows": [
"windows-2022"
]
}
173 changes: 173 additions & 0 deletions .github/scripts/compose_repro_matrix.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
import json
import os
import sys
from pathlib import Path


def as_iterable(value):
if value is None:
return []
if isinstance(value, (list, tuple, set)):
return list(value)
return [value]


def main():
workspace = Path(os.getenv("GITHUB_WORKSPACE", Path.cwd()))
os_matrix_path = workspace / ".github" / "os-matrix.json"
repros_path = workspace / "repros.json"

os_matrix = json.loads(os_matrix_path.read_text(encoding="utf-8"))
platform_labels: dict[str, list[str]] = {}
label_platform: dict[str, str] = {}

for platform, labels in os_matrix.items():
normalized = platform.lower()
platform_labels[normalized] = []
for label in labels:
platform_labels[normalized].append(label)
label_platform[label] = normalized

all_labels = set(label_platform.keys())

payload = json.loads(repros_path.read_text(encoding="utf-8"))
repros = payload.get("repros") or []

matrix_entries: list[dict[str, str]] = []
skipped: list[str] = []
unknown_platforms: set[str] = set()
unknown_labels: set[str] = set()

def collect_labels(items, local_unknown):
labels = set()
for item in items:
key = item.lower()
if key in platform_labels:
labels.update(platform_labels[key])
else:
local_unknown.add(key)
unknown_platforms.add(key)
return labels

for repro in repros:
name = repro.get("name") or repro.get("id")
if not name:
continue

supports = as_iterable(repro.get("supports"))
normalized_supports = {str(item).lower() for item in supports if isinstance(item, str)}

local_unknown_platforms: set[str] = set()
local_unknown_labels: set[str] = set()

if not normalized_supports or "any" in normalized_supports:
candidate_labels = set(all_labels)
else:
candidate_labels = collect_labels(normalized_supports, local_unknown_platforms)

os_constraints = repro.get("os") or {}
include_platforms = {
str(item).lower()
for item in as_iterable(os_constraints.get("includePlatforms"))
if isinstance(item, str)
}
include_labels = {
str(item)
for item in as_iterable(os_constraints.get("includeLabels"))
if isinstance(item, str)
}
exclude_platforms = {
str(item).lower()
for item in as_iterable(os_constraints.get("excludePlatforms"))
if isinstance(item, str)
}
exclude_labels = {
str(item)
for item in as_iterable(os_constraints.get("excludeLabels"))
if isinstance(item, str)
}

if include_platforms:
candidate_labels &= collect_labels(include_platforms, local_unknown_platforms)

if include_labels:
recognized_includes = {label for label in include_labels if label in label_platform}
local_unknown_labels.update({label for label in include_labels if label not in label_platform})
unknown_labels.update(local_unknown_labels)
candidate_labels &= recognized_includes if recognized_includes else set()

if exclude_platforms:
candidate_labels -= collect_labels(exclude_platforms, local_unknown_platforms)

if exclude_labels:
recognized_excludes = {label for label in exclude_labels if label in label_platform}
candidate_labels -= recognized_excludes
unrecognized = {label for label in exclude_labels if label not in label_platform}
local_unknown_labels.update(unrecognized)
unknown_labels.update(unrecognized)

candidate_labels &= all_labels

if candidate_labels:
for label in sorted(candidate_labels):
matrix_entries.append(
{
"os": label,
"repro": name,
"platform": label_platform[label],
}
)
else:
reason_segments = []
if normalized_supports:
reason_segments.append(f"supports={sorted(normalized_supports)}")
if os_constraints:
reason_segments.append("os constraints applied")
if local_unknown_platforms:
reason_segments.append(f"unknown platforms={sorted(local_unknown_platforms)}")
if local_unknown_labels:
reason_segments.append(f"unknown labels={sorted(local_unknown_labels)}")
reason = "; ".join(reason_segments) or "no matching runners"
skipped.append(f"{name} ({reason})")

matrix_entries.sort(key=lambda entry: (entry["repro"], entry["os"]))

summary_lines = []
summary_lines.append(f"Total repro jobs: {len(matrix_entries)}")
if skipped:
summary_lines.append("")
summary_lines.append("Skipped repros:")
for item in skipped:
summary_lines.append(f"- {item}")
if unknown_platforms:
summary_lines.append("")
summary_lines.append("Unknown platforms encountered:")
for item in sorted(unknown_platforms):
summary_lines.append(f"- {item}")
if unknown_labels:
summary_lines.append("")
summary_lines.append("Unknown labels encountered:")
for item in sorted(unknown_labels):
summary_lines.append(f"- {item}")

summary_path = os.getenv("GITHUB_STEP_SUMMARY")
if summary_path:
with open(summary_path, "a", encoding="utf-8") as handle:
handle.write("\n".join(summary_lines) + "\n")

outputs_path = os.getenv("GITHUB_OUTPUT")
if not outputs_path:
raise RuntimeError("GITHUB_OUTPUT is not defined.")

with open(outputs_path, "a", encoding="utf-8") as handle:
handle.write("matrix=" + json.dumps({"include": matrix_entries}) + "\n")
handle.write("count=" + str(len(matrix_entries)) + "\n")
handle.write("skipped=" + json.dumps(skipped) + "\n")


if __name__ == "__main__":
try:
main()
except Exception as exc: # pragma: no cover - diagnostic output for CI
print(f"Failed to compose repro matrix: {exc}", file=sys.stderr)
raise
Loading
Loading