Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/angle
Path: blob/main_old/src/tests/test_expectations/GPUTestExpectationsParser.h
1693 views
1
//
2
// Copyright 2019 The ANGLE Project Authors. All rights reserved.
3
// Use of this source code is governed by a BSD-style license that can be
4
// found in the LICENSE file.
5
//
6
7
#ifndef TEST_EXPECTATIONS_GPU_TEST_EXPECTATIONS_PARSER_H_
8
#define TEST_EXPECTATIONS_GPU_TEST_EXPECTATIONS_PARSER_H_
9
10
#include <stddef.h>
11
#include <stdint.h>
12
13
#include <string>
14
#include <vector>
15
16
#include "GPUTestConfig.h"
17
18
namespace angle
19
{
20
struct GPUTestConfig;
21
22
class GPUTestExpectationsParser
23
{
24
public:
25
enum GPUTestExpectation
26
{
27
kGpuTestPass = 1 << 0,
28
kGpuTestFail = 1 << 1,
29
kGpuTestFlaky = 1 << 2,
30
kGpuTestTimeout = 1 << 3,
31
kGpuTestSkip = 1 << 4,
32
};
33
34
GPUTestExpectationsParser();
35
~GPUTestExpectationsParser();
36
37
// Parse the text expectations, and if no error is encountered,
38
// save all the entries. Otherwise, generate error messages.
39
// Return true if parsing succeeds.
40
bool loadTestExpectations(const GPUTestConfig &config, const std::string &data);
41
bool loadTestExpectationsFromFile(const GPUTestConfig &config, const std::string &path);
42
bool loadAllTestExpectations(const std::string &data);
43
bool loadAllTestExpectationsFromFile(const std::string &path);
44
45
// Query error messages from the last LoadTestExpectations() call.
46
const std::vector<std::string> &getErrorMessages() const;
47
48
// Query error messages from any expectations that weren't used before being queried.
49
std::vector<std::string> getUnusedExpectationsMessages() const;
50
51
// Get the test expectation of a given test on a given bot.
52
int32_t getTestExpectation(const std::string &testName);
53
int32_t getTestExpectationWithConfig(const GPUTestConfig &config, const std::string &testName);
54
void setTestExpectationsAllowMask(uint32_t mask) { mExpectationsAllowMask = mask; }
55
56
private:
57
struct GPUTestExpectationEntry
58
{
59
GPUTestExpectationEntry();
60
61
std::string testName;
62
int32_t testExpectation;
63
size_t lineNumber;
64
bool used;
65
GPUTestConfig::ConditionArray conditions;
66
};
67
68
// Parse a line of text. If we have a valid entry, save it; otherwise,
69
// generate error messages.
70
bool parseLine(const GPUTestConfig *config, const std::string &lineData, size_t lineNumber);
71
72
// Check a the condition assigned to a particular token.
73
bool checkTokenCondition(const GPUTestConfig &config,
74
bool &err,
75
int32_t token,
76
size_t lineNumber);
77
78
// Check if two entries' config overlap with each other. May generate an
79
// error message.
80
bool detectConflictsBetweenEntries();
81
82
// Query a list of any expectations that were's used before being queried.
83
std::vector<GPUTestExpectationEntry> getUnusedExpectations() const;
84
85
// Save an error message, which can be queried later.
86
void pushErrorMessage(const std::string &message, size_t lineNumber);
87
void pushErrorMessage(const std::string &message,
88
size_t entry1LineNumber,
89
size_t entry2LineNumber);
90
91
// Config is optional.
92
bool loadTestExpectationsFromFileImpl(const GPUTestConfig *config, const std::string &path);
93
bool loadTestExpectationsImpl(const GPUTestConfig *config, const std::string &data);
94
95
int32_t getTestExpectationImpl(const GPUTestConfig *config, const std::string &testName);
96
97
std::vector<GPUTestExpectationEntry> mEntries;
98
std::vector<std::string> mErrorMessages;
99
100
uint32_t mExpectationsAllowMask;
101
};
102
103
const char *GetConditionName(uint32_t condition);
104
105
} // namespace angle
106
107
#endif // TEST_EXPECTATIONS_GPU_TEST_EXPECTATIONS_PARSER_H_
108
109