// Copyright 2020 The Pigweed Authors // // Licensed under the Apache License, Version 2.0 (the "License"); you may not // use this file except in compliance with the License. You may obtain a copy of // the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations under // the License. syntax = "proto3"; package pw.unit_test; message TestCaseDescriptor { // Name of the test suite to which this test case belongs. string suite_name = 1; // Name of the test case. string test_name = 2; // Path to the file in which the test case is defined. string file_name = 3; } message TestCaseExpectation { // The source code for the expression which was run. string expression = 1; // The expression with arguments evaluated. string evaluated_expression = 2; // Line number at which the expectation is located. uint32 line_number = 3; // Whether the expectation succeeded. bool success = 4; } enum TestCaseResult { SUCCESS = 0; FAILURE = 1; SKIPPED = 2; } message TestRunStart {} message TestRunEnd { uint32 passed = 1; uint32 failed = 2; uint32 skipped = 3; uint32 disabled = 4; } message Event { oneof type { // Unit test run has started. TestRunStart test_run_start = 1; // Unit test run has ended. TestRunEnd test_run_end = 2; // Start of a test case. TestCaseDescriptor test_case_start = 3; // End of a test case. TestCaseResult test_case_end = 4; // Encountered a disabled test case. TestCaseDescriptor test_case_disabled = 5; // Expectation statement within a test case. TestCaseExpectation test_case_expectation = 6; } }; message TestRunRequest { // Whether to send expectation events for successful checks. bool report_passed_expectations = 1; // Optional list of test suites to run. repeated string test_suite = 2; } service UnitTest { // Runs registered unit tests, streaming back test events as they occur. rpc Run(TestRunRequest) returns (stream Event) {} }