git.delta.rocks / jrsonnet / refs/commits / 7b1ce4254e51

difftreelog

test run cpp test suite with criterion

txxqmvqmYaroslav Bolyukin2026-04-25parent: #150f286.patch.diff
in: master

5 files changed

modifiedtests/.gitignorediffbeforeafterboth
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -1,2 +1,5 @@
 /cpp_test_suite
 /go_testdata
+/go_builtin_benchmarks
+/cpp_benchmarks
+/cpp_perf_tests
modifiedtests/Cargo.tomldiffbeforeafterboth
--- a/tests/Cargo.toml
+++ b/tests/Cargo.toml
@@ -29,5 +29,5 @@
 bench = false
 
 [[bench]]
-name = "prim_comparsion"
+name = "cpp_test_suite"
 harness = false
addedtests/benches/cpp_test_suite.rsdiffbeforeafterboth
--- /dev/null
+++ b/tests/benches/cpp_test_suite.rs
@@ -0,0 +1,56 @@
+use std::{collections::HashMap, fs::read_dir, hint::black_box, path::Path};
+
+use criterion::{Criterion, criterion_group, criterion_main};
+use jrsonnet_evaluator::{
+	FileImportResolver, State, apply_tla, manifest::JsonFormat, trace::PathResolver,
+};
+
+fn bench_entry(c: &mut Criterion, path: &Path) {
+	c.bench_function(
+		path.file_name()
+			.expect("file path")
+			.to_str()
+			.expect("name is utf-8"),
+		|b| {
+			let mut s = State::builder();
+
+			s.context_initializer(jrsonnet_stdlib::ContextInitializer::new(
+				PathResolver::Absolute,
+			))
+			.import_resolver(FileImportResolver::new(vec![]));
+
+			let s = s.build();
+			let _s = s.enter();
+
+			b.iter(|| {
+				let imported = s.import(path).expect("evaluated");
+				let res = apply_tla(&HashMap::new(), imported).expect("tla applied");
+				black_box(res.manifest(JsonFormat::cli(3)))
+			});
+		},
+	);
+}
+fn criterion_benchmark(c: &mut Criterion) {
+	for entry in read_dir("go_builtin_benchmarks").expect("dir exists") {
+		let entry = entry.expect("entry is valid");
+		assert!(entry.metadata().expect("entry is valid").is_file());
+		bench_entry(c, &entry.path());
+	}
+	for entry in read_dir("cpp_perf_tests").expect("dir exists") {
+		let entry = entry.expect("entry is valid");
+		assert!(entry.metadata().expect("entry is valid").is_file());
+		bench_entry(c, &entry.path());
+	}
+	for entry in read_dir("cpp_benchmarks").expect("dir exists") {
+		let entry = entry.expect("entry is valid");
+		// Skip .gitignore
+		if entry.path().extension().is_none() {
+			continue;
+		}
+		assert!(entry.metadata().expect("entry is valid").is_file());
+		bench_entry(c, &entry.path());
+	}
+}
+
+criterion_group!(benches, criterion_benchmark);
+criterion_main!(benches);
deletedtests/benches/prim_comparsion.rsdiffbeforeafterboth
--- a/tests/benches/prim_comparsion.rs
+++ /dev/null
@@ -1,32 +0,0 @@
-use std::hint::black_box;
-
-use criterion::{Criterion, criterion_group, criterion_main};
-use jrsonnet_evaluator::{State, manifest::JsonFormat, trace::PathResolver};
-
-fn criterion_benchmark(c: &mut Criterion) {
-	c.bench_function("prim_comparison", |b| {
-		let mut s = State::builder();
-
-		s.context_initializer(jrsonnet_stdlib::ContextInitializer::new(
-			PathResolver::Absolute,
-		));
-
-		let s = s.build();
-		let _s = s.enter();
-
-		b.iter(|| {
-			black_box(
-				s.evaluate_snippet(
-					"snippet",
-					"([ i < j for i in std.range(1, 1000) for j in std.range(1, 1000)])",
-				)
-				.expect("evaluated")
-				.manifest(JsonFormat::cli(3))
-				.expect("manifested"),
-			)
-		});
-	});
-}
-
-criterion_group!(benches, criterion_benchmark);
-criterion_main!(benches);
modifiedxtask/src/main.rsdiffbeforeafterboth
123 .run()?;123 .run()?;
124 sh.remove_path("cpp_test_suite")?;124 sh.remove_path("cpp_test_suite")?;
125 sh.remove_path("go_testdata")?;125 sh.remove_path("go_testdata")?;
126 sh.remove_path("cpp_perf_tests")?;
127 sh.remove_path("cpp_benchmarks")?;
128 sh.remove_path("go_builtin_benchmarks")?;
126 cmd!(sh, "mv {git_dir_path}/jsonnet/test_suite cpp_test_suite").run()?;129 cmd!(sh, "mv {git_dir_path}/jsonnet/test_suite cpp_test_suite").run()?;
127 cmd!(sh, "mv {git_dir_path}/go-jsonnet/testdata go_testdata").run()?;130 cmd!(sh, "mv {git_dir_path}/go-jsonnet/testdata go_testdata").run()?;
131 cmd!(sh, "mv {git_dir_path}/jsonnet/perf_tests cpp_perf_tests").run()?;
132 cmd!(sh, "mv {git_dir_path}/jsonnet/benchmarks cpp_benchmarks").run()?;
133 cmd!(
134 sh,
135 "mv {git_dir_path}/go-jsonnet/builtin-benchmarks go_builtin_benchmarks"
136 )
137 .run()?;
128138
129 Ok(())139 Ok(())
130 }140 }