• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

luttje / Key2Joy / 6557152774

18 Oct 2023 06:36AM UTC coverage: 52.519% (+39.8%) from 12.718%
6557152774

push

github

web-flow
Adding more tests, fixing bugs in the process (#48)

* Add config manager tests

* legacy config and mapping profile tests (should fix #42)

* remove comment, problem was caused by transfer across appdomain (or to/fro scripting environment)

* Test core functionality #48 + includes minor refactoring to be able to test + added docs

* Add interop tests + implement and test async test utility (refactors away from singletons)

* fix not all tests running in workflow

* config and interop tests

* Refactor and allow mocking global input hook class

* add capture action test

* Make Execute override optional for script only methods

* add dependency injection + refactor and try test gamepad service

* Refactor config singleton to using dependency injection

* add tests for scripting

* add tests for plugin set + fix plugin showing as loaded even if checksum match failed

* fix tests failing because it relied on config exist (I guess the test order was accidentally correct earlier, this means we should really fix cleanup so we catch this sooner)

* refactor docs code + fix wrong enum summary

* refactor docs builder and start testing it a bit

* fix cmd project structure

* ignore designer files in tests

* cleanup and refactor UI code + show latest version in help

* truncate listview action column

* allow user config to minimize app when pressing X (defaults to shut down app) resolves #45

696 of 1757 branches covered (0.0%)

Branch coverage included in aggregate %.

4597 of 4597 new or added lines in 138 files covered. (100.0%)

3619 of 6459 relevant lines covered (56.03%)

17089.01 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

86.36
/Support/Key2Joy.Tests/PluginHost/PluginHostFileAccessTests.cs
1
using System.IO;
2
using System.Security;
3
using Microsoft.VisualStudio.TestTools.UnitTesting;
4

5
namespace Key2Joy.Tests.PluginHost;
6

7
[TestClass]
8
public class PluginHostFileAccessTests : PluginHostTestBase
9
{
10
    // We must go up one level, since the pluginDirectory is the same as for this test. (Because it's referenced)
11
    private string GetPathToRead() => Path.Combine(Directory.GetCurrentDirectory() + @"\..\Key2Joy.Tests.PluginHost.file.txt");
5✔
12

13
    [TestInitialize]
14
    public override void Setup()
15
    {
16
        base.Setup();
4✔
17

18
        File.WriteAllText(this.GetPathToRead(), "Hello World!");
4✔
19
    }
4✔
20

21
    [TestCleanup]
22
    public override void Cleanup() => base.Cleanup();
4✔
23

24
    [TestMethod]
25
    public void Plugin_Action_CanExecute_WriteToData()
26
    {
27
        var actionProxy = this.MakePluginAction<Stubs.TestPlugin.FileAccessAction>();
1✔
28
        var methodName = nameof(Stubs.TestPlugin.FileAccessAction.WriteToDataDirectory);
1✔
29

30
        actionProxy.InvokeScriptMethod(methodName, new object[0]);
1✔
31
    }
1✔
32

33
    [TestMethod]
34
    [ExpectedException(typeof(SecurityException))]
35
    public void Plugin_Action_CannotExecute_WriteOutsideData()
36
    {
37
        var actionProxy = this.MakePluginAction<Stubs.TestPlugin.FileAccessAction>();
1✔
38
        var methodName = nameof(Stubs.TestPlugin.FileAccessAction.WriteToDataDirectoryWithUnsafePath);
1✔
39

40
        actionProxy.InvokeScriptMethod(methodName, new object[] { "../" });
1✔
41
    }
×
42

43
    [TestMethod]
44
    [ExpectedException(typeof(SecurityException))]
45
    public void Plugin_Action_CannotExecute_WriteToAbsolutePath()
46
    {
47
        var actionProxy = this.MakePluginAction<Stubs.TestPlugin.FileAccessAction>();
1✔
48
        var methodName = nameof(Stubs.TestPlugin.FileAccessAction.WriteToAbsolutePath);
1✔
49

50
        actionProxy.InvokeScriptMethod(methodName, new object[] { @"C:\Users\Public\also-unsafe.txt" });
1✔
51
    }
×
52

53
    [TestMethod]
54
    [ExpectedException(typeof(SecurityException))]
55
    public void Plugin_Action_CannotExecute_ReadAbsolutePath()
56
    {
57
        var actionProxy = this.MakePluginAction<Stubs.TestPlugin.FileAccessAction>();
1✔
58
        var methodName = nameof(Stubs.TestPlugin.FileAccessAction.ReadAbsolutePath);
1✔
59

60
        var test = this.GetPathToRead();
1✔
61
        var contents = actionProxy.InvokeScriptMethod(methodName, new object[] { test });
1✔
62
    }
×
63
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc