Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
942186a
refactor: BitbucketClient to use System.Text.Json and improve authent…
diomonogatari Feb 6, 2026
db1582c
refactor: Update BitbucketClient methods to support CancellationToken…
diomonogatari Feb 6, 2026
a730d38
refactor: Update method signatures to support nullable parameters in …
diomonogatari Feb 6, 2026
fbd7396
refactor: Add JSON converters for BlockerCommentState and CommentSeve…
diomonogatari Feb 6, 2026
2cd030e
refactor: Introduce BlockerComment and BlockerCommentState models; up…
diomonogatari Feb 6, 2026
ea4abf9
refactor: Enhance ErrorResponse and PagedResults classes with XML doc…
diomonogatari Feb 6, 2026
b2526b9
refactor: Replace Newtonsoft.Json with System.Text.Json.Serialization…
diomonogatari Feb 6, 2026
5cdddb8
refactor: Migrate from Newtonsoft.Json to System.Text.Json.Serializat…
diomonogatari Feb 6, 2026
851c294
refactor: Update Error class with nullable properties and enhanced XM…
diomonogatari Feb 6, 2026
72cd72b
refactor: Introduce custom exception classes for Bitbucket API errors
diomonogatari Feb 6, 2026
478bdc6
refactor: Replace Newtonsoft.Json with System.Text.Json.Serialization…
diomonogatari Feb 6, 2026
8b77d0f
refactor: Replace Newtonsoft.Json with System.Text.Json.Serialization…
diomonogatari Feb 6, 2026
0162085
feat: Add MCP-optimized diff streaming and pagination extension methods
diomonogatari Feb 6, 2026
2b243f0
feat: Add source-generated JSON serialization context for Bitbucket m…
diomonogatari Feb 6, 2026
dfc9731
refactor: Add CancellationToken support to admin-related async method…
diomonogatari Feb 6, 2026
457809b
feat: Add CancellationToken support to async methods in BitbucketClie…
diomonogatari Feb 6, 2026
2458126
feat: Add GetWhoAmIAsync method to retrieve the authenticated user's …
diomonogatari Feb 6, 2026
7d8f42d
feat: Add CancellationToken support to async methods in BitbucketClie…
diomonogatari Feb 6, 2026
bd519ae
feat: Add CancellationToken support to async methods in BitbucketClie…
diomonogatari Feb 6, 2026
bd87660
feat: Add CancellationToken support to async methods in BitbucketClie…
diomonogatari Feb 6, 2026
c27bdca
feat: Add CancellationToken support to async methods in BitbucketClie…
diomonogatari Feb 6, 2026
eb7f9aa
feat: add streaming Bitbucket client APIs with cancellation tokens an…
diomonogatari Feb 6, 2026
95e7fdc
feat: add CancellationToken support to GetRepositoriesAsync and GetRe…
diomonogatari Feb 6, 2026
b6c326c
feat: add benchmarks project for performance testing
diomonogatari Feb 6, 2026
0ebe30a
feat: add benchmarks for JSON serialization and source generation per…
diomonogatari Feb 6, 2026
06f822a
feat: add benchmarks for streaming vs buffered pagination approaches
diomonogatari Feb 6, 2026
625c38b
feat: add ZeroCopy benchmarks for ArrayPool and JsonElement deseriali…
diomonogatari Feb 6, 2026
f99ab58
feat: add benchmarks for response handling of large payloads with dif…
diomonogatari Feb 6, 2026
1e7b84c
feat: add benchmark configurations for default, quick, and full runs
diomonogatari Feb 6, 2026
a130026
feat: add initial benchmark program and README documentation
diomonogatari Feb 6, 2026
b24c014
feat: add JSON fixtures for admin configurations including cluster, g…
diomonogatari Feb 6, 2026
0a25bfe
feat: add JSON fixtures for various core components including applica…
diomonogatari Feb 6, 2026
e98b62d
feat: add JSON fixtures for error responses including 401, 404, and 5…
diomonogatari Feb 6, 2026
1dea8cc
feat: add JSON fixtures for SSH keys and settings including single an…
diomonogatari Feb 6, 2026
50913f3
feat: add JSON fixtures for permissions including default, deletable …
diomonogatari Feb 6, 2026
9deb1f6
feat: add JSON fixtures for audit events, branch information, build s…
diomonogatari Feb 6, 2026
be695c5
feat: add JSON fixtures for hooks, pull requests, and Jira issues
diomonogatari Feb 6, 2026
2211e57
feat: add JSON fixtures for pull requests including activities, comme…
diomonogatari Feb 6, 2026
abad526
feat: add JSON fixtures for default reviewers, reviewer conditions, G…
diomonogatari Feb 6, 2026
750f85b
feat: add JSON fixtures for comment likes, pull request suggestions, …
diomonogatari Feb 6, 2026
ce74f45
feat: update project configuration and dependencies for improved comp…
diomonogatari Feb 6, 2026
06ff171
Add unit and mock tests for Bitbucket client functionality
diomonogatari Feb 6, 2026
781fe5b
feat: add unit tests for DiffStreamingExtensions and McpExtensions wi…
diomonogatari Feb 6, 2026
a80b1f7
feat: add mock tests for admin functionalities including user and gro…
diomonogatari Feb 6, 2026
5053336
feat: add BitbucketMockFixture for testing infrastructure with WireMock
diomonogatari Feb 6, 2026
88e2c0c
test(infrastructure): Add MockSetupExtensions with 150+ WireMock conf…
diomonogatari Feb 6, 2026
f79f7cd
feat(tests): add mock tests for application properties, audit events,…
diomonogatari Feb 6, 2026
a185525
feat(tests): add comprehensive mock tests for various Bitbucket funct…
diomonogatari Feb 6, 2026
95de483
feat(tests): add mock tests for pull request operations including app…
diomonogatari Feb 6, 2026
5ec6028
feat(tests): add mock tests for changes, commits, files, and comment …
diomonogatari Feb 6, 2026
cdeccc5
feat(tests): add mock tests for profile, project CRUD, permissions, s…
diomonogatari Feb 6, 2026
233a48c
feat(tests): add mock tests for repository synchronization, CRUD oper…
diomonogatari Feb 6, 2026
f7dcdcf
feat(tests): add unit tests for CommonModel, DiffStreamingExtensions,…
diomonogatari Feb 6, 2026
7ae0728
feat(tests): add unit tests for JSON converters and model serialization
diomonogatari Feb 6, 2026
0a94bae
feat(tests): add unit tests for McpExtensions pagination and result h…
diomonogatari Feb 6, 2026
d4c95d7
feat(ci): consolidate CI configuration by replacing AppVeyor and dotn…
diomonogatari Feb 6, 2026
49bb954
feat(docs): add initial changelog and update README with usage instru…
diomonogatari Feb 6, 2026
5acca74
feat(gitignore): add coverage and test temp files to .gitignore
diomonogatari Feb 6, 2026
ffd9648
feat(build): remove obsolete build and test scripts
diomonogatari Feb 6, 2026
8b6928d
feat(vscode): add launch and task configurations for benchmarks and t…
diomonogatari Feb 6, 2026
4e0f813
refactor(tests): remove legacy integration tests in favor of WireMock…
diomonogatari Feb 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
38 changes: 38 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: CI

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

# Cancel in-progress runs for the same branch/PR to save minutes
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
build:
name: Build & Test
runs-on: ubuntu-latest
timeout-minutes: 10

steps:
- uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0.x'

- name: Restore
run: dotnet restore

- name: Build
run: dotnet build --no-restore -c Release

- name: Test
run: dotnet test --no-build -c Release --verbosity normal
58 changes: 0 additions & 58 deletions .github/workflows/dotnet.yml

This file was deleted.

13 changes: 12 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -288,4 +288,15 @@ __pycache__/
*.odx.cs
*.xsd.cs

appsettings.json
appsettings.json

# Coverage files
coverage.*.xml
coverage.json
coverage-results/
**/coverage.cobertura.xml
**/coverage.json
**/coverage.opencover.xml

# Test temp/GUID folders
test/**/[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]-*/
75 changes: 75 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Run Benchmarks (Interactive)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build-release",
"program": "${workspaceFolder}/benchmarks/Bitbucket.Net.Benchmarks/bin/Release/net10.0/Bitbucket.Net.Benchmarks.dll",
"args": [],
"cwd": "${workspaceFolder}/benchmarks/Bitbucket.Net.Benchmarks",
"console": "integratedTerminal",
"stopAtEntry": false
},
{
"name": "Run Benchmarks - All",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build-release",
"program": "${workspaceFolder}/benchmarks/Bitbucket.Net.Benchmarks/bin/Release/net10.0/Bitbucket.Net.Benchmarks.dll",
"args": ["--filter", "*"],
"cwd": "${workspaceFolder}/benchmarks/Bitbucket.Net.Benchmarks",
"console": "integratedTerminal",
"stopAtEntry": false
},
{
"name": "Run Benchmarks - JSON Serialization",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build-release",
"program": "${workspaceFolder}/benchmarks/Bitbucket.Net.Benchmarks/bin/Release/net10.0/Bitbucket.Net.Benchmarks.dll",
"args": ["--filter", "*JsonSerialization*"],
"cwd": "${workspaceFolder}/benchmarks/Bitbucket.Net.Benchmarks",
"console": "integratedTerminal",
"stopAtEntry": false
},
{
"name": "Run Benchmarks - Streaming",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build-release",
"program": "${workspaceFolder}/benchmarks/Bitbucket.Net.Benchmarks/bin/Release/net10.0/Bitbucket.Net.Benchmarks.dll",
"args": ["--filter", "*Streaming*"],
"cwd": "${workspaceFolder}/benchmarks/Bitbucket.Net.Benchmarks",
"console": "integratedTerminal",
"stopAtEntry": false
},
{
"name": "Run Benchmarks - Response Handling",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build-release",
"program": "${workspaceFolder}/benchmarks/Bitbucket.Net.Benchmarks/bin/Release/net10.0/Bitbucket.Net.Benchmarks.dll",
"args": ["--filter", "*ResponseHandling*"],
"cwd": "${workspaceFolder}/benchmarks/Bitbucket.Net.Benchmarks",
"console": "integratedTerminal",
"stopAtEntry": false
},
{
"name": "Debug Tests",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "dotnet",
"args": [
"test",
"${workspaceFolder}/test/Bitbucket.Net.Tests/Bitbucket.Net.Tests.csproj",
"--no-build"
],
"cwd": "${workspaceFolder}",
"console": "integratedTerminal",
"stopAtEntry": false
}
]
}
154 changes: 154 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Bitbucket.Net.sln",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary;ForceNoAlign"
],
"problemMatcher": "$msCompile",
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "build-release",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Bitbucket.Net.sln",
"-c",
"Release",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary;ForceNoAlign"
],
"problemMatcher": "$msCompile"
},
{
"label": "test",
"command": "dotnet",
"type": "process",
"args": [
"test",
"${workspaceFolder}/test/Bitbucket.Net.Tests/Bitbucket.Net.Tests.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary;ForceNoAlign"
],
"problemMatcher": "$msCompile",
"group": {
"kind": "test",
"isDefault": true
}
},
{
"label": "benchmark: Run All",
"command": "dotnet",
"type": "process",
"args": [
"run",
"-c",
"Release",
"--project",
"${workspaceFolder}/benchmarks/Bitbucket.Net.Benchmarks/Bitbucket.Net.Benchmarks.csproj"
],
"problemMatcher": "$msCompile",
"presentation": {
"reveal": "always",
"panel": "new"
},
"group": "none"
},
{
"label": "benchmark: JSON Serialization",
"command": "dotnet",
"type": "process",
"args": [
"run",
"-c",
"Release",
"--project",
"${workspaceFolder}/benchmarks/Bitbucket.Net.Benchmarks/Bitbucket.Net.Benchmarks.csproj",
"--",
"--filter",
"*JsonSerialization*"
],
"problemMatcher": "$msCompile",
"presentation": {
"reveal": "always",
"panel": "new"
}
},
{
"label": "benchmark: Streaming",
"command": "dotnet",
"type": "process",
"args": [
"run",
"-c",
"Release",
"--project",
"${workspaceFolder}/benchmarks/Bitbucket.Net.Benchmarks/Bitbucket.Net.Benchmarks.csproj",
"--",
"--filter",
"*Streaming*"
],
"problemMatcher": "$msCompile",
"presentation": {
"reveal": "always",
"panel": "new"
}
},
{
"label": "benchmark: Response Handling",
"command": "dotnet",
"type": "process",
"args": [
"run",
"-c",
"Release",
"--project",
"${workspaceFolder}/benchmarks/Bitbucket.Net.Benchmarks/Bitbucket.Net.Benchmarks.csproj",
"--",
"--filter",
"*ResponseHandling*"
],
"problemMatcher": "$msCompile",
"presentation": {
"reveal": "always",
"panel": "new"
}
},
{
"label": "clean",
"command": "dotnet",
"type": "process",
"args": [
"clean",
"${workspaceFolder}/Bitbucket.Net.sln"
],
"problemMatcher": "$msCompile"
},
{
"label": "pack",
"command": "dotnet",
"type": "process",
"args": [
"pack",
"${workspaceFolder}/src/Bitbucket.Net/Bitbucket.Net.csproj",
"-c",
"Release",
"-o",
"${workspaceFolder}/artifacts"
],
"problemMatcher": "$msCompile",
"dependsOn": "build-release"
}
]
}
9 changes: 9 additions & 0 deletions Bitbucket.Net.sln
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{B7E00533
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bitbucket.Net.Tests", "test\Bitbucket.Net.Tests\Bitbucket.Net.Tests.csproj", "{7775DD13-F980-4838-8FE4-6E8B96221298}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Benchmarks", "Benchmarks", "{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bitbucket.Net.Benchmarks", "benchmarks\Bitbucket.Net.Benchmarks\Bitbucket.Net.Benchmarks.csproj", "{B2C3D4E5-F6A7-8901-BCDE-F12345678901}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand All @@ -40,12 +44,17 @@ Global
{7775DD13-F980-4838-8FE4-6E8B96221298}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7775DD13-F980-4838-8FE4-6E8B96221298}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7775DD13-F980-4838-8FE4-6E8B96221298}.Release|Any CPU.Build.0 = Release|Any CPU
{B2C3D4E5-F6A7-8901-BCDE-F12345678901}.Debug|Any CPU.ActiveCfg = Release|Any CPU
{B2C3D4E5-F6A7-8901-BCDE-F12345678901}.Debug|Any CPU.Build.0 = Release|Any CPU
{B2C3D4E5-F6A7-8901-BCDE-F12345678901}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B2C3D4E5-F6A7-8901-BCDE-F12345678901}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{7775DD13-F980-4838-8FE4-6E8B96221298} = {B7E00533-033F-48D3-A01C-40BD264F245A}
{B2C3D4E5-F6A7-8901-BCDE-F12345678901} = {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {06DABD0E-1A16-4B84-9DF3-A1B8E73D18AF}
Expand Down
Loading
Loading