Add a test_fixtures GN rule that allows unittests to reference fixtures. (flutter/engine#4280)
This commit is contained in:
@@ -7,13 +7,13 @@ source_set("testing") {
|
||||
|
||||
sources = [
|
||||
"$flutter_root/testing/run_all_unittests.cc",
|
||||
"$flutter_root/testing/testing.cc",
|
||||
"$flutter_root/testing/testing.h",
|
||||
]
|
||||
|
||||
public_deps = [
|
||||
"//third_party/gtest",
|
||||
]
|
||||
|
||||
public_configs = [
|
||||
"$flutter_root:config",
|
||||
]
|
||||
public_configs = [ "$flutter_root:config" ]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright 2017 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.
|
||||
|
||||
import argparse
|
||||
import subprocess
|
||||
import sys
|
||||
import os
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description='Create the symbol specifying the location of test fixtures.')
|
||||
|
||||
parser.add_argument('--fixtures_location_file', type=str, required=True)
|
||||
parser.add_argument('--fixtures_location', type=str, required=True)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
with open(args.fixtures_location_file, 'w') as file:
|
||||
file.write('namespace testing {const char* GetFixturesPath() {return "%s";}}'
|
||||
% args.fixtures_location)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
||||
11
engine/src/flutter/testing/testing.cc
Normal file
11
engine/src/flutter/testing/testing.cc
Normal file
@@ -0,0 +1,11 @@
|
||||
// Copyright 2017 The Fuchsia Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "testing.h"
|
||||
|
||||
namespace testing {
|
||||
|
||||
//
|
||||
|
||||
} // namespace testing
|
||||
55
engine/src/flutter/testing/testing.gni
Normal file
55
engine/src/flutter/testing/testing.gni
Normal file
@@ -0,0 +1,55 @@
|
||||
# Copyright 2016 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.
|
||||
|
||||
template("test_fixtures") {
|
||||
testonly = true
|
||||
|
||||
assert(defined(invoker.fixtures), "Test fixtures must be specified.")
|
||||
|
||||
fixtures_name_target_name = target_name + "_gen_fixtures_name"
|
||||
fixtures_source_set_target_name = target_name + "_gen_fixtures_source_set"
|
||||
fixtures_copy_target_name = target_name + "_copy_fixtures"
|
||||
|
||||
fixtures_location = "$target_gen_dir/fixtures"
|
||||
fixtures_location_file = "$target_gen_dir/test_fixtures_location.cc"
|
||||
|
||||
action(fixtures_name_target_name) {
|
||||
script = "$flutter_root/testing/build/gen_fixtures_location_symbol.py"
|
||||
|
||||
outputs = [
|
||||
fixtures_location_file,
|
||||
]
|
||||
|
||||
args = [
|
||||
"--fixtures_location_file",
|
||||
rebase_path(fixtures_location_file),
|
||||
"--fixtures_location",
|
||||
rebase_path(fixtures_location),
|
||||
]
|
||||
}
|
||||
|
||||
source_set(fixtures_source_set_target_name) {
|
||||
sources = [
|
||||
fixtures_location_file,
|
||||
]
|
||||
|
||||
deps = [
|
||||
":$fixtures_name_target_name",
|
||||
]
|
||||
}
|
||||
|
||||
copy(fixtures_copy_target_name) {
|
||||
sources = invoker.fixtures
|
||||
outputs = [
|
||||
"$fixtures_location/{{source_file_part}}",
|
||||
]
|
||||
}
|
||||
|
||||
group(target_name) {
|
||||
deps = [
|
||||
":$fixtures_copy_target_name",
|
||||
":$fixtures_source_set_target_name",
|
||||
]
|
||||
}
|
||||
}
|
||||
19
engine/src/flutter/testing/testing.h
Normal file
19
engine/src/flutter/testing/testing.h
Normal file
@@ -0,0 +1,19 @@
|
||||
// Copyright 2017 The Flutter 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 TESTING_TESTING_H_
|
||||
#define TESTING_TESTING_H_
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
namespace testing {
|
||||
|
||||
// Returns the directory containing the test fixture for the target if this
|
||||
// target has fixtures configured. If there are no fixtures, this is a link
|
||||
// error.
|
||||
const char* GetFixturesPath();
|
||||
|
||||
} // namespace testing
|
||||
|
||||
#endif // TESTING_TESTING_H_
|
||||
Reference in New Issue
Block a user