mirror of
https://github.com/CompeyDev/lune-packaging.git
synced 2025-01-09 20:29:10 +00:00
Move datatype tests into datatypes module
This commit is contained in:
parent
de656fa26b
commit
7aef25c316
3 changed files with 56 additions and 55 deletions
|
@ -25,3 +25,59 @@ pub use vector2::Vector2;
|
||||||
pub use vector2int16::Vector2int16;
|
pub use vector2int16::Vector2int16;
|
||||||
pub use vector3::Vector3;
|
pub use vector3::Vector3;
|
||||||
pub use vector3int16::Vector3int16;
|
pub use vector3int16::Vector3int16;
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use std::{env::set_current_dir, fs::read_to_string, path::PathBuf};
|
||||||
|
|
||||||
|
use anyhow::{Context, Result};
|
||||||
|
use mlua::prelude::*;
|
||||||
|
|
||||||
|
use crate::make_all_datatypes;
|
||||||
|
|
||||||
|
macro_rules! create_tests {
|
||||||
|
($($test_name:ident: $file_path:expr,)*) => { $(
|
||||||
|
#[test]
|
||||||
|
fn $test_name() -> Result<()> {
|
||||||
|
// NOTE: This path is relative to the lib
|
||||||
|
// package, not the cwd or workspace root,
|
||||||
|
// so we need to cd to the repo root first
|
||||||
|
let crate_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
|
||||||
|
let root_dir = crate_dir.join("../../").canonicalize()?;
|
||||||
|
set_current_dir(root_dir)?;
|
||||||
|
// Create all datatypes as globals
|
||||||
|
let lua = Lua::new();
|
||||||
|
let env = lua.globals();
|
||||||
|
for (name, tab) in make_all_datatypes(&lua)? {
|
||||||
|
env.set(name, tab)?;
|
||||||
|
}
|
||||||
|
// The rest of the test logic can continue as normal
|
||||||
|
let full_name = format!("tests/roblox/{}.luau", $file_path);
|
||||||
|
let script = read_to_string(full_name)
|
||||||
|
.with_context(|| format!(
|
||||||
|
"Failed to read test file '{}'",
|
||||||
|
$file_path
|
||||||
|
))?;
|
||||||
|
lua.load(&script)
|
||||||
|
.set_name($file_path)?
|
||||||
|
.set_environment(env)?
|
||||||
|
.exec()?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
)* }
|
||||||
|
}
|
||||||
|
|
||||||
|
create_tests! {
|
||||||
|
brick_color: "datatypes/BrickColor",
|
||||||
|
color3: "datatypes/Color3",
|
||||||
|
color_sequence: "datatypes/ColorSequence",
|
||||||
|
color_sequence_keypoint: "datatypes/ColorSequenceKeypoint",
|
||||||
|
r#enum: "datatypes/Enum",
|
||||||
|
udim: "datatypes/UDim",
|
||||||
|
udim2: "datatypes/UDim2",
|
||||||
|
vector2: "datatypes/Vector2",
|
||||||
|
vector2int16: "datatypes/Vector2int16",
|
||||||
|
vector3: "datatypes/Vector3",
|
||||||
|
vector3int16: "datatypes/Vector3int16",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -4,9 +4,6 @@ pub mod datatypes;
|
||||||
pub mod document;
|
pub mod document;
|
||||||
pub mod instance;
|
pub mod instance;
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests;
|
|
||||||
|
|
||||||
fn make_dt<F>(lua: &Lua, f: F) -> LuaResult<LuaValue>
|
fn make_dt<F>(lua: &Lua, f: F) -> LuaResult<LuaValue>
|
||||||
where
|
where
|
||||||
F: Fn(&Lua, &LuaTable) -> LuaResult<()>,
|
F: Fn(&Lua, &LuaTable) -> LuaResult<()>,
|
||||||
|
|
|
@ -1,52 +0,0 @@
|
||||||
use std::{env::set_current_dir, fs::read_to_string, path::PathBuf};
|
|
||||||
|
|
||||||
use anyhow::{Context, Result};
|
|
||||||
use mlua::prelude::*;
|
|
||||||
|
|
||||||
use super::make_all_datatypes;
|
|
||||||
|
|
||||||
macro_rules! create_tests {
|
|
||||||
($($test_name:ident: $file_path:expr,)*) => { $(
|
|
||||||
#[test]
|
|
||||||
fn $test_name() -> Result<()> {
|
|
||||||
// NOTE: This path is relative to the lib
|
|
||||||
// package, not the cwd or workspace root,
|
|
||||||
// so we need to cd to the repo root first
|
|
||||||
let crate_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
|
|
||||||
let root_dir = crate_dir.join("../../").canonicalize()?;
|
|
||||||
set_current_dir(root_dir)?;
|
|
||||||
// Create all datatypes as globals
|
|
||||||
let lua = Lua::new();
|
|
||||||
let env = lua.globals();
|
|
||||||
for (name, tab) in make_all_datatypes(&lua)? {
|
|
||||||
env.set(name, tab)?;
|
|
||||||
}
|
|
||||||
// The rest of the test logic can continue as normal
|
|
||||||
let full_name = format!("tests/roblox/{}.luau", $file_path);
|
|
||||||
let script = read_to_string(full_name)
|
|
||||||
.with_context(|| format!(
|
|
||||||
"Failed to read test file '{}'",
|
|
||||||
$file_path
|
|
||||||
))?;
|
|
||||||
lua.load(&script)
|
|
||||||
.set_name($file_path)?
|
|
||||||
.set_environment(env)?
|
|
||||||
.exec()?;
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
)* }
|
|
||||||
}
|
|
||||||
|
|
||||||
create_tests! {
|
|
||||||
datatypes_brick_color: "datatypes/BrickColor",
|
|
||||||
datatypes_color3: "datatypes/Color3",
|
|
||||||
datatypes_color_sequence: "datatypes/ColorSequence",
|
|
||||||
datatypes_color_sequence_keypoint: "datatypes/ColorSequenceKeypoint",
|
|
||||||
datatypes_enum: "datatypes/Enum",
|
|
||||||
datatypes_udim: "datatypes/UDim",
|
|
||||||
datatypes_udim2: "datatypes/UDim2",
|
|
||||||
datatypes_vector2: "datatypes/Vector2",
|
|
||||||
datatypes_vector2int16: "datatypes/Vector2int16",
|
|
||||||
datatypes_vector3: "datatypes/Vector3",
|
|
||||||
datatypes_vector3int16: "datatypes/Vector3int16",
|
|
||||||
}
|
|
Loading…
Reference in a new issue