6#include "flutter/fml/paths.h"
7#include "flutter/fml/process.h"
18 std::replace(test_name.begin(), test_name.end(),
'/',
'_');
19 std::replace(test_name.begin(), test_name.end(),
'.',
'_');
20 std::stringstream dir_name;
27 intermediates_directory_ =
35 intermediates_directory_.
reset();
42 stream << fixture_name <<
".h";
48 stream << fixture_name <<
".cc";
54 stream << fixture_name <<
".json";
60 stream << fixture_name <<
".spv";
72 const char* fixture_name)
const {
79 const char* fixture_name,
81 auto filename =
SLFileName(fixture_name, platform);
89 const char* entry_point_name)
const {
90 std::shared_ptr<fml::Mapping> fixture =
92 if (!fixture || !fixture->GetMapping()) {
93 VALIDATION_LOG <<
"Could not find shader in fixtures: " << fixture_name;
116 auto spirv_assembly =
compiler.GetSPIRVAssembly();
117 if (!spirv_assembly) {
129 auto sl_source =
compiler.GetSLShaderSource();
143 auto reflector =
compiler.GetReflector();
146 <<
"No reflector was found for target platform SL compiler.";
150 auto reflection_json = reflector->GetReflectionJSON();
151 auto reflection_header = reflector->GetReflectionHeader();
152 auto reflection_source = reflector->GetReflectionCC();
154 if (!reflection_json) {
159 if (!reflection_header) {
164 if (!reflection_source) {
171 *reflection_header)) {
172 VALIDATION_LOG <<
"Could not write reflection header intermediates.";
178 *reflection_source)) {
186 VALIDATION_LOG <<
"Could not write reflection json intermediates.";
static std::unique_ptr< FileMapping > CreateReadOnly(const std::string &path)
void reset(const T &value=Traits::InvalidValue())
bool CanCompileAndReflect(const char *fixture_name, SourceType source_type=SourceType::kUnknown, SourceLanguage source_language=SourceLanguage::kGLSL, const char *entry_point_name="main") const
std::unique_ptr< fml::FileMapping > GetReflectionJson(const char *fixture_name) const
std::unique_ptr< fml::FileMapping > GetShaderFile(const char *fixture_name, TargetPlatform platform) const
#define FML_CHECK(condition)
std::string GetCurrentTestName()
Gets the name of the currently running test. This is useful in generating logs or assets based on tes...
const char * GetFixturesPath()
Returns the directory containing the test fixture for the target if this target has fixtures configur...
fml::UniqueFD OpenFixturesDirectory()
Opens the fixtures directory for the unit-test harness.
std::unique_ptr< fml::Mapping > OpenFixtureAsMapping(const std::string &fixture_name)
Opens a fixture of the given file name and returns a mapping to its contents.
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir path
std::string JoinPaths(std::initializer_list< std::string > components)
fml::UniqueFD OpenFileReadOnly(const fml::UniqueFD &base_directory, const char *path)
bool WriteAtomically(const fml::UniqueFD &base_directory, const char *file_name, const Mapping &mapping)
fml::UniqueFD OpenDirectory(const char *path, bool create_if_necessary, FilePermission permission)
static std::string ReflectionCCName(const char *fixture_name)
static std::string ReflectionJSONName(const char *fixture_name)
static std::string GetIntermediatesPath()
static std::string ReflectionHeaderName(const char *fixture_name)
static std::string SLFileName(const char *fixture_name, TargetPlatform platform)
static std::string SPIRVFileName(const char *fixture_name)
std::string TargetPlatformSLExtension(TargetPlatform platform)
SourceType SourceTypeFromFileName(const std::string &file_name)
std::string EntryPointFunctionNameFromSourceName(const std::string &file_name, SourceType type, SourceLanguage source_language, const std::string &entry_point_name)
bool TargetPlatformNeedsReflection(TargetPlatform platform)
static SkString to_string(int n)
std::string header_file_name
SourceLanguage source_language
std::string entry_point_name
TargetPlatform target_platform
std::shared_ptr< fml::UniqueFD > working_directory