mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
89 lines
2.8 KiB
C++
89 lines
2.8 KiB
C++
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef GPU_CONFIG_GPU_TEST_EXPECTATIONS_PARSER_H_
|
|
#define GPU_CONFIG_GPU_TEST_EXPECTATIONS_PARSER_H_
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "base/basictypes.h"
|
|
#include "base/files/file_path.h"
|
|
#include "gpu/config/gpu_test_config.h"
|
|
#include "gpu/gpu_export.h"
|
|
|
|
namespace gpu {
|
|
|
|
class GPU_EXPORT GPUTestExpectationsParser {
|
|
public:
|
|
enum GPUTestExpectation {
|
|
kGpuTestPass = 1 << 0,
|
|
kGpuTestFail = 1 << 1,
|
|
kGpuTestFlaky = 1 << 2,
|
|
kGpuTestTimeout = 1 << 3,
|
|
kGpuTestSkip = 1 << 4,
|
|
};
|
|
|
|
GPUTestExpectationsParser();
|
|
~GPUTestExpectationsParser();
|
|
|
|
// Parse the text expectations, and if no error is encountered,
|
|
// save all the entries. Otherwise, generate error messages.
|
|
// Return true if parsing succeeds.
|
|
bool LoadTestExpectations(const std::string& data);
|
|
bool LoadTestExpectations(const base::FilePath& path);
|
|
|
|
// Query error messages from the last LoadTestExpectations() call.
|
|
const std::vector<std::string>& GetErrorMessages() const;
|
|
|
|
// Get the test expectation of a given test on a given bot.
|
|
int32 GetTestExpectation(const std::string& test_name,
|
|
const GPUTestBotConfig& bot_config) const;
|
|
|
|
// Parse a list of config modifiers. If we have a valid entry with no
|
|
// conflicts, | config | stores it, and the function returns true.
|
|
bool ParseConfig(const std::string& config_data, GPUTestConfig* config);
|
|
|
|
private:
|
|
struct GPUTestExpectationEntry {
|
|
GPUTestExpectationEntry();
|
|
|
|
std::string test_name;
|
|
GPUTestConfig test_config;
|
|
int32 test_expectation;
|
|
size_t line_number;
|
|
};
|
|
|
|
// Parse a line of text. If we have a valid entry, save it; otherwise,
|
|
// generate error messages.
|
|
bool ParseLine(const std::string& line_data, size_t line_number);
|
|
|
|
// Update OS/GPUVendor/BuildType modifiers. May generate an error message.
|
|
bool UpdateTestConfig(
|
|
GPUTestConfig* config, int32 token, size_t line_number);
|
|
|
|
// Update GPUDeviceID modifier. May generate an error message.
|
|
bool UpdateTestConfig(GPUTestConfig* config,
|
|
const std::string & gpu_device_id,
|
|
size_t line_number);
|
|
|
|
// Check if two entries' config overlap with each other. May generate an
|
|
// error message.
|
|
bool DetectConflictsBetweenEntries();
|
|
|
|
// Save an error message, which can be queried later.
|
|
void PushErrorMessage(const std::string& message, size_t line_number);
|
|
void PushErrorMessage(const std::string& message,
|
|
size_t entry1_line_number,
|
|
size_t entry2_line_number);
|
|
|
|
std::vector<GPUTestExpectationEntry> entries_;
|
|
std::vector<std::string> error_messages_;
|
|
};
|
|
|
|
} // namespace gpu
|
|
|
|
#endif // GPU_CONFIG_GPU_TEST_EXPECTATIONS_PARSER_H_
|
|
|