diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 70099f116e..a4c1bab334 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -140,6 +140,13 @@ Once you've discussed your proposed feature/fix/etc. with a team member, and you 1. Create & push a feature branch 1. Create a [Draft Pull Request (PR)](https://github.blog/2019-02-14-introducing-draft-pull-requests/) 1. Work on your changes +1. Build and see if it works. Consult [How to build OpenConsole](./doc/building.md) if you have problems. + +### Testing + +Testing is a key component in the development workflow. Both Windows Terminal and Windows Console use TAEF(the Test Authoring and Execution Framework) as the main framework for testing. + +If your changes affect existing test cases, or you're working on brand new features and also the accompanying test cases, see [TAEF](./doc/TAEF.md) for more information about how to validate your work locally. ### Code Review diff --git a/doc/TAEF.md b/doc/TAEF.md index 65d06c2f87..807d6957c0 100644 --- a/doc/TAEF.md +++ b/doc/TAEF.md @@ -1,9 +1,30 @@ -### TAEF ### +### TAEF Overview ### + TAEF, the Test Authoring and Execution Framework, is used extensively within the Windows organization to test the operating system code in a unified manner for system, driver, and application code. As the console is a Windows OS Component, we strive to continue using the same system such that tests can be ran in a unified manner both externally to Microsoft as well as inside the official OS Build/Test system. -The [official documentation](https://msdn.microsoft.com/en-us/library/windows/hardware/hh439725\(v=vs.85\).aspx) for TAEF describes the basic architecture, usage, and functionality of the test system. It is similar to Visual Studio test, but a bit more comprehensive and flexible. +The [official documentation](https://docs.microsoft.com/en-us/windows-hardware/drivers/taef/) for TAEF describes the basic architecture, usage, and functionality of the test system. It is similar to Visual Studio test, but a bit more comprehensive and flexible. -For the purposes of the console project, you can run the tests using the *TE.exe* that matches the architecture for which the test was build (x86/x64) in the pattern +### Writing Tests + +You may want to read the section [Authoring Tests in C++](https://docs.microsoft.com/en-us/windows-hardware/drivers/taef/authoring-tests-in-c--) before getting your hands dirty. Note that the quoted header name in `#include "WexTestClass.h"` might be a bit confusing. You are not required to copy TAEF headers into the project folder. + +Use the [TAEF Verify Macros for C++](https://docs.microsoft.com/en-us/windows-hardware/drivers/taef/verify) in your test code to perform verifications. + +### Running Tests + +If you have Visual Studio and related C++ components installed, and you have successfully restored NuGets, you should have the TAEF test runner `te.exe` available locally as part of the `Taef.Redist.Wlk` package. + +> Note that you cannot easily run TAEF tests directly through Visual Studio. The `Taef.Redist.Wlk` NuGet package comes with an adapter that will let you browse and execute TAEF tests inside of Visual Studio, but its performance and reliability prevent us from recommending it here. + +In a "normal" CMD environment, `te.exe` may not be directly available. Try the following command to set up the development enviroment first: + +```shell +.\tools\razzle.cmd +``` + +Then you should be able to use `%TAEF%` as an alias of the actual `te.exe`. + +For the purposes of the OpenConsole project, you can run the tests using the `te.exe` that matches the architecture for which the test was built (x86/x64): te.exe Console.Unit.Tests.dll @@ -15,6 +36,15 @@ Limiting the tests to be run is also useful with: Any pattern of class/method names can be specified after the */name:* flag with wildcard patterns. -For any further details on the functionality of the TAEF test runner, *TE.exe*, please see the documentation above or run the embedded help with +For any further details on the functionality of the TAEF test runner, please see the [Executing Tests](https://docs.microsoft.com/en-us/windows-hardware/drivers/taef/executing-tests) section in the official documentation. Or run the embedded help with te.exe /! + +If you use PowerShell, try the following command: + +```powershell +Import-Module .\tools\OpenConsole.psm1 +Invoke-OpenConsoleTests +``` + +`Invoke-OpenConsoleTests` supports a number of options, which you can enumerate by running `Invoke-OpenConsoleTests -?`.