fmt: group_imports = "StdExternalCrate"
This commit is contained in:
@@ -1,7 +1,8 @@
|
|||||||
mod utils;
|
mod utils;
|
||||||
|
|
||||||
use criterion::{Criterion, criterion_group, criterion_main};
|
|
||||||
use std::hint::black_box;
|
use std::hint::black_box;
|
||||||
|
|
||||||
|
use criterion::{Criterion, criterion_group, criterion_main};
|
||||||
use utils::eval;
|
use utils::eval;
|
||||||
|
|
||||||
fn bench_arithmetic(c: &mut Criterion) {
|
fn bench_arithmetic(c: &mut Criterion) {
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
mod utils;
|
mod utils;
|
||||||
|
|
||||||
use criterion::{Criterion, criterion_group, criterion_main};
|
|
||||||
use std::hint::black_box;
|
use std::hint::black_box;
|
||||||
|
|
||||||
|
use criterion::{Criterion, criterion_group, criterion_main};
|
||||||
use utils::eval;
|
use utils::eval;
|
||||||
|
|
||||||
fn bench_builtin_math(c: &mut Criterion) {
|
fn bench_builtin_math(c: &mut Criterion) {
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
mod utils;
|
mod utils;
|
||||||
|
|
||||||
|
use std::hint::black_box;
|
||||||
|
|
||||||
use criterion::{Criterion, criterion_group, criterion_main};
|
use criterion::{Criterion, criterion_group, criterion_main};
|
||||||
use nix_js::context::Context;
|
use nix_js::context::Context;
|
||||||
use std::hint::black_box;
|
|
||||||
use utils::compile;
|
use utils::compile;
|
||||||
|
|
||||||
fn bench_parse_and_downgrade(c: &mut Criterion) {
|
fn bench_parse_and_downgrade(c: &mut Criterion) {
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
mod utils;
|
mod utils;
|
||||||
|
|
||||||
use criterion::{Criterion, criterion_group, criterion_main};
|
|
||||||
use std::hint::black_box;
|
use std::hint::black_box;
|
||||||
|
|
||||||
|
use criterion::{Criterion, criterion_group, criterion_main};
|
||||||
use utils::eval;
|
use utils::eval;
|
||||||
|
|
||||||
fn bench_non_recursive(c: &mut Criterion) {
|
fn bench_non_recursive(c: &mut Criterion) {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ use hashbrown::{DefaultHashBuilder, HashMap, HashSet, HashTable};
|
|||||||
use rnix::TextRange;
|
use rnix::TextRange;
|
||||||
use string_interner::DefaultStringInterner;
|
use string_interner::DefaultStringInterner;
|
||||||
|
|
||||||
use crate::bytecode::{self, BytecodeContext, Bytecode, Constant};
|
use crate::bytecode::{self, Bytecode, BytecodeContext, Constant};
|
||||||
use crate::codegen::{CodegenContext, compile};
|
use crate::codegen::{CodegenContext, compile};
|
||||||
use crate::disassembler::{Disassembler, DisassemblerContext};
|
use crate::disassembler::{Disassembler, DisassemblerContext};
|
||||||
use crate::downgrade::*;
|
use crate::downgrade::*;
|
||||||
@@ -383,11 +383,7 @@ impl Ctx {
|
|||||||
Ok(bytecode)
|
Ok(bytecode)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn compile_bytecode_scoped(
|
fn compile_bytecode_scoped(&mut self, source: Source, scope: Vec<String>) -> Result<Bytecode> {
|
||||||
&mut self,
|
|
||||||
source: Source,
|
|
||||||
scope: Vec<String>,
|
|
||||||
) -> Result<Bytecode> {
|
|
||||||
let scope = Scope::ScopedImport(
|
let scope = Scope::ScopedImport(
|
||||||
scope
|
scope
|
||||||
.into_iter()
|
.into_iter()
|
||||||
@@ -477,11 +473,7 @@ impl RuntimeContext for Ctx {
|
|||||||
fn compile_bytecode(&mut self, source: Source) -> Result<Bytecode> {
|
fn compile_bytecode(&mut self, source: Source) -> Result<Bytecode> {
|
||||||
self.compile_bytecode(source)
|
self.compile_bytecode(source)
|
||||||
}
|
}
|
||||||
fn compile_bytecode_scoped(
|
fn compile_bytecode_scoped(&mut self, source: Source, scope: Vec<String>) -> Result<Bytecode> {
|
||||||
&mut self,
|
|
||||||
source: Source,
|
|
||||||
scope: Vec<String>,
|
|
||||||
) -> Result<Bytecode> {
|
|
||||||
self.compile_bytecode_scoped(source, scope)
|
self.compile_bytecode_scoped(source, scope)
|
||||||
}
|
}
|
||||||
fn get_source(&self, id: usize) -> Source {
|
fn get_source(&self, id: usize) -> Source {
|
||||||
@@ -494,11 +486,11 @@ impl RuntimeContext for Ctx {
|
|||||||
let spans = unsafe { &*self.spans.get() };
|
let spans = unsafe { &*self.spans.get() };
|
||||||
spans[id]
|
spans[id]
|
||||||
}
|
}
|
||||||
fn take_unsynced(&mut self) -> (Vec<String>, Vec<Constant>, usize, usize) {
|
fn get_unsynced(&mut self) -> (&[String], &[Constant], usize, usize) {
|
||||||
let strings_base = self.synced_strings;
|
let strings_base = self.synced_strings;
|
||||||
let constants_base = self.synced_constants;
|
let constants_base = self.synced_constants;
|
||||||
let new_strings = self.global_strings[strings_base..].to_vec();
|
let new_strings = &self.global_strings[strings_base..];
|
||||||
let new_constants = self.global_constants[constants_base..].to_vec();
|
let new_constants = &self.global_constants[constants_base..];
|
||||||
self.synced_strings = self.global_strings.len();
|
self.synced_strings = self.global_strings.len();
|
||||||
self.synced_constants = self.global_constants.len();
|
self.synced_constants = self.global_constants.len();
|
||||||
(new_strings, new_constants, strings_base, constants_base)
|
(new_strings, new_constants, strings_base, constants_base)
|
||||||
@@ -507,10 +499,14 @@ impl RuntimeContext for Ctx {
|
|||||||
|
|
||||||
impl DisassemblerContext for Ctx {
|
impl DisassemblerContext for Ctx {
|
||||||
fn lookup_string(&self, id: u32) -> &str {
|
fn lookup_string(&self, id: u32) -> &str {
|
||||||
self.global_strings.get(id as usize).expect("string not found")
|
self.global_strings
|
||||||
|
.get(id as usize)
|
||||||
|
.expect("string not found")
|
||||||
}
|
}
|
||||||
fn lookup_constant(&self, id: u32) -> &Constant {
|
fn lookup_constant(&self, id: u32) -> &Constant {
|
||||||
self.global_constants.get(id as usize).expect("constant not found")
|
self.global_constants
|
||||||
|
.get(id as usize)
|
||||||
|
.expect("constant not found")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ impl<'id: 'ir, 'ir, Ctx: DowngradeContext<'id, 'ir>, T> Require<'id, 'ir, Ctx, T
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'id: 'ir, 'ir, Ctx: DowngradeContext<'id, 'ir>, T, E: std::fmt::Display> Require<'id, 'ir, Ctx, T>
|
impl<'id: 'ir, 'ir, Ctx: DowngradeContext<'id, 'ir>, T, E: std::fmt::Display>
|
||||||
for std::result::Result<T, E>
|
Require<'id, 'ir, Ctx, T> for std::result::Result<T, E>
|
||||||
{
|
{
|
||||||
#[inline]
|
#[inline]
|
||||||
fn require(self, ctx: &Ctx, span: TextRange) -> Result<T> {
|
fn require(self, ctx: &Ctx, span: TextRange) -> Result<T> {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
use reqwest::blocking::Client;
|
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
|
use reqwest::blocking::Client;
|
||||||
|
|
||||||
pub struct Downloader {
|
pub struct Downloader {
|
||||||
client: Client,
|
client: Client,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
|
|
||||||
|
use std::path::PathBuf;
|
||||||
|
use std::time::{SystemTime, UNIX_EPOCH};
|
||||||
|
|
||||||
use rusqlite::{Connection, OptionalExtension, params};
|
use rusqlite::{Connection, OptionalExtension, params};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::path::PathBuf;
|
|
||||||
use std::time::{SystemTime, UNIX_EPOCH};
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum CacheError {
|
pub enum CacheError {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
use std::env;
|
use std::env;
|
||||||
use std::io::IsTerminal;
|
use std::io::IsTerminal;
|
||||||
|
|
||||||
use tracing_subscriber::{EnvFilter, Layer, fmt, layer::SubscriberExt, util::SubscriberInitExt};
|
use tracing_subscriber::{EnvFilter, Layer, fmt, layer::SubscriberExt, util::SubscriberInitExt};
|
||||||
|
|
||||||
pub fn init_logging() {
|
pub fn init_logging() {
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
use nix_nar::Encoder;
|
|
||||||
use sha2::{Digest, Sha256};
|
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
|
use nix_nar::Encoder;
|
||||||
|
use sha2::{Digest, Sha256};
|
||||||
|
|
||||||
use crate::error::{Error, Result};
|
use crate::error::{Error, Result};
|
||||||
|
|
||||||
pub fn compute_nar_hash(path: &Path) -> Result<[u8; 32]> {
|
pub fn compute_nar_hash(path: &Path) -> Result<[u8; 32]> {
|
||||||
@@ -27,10 +28,12 @@ pub fn pack_nar(path: &Path) -> Result<Vec<u8>> {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
#[allow(clippy::unwrap_used)]
|
#[allow(clippy::unwrap_used)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
|
||||||
use std::fs;
|
use std::fs;
|
||||||
|
|
||||||
use tempfile::TempDir;
|
use tempfile::TempDir;
|
||||||
|
|
||||||
|
use super::*;
|
||||||
|
|
||||||
#[test_log::test]
|
#[test_log::test]
|
||||||
fn test_simple_file() {
|
fn test_simple_file() {
|
||||||
let temp = TempDir::new().unwrap();
|
let temp = TempDir::new().unwrap();
|
||||||
|
|||||||
@@ -26,15 +26,11 @@ pub(crate) trait RuntimeContext: 'static {
|
|||||||
fn compile(&mut self, source: Source) -> Result<String>;
|
fn compile(&mut self, source: Source) -> Result<String>;
|
||||||
fn compile_scoped(&mut self, source: Source, scope: Vec<String>) -> Result<String>;
|
fn compile_scoped(&mut self, source: Source, scope: Vec<String>) -> Result<String>;
|
||||||
fn compile_bytecode(&mut self, source: Source) -> Result<Bytecode>;
|
fn compile_bytecode(&mut self, source: Source) -> Result<Bytecode>;
|
||||||
fn compile_bytecode_scoped(
|
fn compile_bytecode_scoped(&mut self, source: Source, scope: Vec<String>) -> Result<Bytecode>;
|
||||||
&mut self,
|
|
||||||
source: Source,
|
|
||||||
scope: Vec<String>,
|
|
||||||
) -> Result<Bytecode>;
|
|
||||||
fn get_source(&self, id: usize) -> Source;
|
fn get_source(&self, id: usize) -> Source;
|
||||||
fn get_store(&self) -> &DaemonStore;
|
fn get_store(&self) -> &DaemonStore;
|
||||||
fn get_span(&self, id: usize) -> (usize, rnix::TextRange);
|
fn get_span(&self, id: usize) -> (usize, rnix::TextRange);
|
||||||
fn take_unsynced(&mut self) -> (Vec<String>, Vec<Constant>, usize, usize);
|
fn get_unsynced(&mut self) -> (&[String], &[Constant], usize, usize);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) trait OpStateExt<Ctx: RuntimeContext> {
|
pub(crate) trait OpStateExt<Ctx: RuntimeContext> {
|
||||||
@@ -465,7 +461,7 @@ fn sync_global_tables<Ctx: RuntimeContext>(
|
|||||||
cached: &CachedFunctions,
|
cached: &CachedFunctions,
|
||||||
ctx: &mut Ctx,
|
ctx: &mut Ctx,
|
||||||
) {
|
) {
|
||||||
let (new_strings, new_constants, strings_base, constants_base) = ctx.take_unsynced();
|
let (new_strings, new_constants, strings_base, constants_base) = ctx.get_unsynced();
|
||||||
|
|
||||||
if !new_strings.is_empty() {
|
if !new_strings.is_empty() {
|
||||||
let s_array = v8::Local::new(scope, &cached.strings_array);
|
let s_array = v8::Local::new(scope, &cached.strings_array);
|
||||||
|
|||||||
@@ -2,6 +2,14 @@
|
|||||||
|
|
||||||
// Alias for the future `!` type.
|
// Alias for the future `!` type.
|
||||||
use core::convert::Infallible as Never;
|
use core::convert::Infallible as Never;
|
||||||
|
use std::cell::RefCell;
|
||||||
|
use std::net::SocketAddr;
|
||||||
|
use std::pin::pin;
|
||||||
|
use std::process;
|
||||||
|
use std::rc::Rc;
|
||||||
|
use std::task::Poll;
|
||||||
|
use std::thread;
|
||||||
|
|
||||||
use deno_core::InspectorMsg;
|
use deno_core::InspectorMsg;
|
||||||
use deno_core::InspectorSessionChannels;
|
use deno_core::InspectorSessionChannels;
|
||||||
use deno_core::InspectorSessionKind;
|
use deno_core::InspectorSessionKind;
|
||||||
@@ -24,13 +32,6 @@ use fastwebsockets::WebSocket;
|
|||||||
use hashbrown::HashMap;
|
use hashbrown::HashMap;
|
||||||
use hyper::body::Bytes;
|
use hyper::body::Bytes;
|
||||||
use hyper_util::rt::TokioIo;
|
use hyper_util::rt::TokioIo;
|
||||||
use std::cell::RefCell;
|
|
||||||
use std::net::SocketAddr;
|
|
||||||
use std::pin::pin;
|
|
||||||
use std::process;
|
|
||||||
use std::rc::Rc;
|
|
||||||
use std::task::Poll;
|
|
||||||
use std::thread;
|
|
||||||
use tokio::net::TcpListener;
|
use tokio::net::TcpListener;
|
||||||
use tokio::sync::broadcast;
|
use tokio::sync::broadcast;
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|||||||
@@ -87,11 +87,12 @@ impl Store for DaemonStore {
|
|||||||
recursive: bool,
|
recursive: bool,
|
||||||
references: Vec<String>,
|
references: Vec<String>,
|
||||||
) -> Result<String> {
|
) -> Result<String> {
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
use nix_compat::nix_daemon::types::AddToStoreNarRequest;
|
use nix_compat::nix_daemon::types::AddToStoreNarRequest;
|
||||||
use nix_compat::nixhash::{CAHash, NixHash};
|
use nix_compat::nixhash::{CAHash, NixHash};
|
||||||
use nix_compat::store_path::{StorePath, build_ca_path};
|
use nix_compat::store_path::{StorePath, build_ca_path};
|
||||||
use sha2::{Digest, Sha256};
|
use sha2::{Digest, Sha256};
|
||||||
use std::fs;
|
|
||||||
use tempfile::NamedTempFile;
|
use tempfile::NamedTempFile;
|
||||||
|
|
||||||
let temp_file = NamedTempFile::new()
|
let temp_file = NamedTempFile::new()
|
||||||
@@ -237,11 +238,12 @@ impl Store for DaemonStore {
|
|||||||
content: &str,
|
content: &str,
|
||||||
references: Vec<String>,
|
references: Vec<String>,
|
||||||
) -> Result<String> {
|
) -> Result<String> {
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
use nix_compat::nix_daemon::types::AddToStoreNarRequest;
|
use nix_compat::nix_daemon::types::AddToStoreNarRequest;
|
||||||
use nix_compat::nixhash::CAHash;
|
use nix_compat::nixhash::CAHash;
|
||||||
use nix_compat::store_path::{StorePath, build_text_path};
|
use nix_compat::store_path::{StorePath, build_text_path};
|
||||||
use sha2::{Digest, Sha256};
|
use sha2::{Digest, Sha256};
|
||||||
use std::fs;
|
|
||||||
use tempfile::NamedTempFile;
|
use tempfile::NamedTempFile;
|
||||||
|
|
||||||
let temp_file = NamedTempFile::new()
|
let temp_file = NamedTempFile::new()
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
use core::fmt::{Debug, Display, Formatter, Result as FmtResult};
|
use core::fmt::{Debug, Display, Formatter, Result as FmtResult};
|
||||||
use core::hash::Hash;
|
use core::hash::Hash;
|
||||||
use core::ops::Deref;
|
use core::ops::Deref;
|
||||||
|
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
use std::ops::DerefMut;
|
use std::ops::DerefMut;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
use crate::utils::{eval, eval_result};
|
|
||||||
use nix_js::value::Value;
|
use nix_js::value::Value;
|
||||||
|
|
||||||
|
use crate::utils::{eval, eval_result};
|
||||||
|
|
||||||
#[test_log::test]
|
#[test_log::test]
|
||||||
fn arithmetic() {
|
fn arithmetic() {
|
||||||
assert_eq!(eval("1 + 1"), Value::Int(2));
|
assert_eq!(eval("1 + 1"), Value::Int(2));
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
use crate::utils::eval;
|
|
||||||
use nix_js::value::{AttrSet, List, Value};
|
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
|
|
||||||
|
use nix_js::value::{AttrSet, List, Value};
|
||||||
|
|
||||||
|
use crate::utils::eval;
|
||||||
|
|
||||||
#[test_log::test]
|
#[test_log::test]
|
||||||
fn builtins_accessible() {
|
fn builtins_accessible() {
|
||||||
let result = eval("builtins");
|
let result = eval("builtins");
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
use crate::utils::eval_result;
|
|
||||||
use nix_js::value::Value;
|
use nix_js::value::Value;
|
||||||
|
|
||||||
|
use crate::utils::eval_result;
|
||||||
|
|
||||||
#[test_log::test]
|
#[test_log::test]
|
||||||
fn to_file_simple() {
|
fn to_file_simple() {
|
||||||
let result =
|
let result =
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
use crate::utils::{eval_deep, eval_deep_result};
|
|
||||||
use nix_js::value::Value;
|
use nix_js::value::Value;
|
||||||
|
|
||||||
|
use crate::utils::{eval_deep, eval_deep_result};
|
||||||
|
|
||||||
#[test_log::test]
|
#[test_log::test]
|
||||||
fn add_operator_preserves_derivation_context() {
|
fn add_operator_preserves_derivation_context() {
|
||||||
let result = eval_deep(
|
let result = eval_deep(
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
use crate::utils::{eval, eval_result};
|
|
||||||
use nix_js::value::{List, Value};
|
use nix_js::value::{List, Value};
|
||||||
|
|
||||||
|
use crate::utils::{eval, eval_result};
|
||||||
|
|
||||||
#[test_log::test]
|
#[test_log::test]
|
||||||
fn true_literal() {
|
fn true_literal() {
|
||||||
assert_eq!(eval("true"), Value::Bool(true));
|
assert_eq!(eval("true"), Value::Bool(true));
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
use crate::utils::{eval, eval_result};
|
|
||||||
use nix_js::value::Value;
|
use nix_js::value::Value;
|
||||||
|
|
||||||
|
use crate::utils::{eval, eval_result};
|
||||||
|
|
||||||
#[test_log::test]
|
#[test_log::test]
|
||||||
fn required_parameters() {
|
fn required_parameters() {
|
||||||
assert_eq!(eval("({ a, b }: a + b) { a = 1; b = 2; }"), Value::Int(3));
|
assert_eq!(eval("({ a, b }: a + b) { a = 1; b = 2; }"), Value::Int(3));
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
use crate::utils::{eval, eval_result};
|
|
||||||
use nix_js::context::Context;
|
use nix_js::context::Context;
|
||||||
use nix_js::error::Source;
|
use nix_js::error::Source;
|
||||||
use nix_js::value::Value;
|
use nix_js::value::Value;
|
||||||
|
|
||||||
|
use crate::utils::{eval, eval_result};
|
||||||
|
|
||||||
#[test_log::test]
|
#[test_log::test]
|
||||||
fn import_absolute_path() {
|
fn import_absolute_path() {
|
||||||
let temp_dir = tempfile::tempdir().unwrap();
|
let temp_dir = tempfile::tempdir().unwrap();
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
use crate::utils::eval;
|
|
||||||
use nix_js::value::Value;
|
use nix_js::value::Value;
|
||||||
|
|
||||||
|
use crate::utils::eval;
|
||||||
|
|
||||||
#[test_log::test]
|
#[test_log::test]
|
||||||
fn large_i64_max() {
|
fn large_i64_max() {
|
||||||
assert_eq!(eval("9223372036854775807"), Value::Int(9223372036854775807));
|
assert_eq!(eval("9223372036854775807"), Value::Int(9223372036854775807));
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
use crate::utils::eval;
|
|
||||||
use nix_js::value::{AttrSet, List, Symbol, Value};
|
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
|
|
||||||
|
use nix_js::value::{AttrSet, List, Symbol, Value};
|
||||||
|
|
||||||
|
use crate::utils::eval;
|
||||||
|
|
||||||
#[test_log::test]
|
#[test_log::test]
|
||||||
fn addition() {
|
fn addition() {
|
||||||
assert_eq!(eval("1 + 1"), Value::Int(2));
|
assert_eq!(eval("1 + 1"), Value::Int(2));
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
use crate::utils::{eval, eval_result};
|
|
||||||
use nix_js::value::Value;
|
use nix_js::value::Value;
|
||||||
|
|
||||||
|
use crate::utils::{eval, eval_result};
|
||||||
|
|
||||||
#[test_log::test]
|
#[test_log::test]
|
||||||
fn path_type_of() {
|
fn path_type_of() {
|
||||||
let result = eval("builtins.typeOf ./foo");
|
let result = eval("builtins.typeOf ./foo");
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use crate::utils::eval;
|
|
||||||
use nix_js::value::{List, Value};
|
use nix_js::value::{List, Value};
|
||||||
|
|
||||||
|
use crate::utils::eval;
|
||||||
use crate::utils::eval_result;
|
use crate::utils::eval_result;
|
||||||
|
|
||||||
#[test_log::test]
|
#[test_log::test]
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
use crate::utils::eval_result;
|
|
||||||
use nix_js::context::Context;
|
use nix_js::context::Context;
|
||||||
use nix_js::value::Value;
|
use nix_js::value::Value;
|
||||||
|
|
||||||
|
use crate::utils::eval_result;
|
||||||
|
|
||||||
fn eval(expr: &str) -> Value {
|
fn eval(expr: &str) -> Value {
|
||||||
eval_result(expr).unwrap_or_else(|e| panic!("{}", e))
|
eval_result(expr).unwrap_or_else(|e| panic!("{}", e))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
use crate::utils::eval;
|
|
||||||
use nix_js::value::Value;
|
use nix_js::value::Value;
|
||||||
|
|
||||||
|
use crate::utils::eval;
|
||||||
|
|
||||||
#[test_log::test]
|
#[test_log::test]
|
||||||
fn non_recursive_bindings() {
|
fn non_recursive_bindings() {
|
||||||
assert_eq!(eval("let x = 1; y = 2; z = x + y; in z"), Value::Int(3));
|
assert_eq!(eval("let x = 1; y = 2; z = x + y; in z"), Value::Int(3));
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
use crate::utils::{eval, eval_result};
|
|
||||||
use nix_js::value::Value;
|
use nix_js::value::Value;
|
||||||
|
|
||||||
|
use crate::utils::{eval, eval_result};
|
||||||
|
|
||||||
#[test_log::test]
|
#[test_log::test]
|
||||||
fn string_returns_as_is() {
|
fn string_returns_as_is() {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
|
|||||||
1
rustfmt.toml
Normal file
1
rustfmt.toml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
group_imports = "StdExternalCrate"
|
||||||
Reference in New Issue
Block a user