Revert "Adds a path_exists() function" This reverts commit 68b72c326a153f574f289099f77d85a92389d492. Reason for revert: Didn't update value of kPathExists Original change's description: > Adds a path_exists() function > > Useful for conditionally depending on deps, conditionally importing a > .gni, or setting default declare_args() values. > > Bug: chromium:397994249 > Change-Id: I61ba0b3e370502511ebdc5e2a07786fe389824b8 > Reviewed-on: https://gn-review.googlesource.com/c/gn/+/18200 > Reviewed-by: Dirk Pranke <dpranke@google.com> > Commit-Queue: Andrew Grieve <agrieve@google.com> TBR=dpranke@google.com,agrieve@google.com,gn-scoped@luci-project-accounts.iam.gserviceaccount.com Change-Id: If709fa6ca15c6076a20bd10334326d32016acae1 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:397994249 Reviewed-on: https://gn-review.googlesource.com/c/gn/+/18240 Reviewed-by: Andrew Grieve <agrieve@google.com> Commit-Queue: Dirk Pranke <dpranke@google.com> Reviewed-by: Dirk Pranke <dpranke@google.com>
diff --git a/build/gen.py b/build/gen.py index cdee2f5..d1c649c 100755 --- a/build/gen.py +++ b/build/gen.py
@@ -684,7 +684,6 @@ 'src/gn/function_get_path_info.cc', 'src/gn/function_get_target_outputs.cc', 'src/gn/function_label_matches.cc', - 'src/gn/function_path_exists.cc', 'src/gn/function_process_file_template.cc', 'src/gn/function_read_file.cc', 'src/gn/function_rebase_path.cc', @@ -823,7 +822,6 @@ 'src/gn/function_get_path_info_unittest.cc', 'src/gn/function_get_target_outputs_unittest.cc', 'src/gn/function_label_matches_unittest.cc', - 'src/gn/function_path_exists_unittest.cc', 'src/gn/function_process_file_template_unittest.cc', 'src/gn/function_rebase_path_unittest.cc', 'src/gn/function_template_unittest.cc',
diff --git a/docs/reference.md b/docs/reference.md index d138138..56c554f 100644 --- a/docs/reference.md +++ b/docs/reference.md
@@ -54,7 +54,6 @@ * [import: Import a file into the current scope.](#func_import) * [label_matches: Returns whether a label matches any of a list of patterns.](#func_label_matches) * [not_needed: Mark variables from scope as not needed.](#func_not_needed) - * [path_exists: Returns whether the given path exists.](#func_path_exists) * [pool: Defines a pool object.](#func_pool) * [print: Prints to the console.](#func_print) * [print_stack_trace: Prints a stack trace.](#func_print_stack_trace) @@ -3067,23 +3066,6 @@ not_needed(invoker, "*", [ "config" ]) not_needed(invoker, [ "data_deps", "deps" ]) ``` - -### <a name="func_path_exists"></a>**path_exists**: Returns whether the given path exists. - -``` - path_exists(path) - - The argument is a path to a file or directory. -``` - -#### **Example** - -``` - path_exists("//") # true - path_exists("BUILD.gn") # true - path_exists("/abs-non-existent") # false -``` - ### <a name="func_pool"></a>**pool**: Defines a pool object. [Back to Top](#gn-reference) ```
diff --git a/src/gn/function_path_exists.cc b/src/gn/function_path_exists.cc deleted file mode 100644 index c2383d8..0000000 --- a/src/gn/function_path_exists.cc +++ /dev/null
@@ -1,71 +0,0 @@ -// Copyright 2025 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. - -#include <stddef.h> - -#include "base/files/file_util.h" -#include "gn/build_settings.h" -#include "gn/err.h" -#include "gn/functions.h" -#include "gn/parse_tree.h" -#include "gn/settings.h" -#include "gn/value.h" - -namespace functions { - -Value RunPathExists(Scope* scope, - const FunctionCallNode* function, - const std::vector<Value>& args, - Err* err) { - Value result; - - if (args.size() != 1) { - *err = Err(function->function(), "Expecting exactly one argument."); - return result; - } - const Value& value = args[0]; - if (!value.VerifyTypeIs(Value::STRING, err)) { - return result; - } - - const std::string& input_string = value.string_value(); - const SourceDir& cur_dir = scope->GetSourceDir(); - bool as_dir = - !input_string.empty() && input_string[input_string.size() - 1] == '/'; - - base::FilePath system_path; - if (as_dir) { - system_path = scope->settings()->build_settings()->GetFullPath( - cur_dir.ResolveRelativeDir( - value, err, - scope->settings()->build_settings()->root_path_utf8())); - } else { - system_path = scope->settings()->build_settings()->GetFullPath( - cur_dir.ResolveRelativeFile( - value, err, - scope->settings()->build_settings()->root_path_utf8())); - } - if (err->has_error()) { - return value; - } - - bool exists = PathExists(system_path); - return Value(function, exists); -} - -const char kPathExists[] = "filter_labels_include"; -const char kPathExists_HelpShort[] = - "path_exists: Returns whether the given path exists."; -const char kPathExists_Help[] = - R"(path_exists: Returns whether the given path exists. - - path_exists(path) - -Examples: - path_exists("//") # true - path_exists("BUILD.gn") # true - path_exists("/abs-non-existent") # false -)"; - -} // namespace functions
diff --git a/src/gn/function_path_exists_unittest.cc b/src/gn/function_path_exists_unittest.cc deleted file mode 100644 index 516f551..0000000 --- a/src/gn/function_path_exists_unittest.cc +++ /dev/null
@@ -1,87 +0,0 @@ -// Copyright 2025 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. - -#include "base/files/file_util.h" -#include "base/files/scoped_temp_dir.h" -#include "gn/functions.h" -#include "gn/test_with_scope.h" -#include "util/build_config.h" -#include "util/test/test.h" - -namespace { -bool RunPathExists(Scope* scope, const std::string& path) { - Err err; - std::vector<Value> args; - args.push_back(Value(nullptr, path)); - - FunctionCallNode function_call; - Value result = functions::RunPathExists(scope, &function_call, args, &err); - EXPECT_FALSE(err.has_error()); - return !err.has_error() && result.boolean_value(); -} -} // namespace - -TEST(PathExistsTest, FileExists) { - TestWithScope setup; - setup.scope()->set_source_dir(SourceDir("//some-dir/")); - - // Make a real directory for the test. - base::ScopedTempDir temp_dir; - ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); - setup.build_settings()->SetRootPath(temp_dir.GetPath()); - - std::string data = "foo"; - base::FilePath dir_path = temp_dir.GetPath().AppendASCII("some-dir"); - base::CreateDirectory(dir_path); - base::FilePath file_path = dir_path.AppendASCII("foo.txt"); - base::WriteFile(file_path, data.c_str(), static_cast<int>(data.size())); - - EXPECT_TRUE(RunPathExists(setup.scope(), "//")); - EXPECT_TRUE(RunPathExists(setup.scope(), "//some-dir")); - EXPECT_TRUE(RunPathExists(setup.scope(), "//some-dir/")); - EXPECT_TRUE(RunPathExists(setup.scope(), "../some-dir")); - EXPECT_TRUE(RunPathExists(setup.scope(), "//some-dir/foo.txt")); - EXPECT_TRUE(RunPathExists(setup.scope(), temp_dir.GetPath().As8Bit())); - EXPECT_FALSE(RunPathExists(setup.scope(), "//bar")); - EXPECT_FALSE(RunPathExists(setup.scope(), "bar")); -} - -TEST(PathExistsTest, FileExistsInvalidValues) { - TestWithScope setup; - FunctionCallNode function_call; - - { - // No arg. - Err err; - std::vector<Value> args; - functions::RunPathExists(setup.scope(), &function_call, args, &err); - EXPECT_TRUE(err.has_error()); - } - { - // Extra arg. - Err err; - std::vector<Value> args; - args.push_back(Value(nullptr, "a")); - args.push_back(Value(nullptr, "b")); - functions::RunPathExists(setup.scope(), &function_call, args, &err); - EXPECT_TRUE(err.has_error()); - } - { - // Wrong type. - Err err; - std::vector<Value> args; - args.push_back(Value(nullptr, Value::LIST)); - functions::RunPathExists(setup.scope(), &function_call, args, &err); - EXPECT_TRUE(err.has_error()); - } - { - // Empty string. - Err err; - std::vector<Value> args; - args.push_back(Value(nullptr, "")); - functions::RunPathExists(setup.scope(), &function_call, args, &err); - EXPECT_TRUE(err.has_error()); - } -} -
diff --git a/src/gn/functions.cc b/src/gn/functions.cc index a12b078..6642768 100644 --- a/src/gn/functions.cc +++ b/src/gn/functions.cc
@@ -1476,7 +1476,6 @@ INSERT_FUNCTION(Import, false) INSERT_FUNCTION(LabelMatches, false) INSERT_FUNCTION(NotNeeded, false) - INSERT_FUNCTION(PathExists, false) INSERT_FUNCTION(Pool, false) INSERT_FUNCTION(Print, false) INSERT_FUNCTION(PrintStackTrace, false)
diff --git a/src/gn/functions.h b/src/gn/functions.h index 5d8fdac..5cfeb82 100644 --- a/src/gn/functions.h +++ b/src/gn/functions.h
@@ -277,14 +277,6 @@ const ListNode* args_list, Err* err); -extern const char kPathExists[]; -extern const char kPathExists_HelpShort[]; -extern const char kPathExists_Help[]; -Value RunPathExists(Scope* scope, - const FunctionCallNode* function, - const std::vector<Value>& args, - Err* err); - extern const char kPool[]; extern const char kPool_HelpShort[]; extern const char kPool_Help[];