commit ffc12263db5ef0b76a2e388c805f7b6e8398095e
parent dcc4f762f6c3dadd35d6a20acb33654e6a4dee3c
Author: triesap <tyson@radroots.org>
Date: Fri, 20 Feb 2026 15:49:04 +0000
events: route test ts exports to target ts-rs dir
Diffstat:
3 files changed, 50 insertions(+), 8 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -44,7 +44,3 @@ prompt*.txt
# Dev
.local
-
-# temporary guard: test-generated ts artifacts
-**/bindings/constants.ts
-**/bindings/kinds.ts
diff --git a/crates/events/src/kinds.rs b/crates/events/src/kinds.rs
@@ -128,7 +128,30 @@ pub const fn request_kind_for_result_kind(kind: u32) -> Option<u32> {
#[cfg(all(test, feature = "ts-rs", feature = "std"))]
mod kinds_constants_tests {
use super::*;
- use std::{fs, path::Path};
+ use std::{
+ fs,
+ path::{Path, PathBuf},
+ };
+
+ fn workspace_root(manifest_dir: &Path) -> PathBuf {
+ let parent = manifest_dir.parent().unwrap_or(manifest_dir);
+ if parent.file_name().and_then(|name| name.to_str()) == Some("crates") {
+ parent.parent().unwrap_or(parent).to_path_buf()
+ } else {
+ parent.to_path_buf()
+ }
+ }
+
+ fn ts_export_dir() -> PathBuf {
+ if let Some(export_dir) = option_env!("TS_RS_EXPORT_DIR") {
+ return PathBuf::from(export_dir);
+ }
+ let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
+ workspace_root(&manifest_dir)
+ .join("target")
+ .join("ts-rs")
+ .join("events")
+ }
const KIND_EXPORTS: &[(&str, u32)] = &[
("KIND_PROFILE", KIND_PROFILE),
@@ -197,7 +220,7 @@ mod kinds_constants_tests {
#[test]
fn export_kind_constants() {
- let path = Path::new("./bindings").join("kinds.ts");
+ let path = ts_export_dir().join("kinds.ts");
if let Some(parent) = path.parent() {
fs::create_dir_all(parent).expect("create ts export dir");
}
diff --git a/crates/events/src/listing.rs b/crates/events/src/listing.rs
@@ -251,7 +251,30 @@ pub struct RadrootsListingImageSize {
#[cfg(all(test, feature = "ts-rs", feature = "std"))]
mod constants_tests {
use super::RADROOTS_LISTING_PRODUCT_TAG_KEYS;
- use std::{fs, path::Path};
+ use std::{
+ fs,
+ path::{Path, PathBuf},
+ };
+
+ fn workspace_root(manifest_dir: &Path) -> PathBuf {
+ let parent = manifest_dir.parent().unwrap_or(manifest_dir);
+ if parent.file_name().and_then(|name| name.to_str()) == Some("crates") {
+ parent.parent().unwrap_or(parent).to_path_buf()
+ } else {
+ parent.to_path_buf()
+ }
+ }
+
+ fn ts_export_dir() -> PathBuf {
+ if let Some(export_dir) = option_env!("TS_RS_EXPORT_DIR") {
+ return PathBuf::from(export_dir);
+ }
+ let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
+ workspace_root(&manifest_dir)
+ .join("target")
+ .join("ts-rs")
+ .join("events")
+ }
fn listing_product_tag_keys_literal() -> String {
let mut out = String::from("[");
@@ -269,7 +292,7 @@ mod constants_tests {
#[test]
fn export_listing_product_tag_keys_const() {
- let path = Path::new("./bindings").join("constants.ts");
+ let path = ts_export_dir().join("constants.ts");
if let Some(parent) = path.parent() {
fs::create_dir_all(parent).expect("create ts export dir");
}