From 2613ea196f5809e896d255a4eda23442dd4cbc02 Mon Sep 17 00:00:00 2001 From: epriestley Date: Mon, 28 Jan 2013 16:27:47 -0800 Subject: [PATCH] Provide hgsprintf() for building hg revsets Summary: I guess this is correct? See T2387 for discussion. Test Plan: Unit tests. Reviewers: bos, DurhamGoode Reviewed By: DurhamGoode CC: aran Maniphest Tasks: T2387 Differential Revision: https://secure.phabricator.com/D4711 --- src/__phutil_library_map__.php | 4 ++ .../__tests__/ArcanistRepoUtilsTestCase.php | 23 +++++++++++ src/repository/util/hgsprintf.php | 39 +++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 src/repository/util/__tests__/ArcanistRepoUtilsTestCase.php create mode 100644 src/repository/util/hgsprintf.php diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index b71f0bb1..a0bedcaf 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -108,6 +108,7 @@ phutil_register_library_map(array( 'ArcanistPhutilTestTerminatedException' => 'unit/engine/phutil/testcase/ArcanistPhutilTestTerminatedException.php', 'ArcanistPyFlakesLinter' => 'lint/linter/ArcanistPyFlakesLinter.php', 'ArcanistPyLintLinter' => 'lint/linter/ArcanistPyLintLinter.php', + 'ArcanistRepoUtilsTestCase' => 'repository/util/__tests__/ArcanistRepoUtilsTestCase.php', 'ArcanistRepositoryAPI' => 'repository/api/ArcanistRepositoryAPI.php', 'ArcanistRepositoryAPIMiscTestCase' => 'repository/api/__tests__/ArcanistRepositoryAPIMiscTestCase.php', 'ArcanistRepositoryAPIStateTestCase' => 'repository/api/__tests__/ArcanistRepositoryAPIStateTestCase.php', @@ -158,6 +159,8 @@ phutil_register_library_map(array( ), 'function' => array( + 'hgsprintf' => 'repository/util/hgsprintf.php', + 'xsprintf_mercurial' => 'repository/util/hgsprintf.php', ), 'xmap' => array( @@ -233,6 +236,7 @@ phutil_register_library_map(array( 'ArcanistPhutilTestTerminatedException' => 'Exception', 'ArcanistPyFlakesLinter' => 'ArcanistLinter', 'ArcanistPyLintLinter' => 'ArcanistLinter', + 'ArcanistRepoUtilsTestCase' => 'ArcanistTestCase', 'ArcanistRepositoryAPIMiscTestCase' => 'ArcanistTestCase', 'ArcanistRepositoryAPIStateTestCase' => 'ArcanistTestCase', 'ArcanistRubyLinter' => 'ArcanistLinter', diff --git a/src/repository/util/__tests__/ArcanistRepoUtilsTestCase.php b/src/repository/util/__tests__/ArcanistRepoUtilsTestCase.php new file mode 100644 index 00000000..0204eff9 --- /dev/null +++ b/src/repository/util/__tests__/ArcanistRepoUtilsTestCase.php @@ -0,0 +1,23 @@ +assertEqual( + "'version-1'", + hgsprintf('%s', 'version-1')); + + $this->assertEqual( + "'single\\'quote'", + hgsprintf('%s', "single'quote")); + + $this->assertEqual( + "'back\\\\slash'", + hgsprintf('%s', 'back\\slash')); + + $this->assertEqual( + "'33%'", + hgsprintf('%R', hgsprintf('%s', '33%'))); + } + +} diff --git a/src/repository/util/hgsprintf.php b/src/repository/util/hgsprintf.php new file mode 100644 index 00000000..da456647 --- /dev/null +++ b/src/repository/util/hgsprintf.php @@ -0,0 +1,39 @@ +