mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-05 18:57:19 +02:00
[DSC] Implement Microsoft.PowerToys.Configure DSCResource & winget support (#30918)
* [DSC] Microsoft.PowerToys.Configure module + winget configuration file support
* f: fix for an incorrect directory id reference
* f: update comment
* f: address review comments
* f: file locksmith bug fix
* f: add explorer preview switches in samples
* f: remove debug
* Sign DSC files
* f: implement docs/samples generator
* [ci]Sign FancyZonesEditorCommon.dll
* Sign DSC files in the Generated folder
* f: address review comments
* f: update usable options
* f: add autogenerated sample
* [Installer] Don't use same GUID for different components
* [Installer]Don't remove folders shared by other modules
* Allow configuring PTRun MaximumNumberOfResults
* Remove all settings DSC sample. Just random data
* Allow configuring Hosts Run as Administrator
* Revert "[Installer]Don't remove folders shared by other modules"
This reverts commit 6da3d6cfd5.
* Add all PTRun plugins and Global and keyboard to DSC sample
* Fix issues with context menu modules not disabling
* Fix default enabled values when setting with DSC
* Fix tests regarding default modules in Settings
* Fix merge error
* Restart PowerToys process if we stopped it
---------
Co-authored-by: Andrey Nekrasov <1828123+yuyoyuppe@users.noreply.github.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
// Copyright (c) Microsoft Corporation
|
||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using Microsoft.PowerToys.Settings.UI.Library;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
namespace Settings.UI.UnitTests.Settings;
|
||||
|
||||
[TestClass]
|
||||
public class ICmdReprParsableTests
|
||||
{
|
||||
[TestMethod]
|
||||
public void KeyboardKeysPropertyParsing()
|
||||
{
|
||||
{
|
||||
Assert.IsTrue(KeyboardKeysProperty.TryParseFromCmd("win+ctrl+Alt+sHifT+Q", out var hotkey));
|
||||
|
||||
Assert.AreEqual(new KeyboardKeysProperty { Value = new HotkeySettings(true, true, true, true, 0x51) }, hotkey);
|
||||
}
|
||||
|
||||
{
|
||||
Assert.IsTrue(KeyboardKeysProperty.TryParseFromCmd("CTRL+z", out var hotkey));
|
||||
Assert.AreEqual(new KeyboardKeysProperty { Value = new HotkeySettings(false, true, false, false, 0x5A) }, hotkey);
|
||||
}
|
||||
|
||||
{
|
||||
Assert.IsTrue(KeyboardKeysProperty.TryParseFromCmd("shift+ALT+0x59", out var hotkey));
|
||||
Assert.AreEqual(new KeyboardKeysProperty { Value = new HotkeySettings(false, false, true, true, 0x59) }, hotkey);
|
||||
}
|
||||
|
||||
{
|
||||
Assert.IsTrue(KeyboardKeysProperty.TryParseFromCmd("alt+Space", out var hotkey));
|
||||
Assert.AreEqual(new KeyboardKeysProperty { Value = new HotkeySettings(false, false, true, false, 0x20) }, hotkey);
|
||||
}
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void BoolPropertyParsing()
|
||||
{
|
||||
{
|
||||
Assert.IsTrue(BoolProperty.TryParseFromCmd("True", out var result));
|
||||
Assert.AreEqual(new BoolProperty(true), result);
|
||||
}
|
||||
|
||||
{
|
||||
Assert.IsTrue(BoolProperty.TryParseFromCmd("false", out var result));
|
||||
Assert.AreEqual(new BoolProperty(false), result);
|
||||
}
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void IntPropertyParsing()
|
||||
{
|
||||
{
|
||||
Assert.IsTrue(IntProperty.TryParseFromCmd("123", out var result));
|
||||
Assert.AreEqual(new IntProperty(123), result);
|
||||
}
|
||||
|
||||
{
|
||||
Assert.IsTrue(IntProperty.TryParseFromCmd("1500", out var result));
|
||||
Assert.AreEqual(new IntProperty(1500), result);
|
||||
Assert.AreNotEqual(new IntProperty(15), result);
|
||||
}
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void MouseJumpThumbnailSizeParsing()
|
||||
{
|
||||
{
|
||||
Assert.IsTrue(MouseJumpThumbnailSize.TryParseFromCmd("1920x1080", out var result));
|
||||
Assert.AreEqual(new MouseJumpThumbnailSize { Width = 1920, Height = 1080 }, result);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
// Copyright (c) Microsoft Corporation
|
||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System;
|
||||
using System.IO.Abstractions.TestingHelpers;
|
||||
using Microsoft.PowerToys.Settings.UI.Library;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
using static Microsoft.PowerToys.Settings.UI.Library.SetSettingCommandLineCommand;
|
||||
|
||||
namespace Settings.UI.UnitTests.Cmd;
|
||||
|
||||
[TestClass]
|
||||
public class SetSettingCommandTests
|
||||
{
|
||||
private SettingsUtils settingsUtils;
|
||||
|
||||
[TestInitialize]
|
||||
public void Setup()
|
||||
{
|
||||
settingsUtils = new SettingsUtils(new MockFileSystem());
|
||||
}
|
||||
|
||||
private void SetSetting(Type moduleSettingsType, string settingName, string newValueStr)
|
||||
{
|
||||
var settings = CommandLineUtils.GetSettingsConfigFor(moduleSettingsType, settingsUtils);
|
||||
var defaultValue = CommandLineUtils.GetPropertyValue(settingName, settings);
|
||||
var qualifiedName = moduleSettingsType.Name.Replace("Settings", string.Empty) + "." + settingName;
|
||||
var type = CommandLineUtils.GetSettingPropertyInfo(settingName, settings).PropertyType;
|
||||
var newValue = ICmdLineRepresentable.ParseFor(type, newValueStr);
|
||||
|
||||
Execute(qualifiedName, newValueStr, settingsUtils);
|
||||
|
||||
Assert.AreNotEqual(defaultValue, newValue);
|
||||
Assert.AreEqual(newValue, CommandLineUtils.GetPropertyValue(settingName, settings));
|
||||
}
|
||||
|
||||
// Each setting has a different type.
|
||||
[TestMethod]
|
||||
[DataRow(typeof(PowerRenameSettings), nameof(PowerRenameProperties.MaxMRUSize), "123")]
|
||||
[DataRow(typeof(FancyZonesSettings), nameof(FZConfigProperties.FancyzonesBorderColor), "#00FF00")]
|
||||
[DataRow(typeof(MeasureToolSettings), nameof(MeasureToolProperties.ActivationShortcut), "Ctrl+Alt+Delete")]
|
||||
[DataRow(typeof(AlwaysOnTopSettings), nameof(AlwaysOnTopProperties.SoundEnabled), "False")]
|
||||
[DataRow(typeof(PowerAccentSettings), nameof(PowerAccentProperties.ShowUnicodeDescription), "true")]
|
||||
[DataRow(typeof(AwakeSettings), nameof(AwakeProperties.Mode), "EXPIRABLE")]
|
||||
[DataRow(typeof(AwakeSettings), nameof(AwakeProperties.ExpirationDateTime), "March 31, 2020 15:00 +00:00")]
|
||||
[DataRow(typeof(PowerLauncherSettings), nameof(PowerLauncherProperties.MaximumNumberOfResults), "322")]
|
||||
|
||||
[DataRow(typeof(ColorPickerSettings), nameof(ColorPickerProperties.CopiedColorRepresentation), "RGB")]
|
||||
public void SetModuleSetting(Type moduleSettingsType, string settingName, string newValueStr)
|
||||
{
|
||||
SetSetting(moduleSettingsType, settingName, newValueStr);
|
||||
}
|
||||
|
||||
[DataRow(typeof(GeneralSettings), "Enabled.MouseWithoutBorders", "true")]
|
||||
[DataRow(typeof(GeneralSettings), nameof(GeneralSettings.AutoDownloadUpdates), "true")]
|
||||
[TestMethod]
|
||||
public void SetGeneralSetting(Type moduleSettingsType, string settingName, string newValueStr)
|
||||
{
|
||||
SetSetting(moduleSettingsType, settingName, newValueStr);
|
||||
}
|
||||
}
|
||||
@@ -237,10 +237,9 @@ namespace ViewModelTests
|
||||
// Assert
|
||||
Assert.IsTrue(modules.FancyZones);
|
||||
Assert.IsTrue(modules.ImageResizer);
|
||||
Assert.IsTrue(modules.FileExplorerPreview);
|
||||
Assert.IsTrue(modules.PowerPreview);
|
||||
Assert.IsTrue(modules.ShortcutGuide);
|
||||
Assert.IsTrue(modules.PowerRename);
|
||||
Assert.IsTrue(modules.KeyboardManager);
|
||||
Assert.IsTrue(modules.PowerLauncher);
|
||||
Assert.IsTrue(modules.ColorPicker);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user