提交 2d9f6acf 编写于 作者: C Chinmay Garde 提交者: GitHub

Add a test_fixtures GN rule that allows unittests to reference fixtures. (#4280)

上级 6665645a
......@@ -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" ]
}
#!/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())
// 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
# 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",
]
}
}
// 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_
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册