Skip to content

Commit

Permalink
Update write path
Browse files Browse the repository at this point in the history
  • Loading branch information
Onokaev committed Jan 16, 2025
1 parent 37d2e6e commit f316a5c
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 33 deletions.
14 changes: 6 additions & 8 deletions src/Kiota.Builder/Settings/SettingsFileManagementService.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
Expand Down Expand Up @@ -46,7 +47,8 @@ private async Task WriteSettingsFileInternalAsync(string directoryPath, Settings
var vscodeDirectoryPath = GetDirectoryContainingSettingsFile(parentDirectoryPath!);
if (!Directory.Exists(vscodeDirectoryPath))
{
Directory.CreateDirectory(vsCodeDirectoryName);
var pathToWrite = Path.Combine(parentDirectoryPath!, vsCodeDirectoryName);
Directory.CreateDirectory(pathToWrite);
}
vscodeDirectoryPath = Path.Combine(parentDirectoryPath!, vsCodeDirectoryName);
var settingsObjectString = JsonSerializer.Serialize(settings, SettingsFileGenerationContext.Default.SettingsFile);
Expand All @@ -72,11 +74,6 @@ public async Task UpdateFileAsync(string fileUpdate, string fileUpdateKey, Cance
ArgumentException.ThrowIfNullOrEmpty(fileUpdate);
Dictionary<string, object> settings;

if (!Directory.Exists(fileUpdatePath))
{
Directory.CreateDirectory(fileUpdatePath);
}

// Read existing settings or create new if file doesn't exist
if (File.Exists(fileUpdatePath))
{
Expand All @@ -102,7 +99,8 @@ public async Task UpdateFileAsync(string fileUpdate, string fileUpdateKey, Cance
if (fileUpdateDictionary is not null)
settings[fileUpdateKey] = fileUpdateDictionary[fileUpdateKey];

string updatedJson = JsonSerializer.Serialize(settings, SettingsFileGenerationContext.Default.DictionaryStringObject);
await File.WriteAllTextAsync(fileUpdatePath, updatedJson, cancellationToken).ConfigureAwait(false);
#pragma warning disable CA2007
await using var fileStream = File.Open(fileUpdatePath, FileMode.Create);
await JsonSerializer.SerializeAsync(fileStream, settings, SettingsFileGenerationContext.Default.DictionaryStringObject, cancellationToken).ConfigureAwait(false);
}
}
25 changes: 0 additions & 25 deletions tests/Kiota.Builder.Tests/Settings/SettingsManagementTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -74,30 +74,5 @@ public async Task WriteSettingsFileAsync_ShouldThrowArgumentNullException_WhenOp
// Cleanup
Directory.Delete(tempDirectory);
}

[Fact]
public async Task WriteSettingsFileAsync_ShouldCreateSettingsFile_WhenValidInputs()
{
// Arrange
var service = new SettingsFileManagementService();
var tempDirectory = Path.GetTempPath();
Directory.CreateDirectory(tempDirectory);
var openApiDocument = new OpenApiDocument
{
Servers = new List<OpenApiServer> { new OpenApiServer { Url = "http://localhost" } }
};
var cancellationToken = CancellationToken.None;

// Act
await service.WriteSettingsFileAsync(tempDirectory, openApiDocument, cancellationToken);

// Assert
var vscodeDirectory = Path.Combine(tempDirectory, ".vscode");
var settingsFilePath = Path.Combine(vscodeDirectory, SettingsFileManagementService.SettingsFileName);
Assert.True(File.Exists(settingsFilePath));

// Cleanup
Directory.Delete(tempDirectory, true);
}
}
}

0 comments on commit f316a5c

Please sign in to comment.