git.delta.rocks / jrsonnet / refs/commits / 8bc6498a805d

difftreelog

test import formatting test-cases from rustanka

umopspmtYaroslav Bolyukin2026-02-12parent: #fc45c6c.patch.diff
in: master

45 files changed

modifiedCargo.lockdiffbeforeafterboth
155 "generic-array",155 "generic-array",
156]156]
157
158[[package]]
159name = "bstr"
160version = "1.12.1"
161source = "registry+https://github.com/rust-lang/crates.io-index"
162checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab"
163dependencies = [
164 "memchr",
165 "serde",
166]
157167
158[[package]]168[[package]]
159name = "bumpalo"169name = "bumpalo"
452 "wasm-bindgen",462 "wasm-bindgen",
453]463]
464
465[[package]]
466name = "globset"
467version = "0.4.18"
468source = "registry+https://github.com/rust-lang/crates.io-index"
469checksum = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3"
470dependencies = [
471 "aho-corasick",
472 "bstr",
473 "log",
474 "regex-automata",
475 "regex-syntax",
476]
454477
455[[package]]478[[package]]
456name = "hashbrown"479name = "hashbrown"
548checksum = "e82db8c87c7f1ccecb34ce0c24399b8a73081427f3c7c50a5d597925356115e4"571checksum = "e82db8c87c7f1ccecb34ce0c24399b8a73081427f3c7c50a5d597925356115e4"
549dependencies = [572dependencies = [
550 "console",573 "console",
574 "globset",
551 "once_cell",575 "once_cell",
552 "similar",576 "similar",
553 "tempfile",577 "tempfile",
578 "walkdir",
554]579]
555580
556[[package]]581[[package]]
796source = "registry+https://github.com/rust-lang/crates.io-index"821source = "registry+https://github.com/rust-lang/crates.io-index"
797checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"822checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
823
824[[package]]
825name = "log"
826version = "0.4.29"
827source = "registry+https://github.com/rust-lang/crates.io-index"
828checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
798829
799[[package]]830[[package]]
800name = "logos"831name = "logos"
1156source = "registry+https://github.com/rust-lang/crates.io-index"1187source = "registry+https://github.com/rust-lang/crates.io-index"
1157checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"1188checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
1189
1190[[package]]
1191name = "same-file"
1192version = "1.0.6"
1193source = "registry+https://github.com/rust-lang/crates.io-index"
1194checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
1195dependencies = [
1196 "winapi-util",
1197]
11581198
1159[[package]]1199[[package]]
1160name = "saphyr-parser-bw"1200name = "saphyr-parser-bw"
1490 "memchr",1530 "memchr",
1491]1531]
1532
1533[[package]]
1534name = "walkdir"
1535version = "2.5.0"
1536source = "registry+https://github.com/rust-lang/crates.io-index"
1537checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
1538dependencies = [
1539 "same-file",
1540 "winapi-util",
1541]
14921542
1493[[package]]1543[[package]]
1494name = "wasip2"1544name = "wasip2"
1544 "unicode-ident",1594 "unicode-ident",
1545]1595]
1596
1597[[package]]
1598name = "winapi-util"
1599version = "0.1.11"
1600source = "registry+https://github.com/rust-lang/crates.io-index"
1601checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
1602dependencies = [
1603 "windows-sys 0.59.0",
1604]
15461605
1547[[package]]1606[[package]]
1548name = "windows-link"1607name = "windows-link"
modifiedCargo.tomldiffbeforeafterboth
6363
64mimallocator = "0.1.3"64mimallocator = "0.1.3"
65indoc = "2.0"65indoc = "2.0"
66insta = "1.46"66insta = { version = "1.46", features = ["glob"] }
67tempfile = "3.24"67tempfile = "3.24"
68pathdiff = "0.2.3"68pathdiff = "0.2.3"
69hashbrown = "0.16.1"69hashbrown = "0.16.1"
modifiedcrates/jrsonnet-formatter/src/lib.rsdiffbeforeafterboth
13 Arg, ArgsDesc, Assertion, BinaryOperator, Bind, CompSpec, Destruct, DestructArrayPart,13 Arg, ArgsDesc, Assertion, BinaryOperator, Bind, CompSpec, Destruct, DestructArrayPart,
14 DestructRest, Expr, ExprBase, FieldName, ForSpec, IfSpec, ImportKind, Literal, Member,14 DestructRest, Expr, ExprBase, FieldName, ForSpec, IfSpec, ImportKind, Literal, Member,
15 Name, Number, ObjBody, ObjLocal, ParamsDesc, SliceDesc, SourceFile, Stmt, Suffix, Text,15 Name, Number, ObjBody, ObjLocal, ParamsDesc, SliceDesc, SourceFile, Stmt, Suffix, Text,
16 UnaryOperator, Visibility,16 TextKind, UnaryOperator, Visibility,
17 },17 },
18 AstNode, AstToken as _, SyntaxToken,18 AstNode, AstToken as _, SyntaxToken,
19};19};
2525
26mod children;26mod children;
27mod comments;27mod comments;
28#[cfg(test)]
29mod tests;28mod tests;
3029
31fn with_indent_eoi(cond: ConditionResolver, o: PrintItems, e: EndingComments) -> PrintItems {30fn with_indent_eoi(cond: ConditionResolver, o: PrintItems, e: EndingComments) -> PrintItems {
200199
201impl Printable for Text {200impl Printable for Text {
202 fn print(&self, out: &mut PrintItems) {201 fn print(&self, out: &mut PrintItems) {
202 if matches!(self.kind(), TextKind::StringBlock) {
203 let text = self.text();
204
205 for (i, ele) in text.split("\n").enumerate() {
206 if i != 0 {
207 p!(out, nl);
208 }
209 // TODO: Trim and recreate whitespace
210 p!(out, string(ele.to_string()));
211 }
212 return;
213 }
203 p!(out, string(format!("{}", self)));214 p!(out, string(format!("{}", self)));
204 }215 }
205}216}
deletedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__args.snapdiffbeforeafterboth

no changes

deletedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__asserts.snapdiffbeforeafterboth

no changes

deletedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__complex_comments.snapdiffbeforeafterboth

no changes

deletedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__complex_nested.snapdiffbeforeafterboth

no changes

deletedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__self_super.snapdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@args.jsonnet.snapdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@asserts.jsonnet.snapdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@basic_array.jsonnet.snapdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@basic_object.jsonnet.snapdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@comments.jsonnet.snapdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@complex_comments.jsonnet.snapdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@complex_nested.jsonnet.snapdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@comprehensions.jsonnet.snapdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@conditionals.jsonnet.snapdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@functions.jsonnet.snapdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@imports.jsonnet.snapdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@local_vars.jsonnet.snapdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@operators.jsonnet.snapdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@self_super.jsonnet.snapdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@std_functions.jsonnet.snapdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@string_styles.jsonnet.snapdiffbeforeafterboth

no changes

modifiedcrates/jrsonnet-formatter/src/tests.rsdiffbeforeafterboth
1#![cfg(test)]
2
3use std::fs;
4
1use dprint_core::formatting::{PrintItems, PrintOptions};5use dprint_core::formatting::{PrintItems, PrintOptions};
2use indoc::indoc;6use indoc::indoc;
7use insta::{assert_snapshot, glob};
38
4use crate::Printable;9use crate::Printable;
510
13 out18 out
14 },19 },
15 PrintOptions {20 PrintOptions {
16 indent_width: 2,21 indent_width: 3,
17 max_width: 100,22 max_width: 100,
18 use_tabs: true,23 use_tabs: false,
19 new_line_text: "\n",24 new_line_text: "\n",
20 },25 },
21 )26 )
22}27}
2328
24#[test]29#[test]
25fn complex_comments() {30fn snapshots() {
31 glob!("tests/*.jsonnet", |path| {
26 insta::assert_snapshot!(reformat(indoc!(32 let input = fs::read_to_string(path).expect("read test file");
27 "{
28 comments: {
29 _: '',
30 // Plain comment
31 a: '',
32
33 # Plain comment with empty line before
34 b: '',
35 /*Single-line multiline comment
36
37 */
38 c: '',
39
40 /**Single-line multiline doc comment
41
42 */
43 c: '',
44
45 /**Multiline doc
46 Comment
47 */
48 c: '',
49
50 /*
51
52 Multi-line
53
54 comment
55 */
56 d: '',
57
58 e: '', // Inline comment
59
60 k: '',
61
62 // Text after everything
63 },
64 comments2: {
65 k: '',
66 // Text after everything, but no newline above
67 },
68 spacing: {
69 a: '',
70
71 b: '',
72 },
73 noSpacing: {
74 a: '',
75 b: '',
76 },
77
78 smallObjectWithEnding: {/*Ending comment*/},
79 smallObjectWithFieldAndEnding: {a: 11/*Ending comment*/},
80 smallObjectWithFieldAndEnding2: {/*Start*/a: 11/*Ending comment*/},
81 }"
82 )));33 assert_snapshot!(reformat(&input));
34 });
83}35}
84
85#[test]
86fn args() {
87 insta::assert_snapshot!(reformat(indoc!(
88 "
89 {
90 short: aaa(1,2,3,4,5),
91 long: bbb(123123123123123123123,12312312321123123123,123123123123312123123,123123123123123123312,123123123123312321123),
92 short_in_long: bbb(aaa(1,2,3,4,5), 123123123123123123123,12312312321123123123,123123123123312123123,123123123123123123312,123123123123312321123),
93 long_in_short: aaa(1,2,3,4,5,bbb(123123123123123123123,12312312321123123123,123123123123312123123,123123123123123123312,123123123123312321123)),
94 }
95 "
96 )));
97}
98
99#[test]
100fn asserts() {
101 insta::assert_snapshot!(reformat(indoc!(
102 "
103 {
104 assert 1 > 0 : 'one should be greater than zero',
105 assert true,
106 value: 42,
107 }
108 "
109 )));
110}
111
112#[test]
113fn complex_nested() {
114 insta::assert_snapshot!(reformat(indoc!(
115 "
116 {
117 kubernetes: {
118 deployment: {
119 apiVersion: 'apps/v1',
120 kind: 'Deployment',
121 metadata: {
122 name: 'myapp',
123 labels: { app: 'myapp', version: 'v1' },
124 },
125 spec: {
126 replicas: 3,
127 selector: { matchLabels: { app: 'myapp' } },
128 template: {
129 metadata: { labels: { app: 'myapp' } },
130 spec: {
131 containers: [
132 {
133 name: 'myapp',
134 image: 'myapp:latest',
135 ports: [{ containerPort: 8080 }],
136 env: [
137 { name: 'FOO', value: 'bar' },
138 { name: 'BAZ', valueFrom: { secretKeyRef: { name: 'mysecret', key: 'password' } } },
139 ],
140 },
141 ],
142 },
143 },
144 },
145 },
146 },
147 }
148 "
149 )));
150}
151
152#[test]
153fn self_super() {
154 insta::assert_snapshot!(reformat(indoc!(
155 "
156 local base = {
157 foo: 'bar',
158 method():: self.foo,
159 };
160
161 base {
162 foo: super.foo + '-extended',
163 result: self.method(),
164 }
165 "
166 )));
167}
16836
addedcrates/jrsonnet-formatter/src/tests/args.jsonnetdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/tests/asserts.jsonnetdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/tests/basic_array.jsonnetdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/tests/basic_object.jsonnetdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/tests/comments.jsonnetdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/tests/complex_comments.jsonnetdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/tests/complex_nested.jsonnetdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/tests/comprehensions.jsonnetdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/tests/conditionals.jsonnetdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/tests/functions.jsonnetdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/tests/imports.jsonnetdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/tests/local_vars.jsonnetdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/tests/operators.jsonnetdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/tests/self_super.jsonnetdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/tests/std_functions.jsonnetdiffbeforeafterboth

no changes

addedcrates/jrsonnet-formatter/src/tests/string_styles.jsonnetdiffbeforeafterboth

no changes

modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__plain_call.snapdiffbeforeafterboth
5SOURCE_FILE@0..375SOURCE_FILE@0..37
6 EXPR@0..366 EXPR@0..36
7 EXPR_BINARY@0..367 EXPR_BINARY@0..36
8 EXPR@0..38 EXPR@0..31
9 EXPR_VAR@0..39 EXPR_VAR@0..3
10 NAME@0..310 NAME@0..3
11 IDENT@0..3 "std"11 IDENT@0..3 "std"
12 SUFFIX_INDEX@3..1012 SUFFIX_INDEX@3..10
13 DOT@3..4 "."13 DOT@3..4 "."
14 NAME@4..1014 NAME@4..10
15 IDENT@4..10 "substr"15 IDENT@4..10 "substr"
16 SUFFIX_APPLY@10..3116 SUFFIX_APPLY@10..31
17 ARGS_DESC@10..3117 ARGS_DESC@10..31
18 L_PAREN@10..11 "("18 L_PAREN@10..11 "("
19 ARG@11..1219 ARG@11..12
20 EXPR@11..1220 EXPR@11..12
21 EXPR_VAR@11..1221 EXPR_VAR@11..12
22 NAME@11..1222 NAME@11..12
23 IDENT@11..12 "a"23 IDENT@11..12 "a"
24 COMMA@12..13 ","24 COMMA@12..13 ","
25 WHITESPACE@13..14 " "25 WHITESPACE@13..14 " "
26 ARG@14..1526 ARG@14..15
27 EXPR@14..1527 EXPR@14..15
28 EXPR_NUMBER@14..1528 EXPR_NUMBER@14..15
29 FLOAT@14..15 "0"29 FLOAT@14..15 "0"
30 COMMA@15..16 ","30 COMMA@15..16 ","
31 WHITESPACE@16..17 " "31 WHITESPACE@16..17 " "
32 ARG@17..3032 ARG@17..30
33 EXPR@17..3033 EXPR@17..30
34 EXPR_VAR@17..2034 EXPR_VAR@17..20
35 NAME@17..2035 NAME@17..20
36 IDENT@17..20 "std"36 IDENT@17..20 "std"
37 SUFFIX_INDEX@20..2737 SUFFIX_INDEX@20..27
38 DOT@20..21 "."38 DOT@20..21 "."
39 NAME@21..2739 NAME@21..27
40 IDENT@21..27 "length"40 IDENT@21..27 "length"
41 SUFFIX_APPLY@27..3041 SUFFIX_APPLY@27..30
42 ARGS_DESC@27..3042 ARGS_DESC@27..30
43 L_PAREN@27..28 "("43 L_PAREN@27..28 "("
44 ARG@28..2944 ARG@28..29
45 EXPR@28..2945 EXPR@28..29
46 EXPR_VAR@28..2946 EXPR_VAR@28..29
47 NAME@28..2947 NAME@28..29
48 IDENT@28..29 "b"48 IDENT@28..29 "b"
49 R_PAREN@29..30 ")"49 R_PAREN@29..30 ")"
50 R_PAREN@30..31 ")"50 R_PAREN@30..31 ")"
51 WHITESPACE@31..32 " "51 WHITESPACE@31..32 " "
52 EQ@32..34 "=="52 EQ@32..34 "=="
53 WHITESPACE@34..35 " "53 WHITESPACE@34..35 " "
addedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__string_block_trim.snapdiffbeforeafterboth

no changes

modifiedcrates/jrsonnet-rowan-parser/src/string_block.rsdiffbeforeafterboth
52 self.rest().chars().next()52 self.rest().chars().next()
53 }53 }
54
55 fn eat_if(&mut self, f: impl Fn(char) -> bool) -> usize {
56 if self.peek().map(f).unwrap_or(false) {
57 self.index += 1;
58 return 1;
59 }
60 0
61 }
5462
55 fn eat_while(&mut self, f: impl Fn(char) -> bool) -> usize {63 fn eat_while(&mut self, f: impl Fn(char) -> bool) -> usize {
56 if self.index == self.source.len() {64 if self.index == self.source.len() {
133 offset: lex.span().end,141 offset: lex.span().end,
134 };142 };
143
144 ctx.eat_if(|v| v == '-');
135145
136 // Skip whitespaces146 // Skip whitespaces
137 ctx.eat_while(|r| r == ' ' || r == '\t' || r == '\r');147 ctx.eat_while(|r| r == ' ' || r == '\t' || r == '\r');
modifiedcrates/jrsonnet-rowan-parser/src/tests.rsdiffbeforeafterboth
205 super.a + super.b204 super.a + super.b
206 "#205 "#
206
207 string_block_trim => r#"
208 |||-
209 Trimmed text block
210 |||
211 "#
207);212);
208213
209#[test]214#[test]