Skip to content

Commit

Permalink
Fix replacement formatting
Browse files Browse the repository at this point in the history
Summary: Format regex as string instead of debug, format replacement using starlark repr.

Reviewed By: JakobDegen

Differential Revision: D50105958

fbshipit-source-id: 4743a1658a5b99d6a1a93bc04e4dadff821e0753
  • Loading branch information
stepancheg authored and facebook-github-bot committed Oct 10, 2023
1 parent 405136f commit 062f014
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ use regex::Regex;
use serde::Serialize;
use serde::Serializer;
use starlark::typing::Ty;
use starlark::values::string::StarlarkStr;
use starlark::values::type_repr::StarlarkTypeRepr;
use starlark::values::Freeze;
use starlark::values::Freezer;
Expand Down Expand Up @@ -132,7 +133,7 @@ impl<'v, 'a> Display for OptionsReplacementsRef<'v, 'a> {
struct D<'v>(CmdArgsRegex<'v>, StringValue<'v>);
impl<'v> Display for D<'v> {
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
write!(f, "({:?}, {:?})", self.0, self.1)
write!(f, "({}, {})", StarlarkStr::repr(self.0.as_str()), self.1)
}
}
D(r, s)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,15 @@ pub(crate) enum FrozenCmdArgsRegex {
Regex(FrozenValueTyped<'static, BuckStarlarkRegex>),
}

impl<'v> CmdArgsRegex<'v> {
pub(crate) fn as_str(&self) -> &str {
match self {
Self::Str(s) => s.as_str(),
Self::Regex(r) => r.as_ref().as_str(),
}
}
}

impl<'v> Freeze for CmdArgsRegex<'v> {
type Frozen = FrozenCmdArgsRegex;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,14 +119,16 @@ fn displays_correctly() -> SharedResult<()> {
#[test]
fn displays_correctly_replace_regex() {
let mut tester = tester().unwrap();
tester.run_starlark_bzl_test(indoc!(
r#"
tester
.run_starlark_bzl_test(indoc!(
r#"
def test():
cli = cmd_args()
cli.replace_regex(regex("foo"), "bar")
assert_eq('cmd_args(options=replacements = [(Regex(ValueTyped(Value(Regular(Regex("foo"))))), ValueTyped(Value("bar")))])', str(cli))
assert_eq('cmd_args(options=replacements = [("foo", "bar")])', str(cli))
"#
)).unwrap();
))
.unwrap();
}

#[test]
Expand Down

0 comments on commit 062f014

Please sign in to comment.