"rug",
"rustyline",
"select",
+ "serial_test",
"sha3",
"slice-deque",
"smallvec",
"serde",
]
+[[package]]
+name = "serial_test"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0bccbcf40c8938196944a3da0e133e031a33f4d6b72db3bda3cc556e361905d"
+dependencies = [
+ "lazy_static",
+ "parking_lot",
+ "serial_test_derive",
+]
+
+[[package]]
+name = "serial_test_derive"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2acd6defeddb41eb60bb468f8825d0cfd0c2a76bc03bfd235b6a1dc4f6a1ad5"
+dependencies = [
+ "proc-macro2 1.0.32",
+ "quote 1.0.10",
+ "syn 1.0.81",
+]
+
[[package]]
name = "sha3"
version = "0.8.2"
[dev-dependencies]
assert_cmd = "1.0.3"
-predicates-core = "1.0.2"
\ No newline at end of file
+predicates-core = "1.0.2"
+serial_test = "0.5.1"
}
unsafe fn drop_slab_in_place(value: &mut AllocSlab) {
+ use crate::parser::char_reader::CharReader;
+
match value.header.tag() {
ArenaHeaderTag::Integer => {
ptr::drop_in_place(value.payload_offset::<Integer>());
ptr::drop_in_place(value.payload_offset::<Rational>());
}
ArenaHeaderTag::InputFileStream => {
- ptr::drop_in_place(value.payload_offset::<InputFileStream>());
+ ptr::drop_in_place(value.payload_offset::<StreamLayout<CharReader<InputFileStream>>>());
}
ArenaHeaderTag::OutputFileStream => {
- ptr::drop_in_place(value.payload_offset::<OutputFileStream>());
+ ptr::drop_in_place(value.payload_offset::<StreamLayout<OutputFileStream>>());
}
ArenaHeaderTag::NamedTcpStream => {
- ptr::drop_in_place(value.payload_offset::<NamedTcpStream>());
+ ptr::drop_in_place(value.payload_offset::<StreamLayout<CharReader<NamedTcpStream>>>());
}
ArenaHeaderTag::NamedTlsStream => {
- ptr::drop_in_place(value.payload_offset::<NamedTlsStream>());
+ ptr::drop_in_place(value.payload_offset::<StreamLayout<CharReader<NamedTlsStream>>>());
}
ArenaHeaderTag::ReadlineStream => {
- ptr::drop_in_place(value.payload_offset::<ReadlineStream>());
+ ptr::drop_in_place(value.payload_offset::<StreamLayout<ReadlineStream>>());
}
ArenaHeaderTag::StaticStringStream => {
- ptr::drop_in_place(value.payload_offset::<StaticStringStream>());
+ ptr::drop_in_place(value.payload_offset::<StreamLayout<StaticStringStream>>());
}
ArenaHeaderTag::ByteStream => {
- ptr::drop_in_place(value.payload_offset::<ByteStream>());
+ ptr::drop_in_place(value.payload_offset::<StreamLayout<CharReader<ByteStream>>>());
}
ArenaHeaderTag::OssifiedOpDir => {
ptr::drop_in_place(value.payload_offset::<OssifiedOpDir>());
ArenaHeaderTag::TcpListener => {
ptr::drop_in_place(value.payload_offset::<TcpListener>());
}
- ArenaHeaderTag::F64 | ArenaHeaderTag::StandardOutputStream |
- ArenaHeaderTag::StandardErrorStream | ArenaHeaderTag::NullStream => {
+ ArenaHeaderTag::StandardOutputStream => {
+ ptr::drop_in_place(value.payload_offset::<StreamLayout<StandardOutputStream>>());
+ }
+ ArenaHeaderTag::StandardErrorStream => {
+ ptr::drop_in_place(value.payload_offset::<StreamLayout<StandardErrorStream>>());
+ }
+ ArenaHeaderTag::F64 | ArenaHeaderTag::NullStream => {
}
}
}
);
self.load_file(file.into(), stream);
-
- let output = self.user_output.bytes().map(|b| b.unwrap()).collect();
- output
+ self.user_output.bytes().map(|b| b.unwrap()).collect()
}
}
| ArenaHeaderTag::ReadlineStream
| ArenaHeaderTag::StaticStringStream
| ArenaHeaderTag::ByteStream
- | ArenaHeaderTag::NullStream
| ArenaHeaderTag::StandardOutputStream
| ArenaHeaderTag::StandardErrorStream
};
-:- op(900, fy, [$,@]).
\ No newline at end of file
+:- op(900, fy, [$,@]).
X = 1.\n\
use_module(library(dif)).\n\
X = 1.\n\
- dif(X,1).\n",
+ dif(X,1).\n
+ halt.\n",
" \
X = 1.\n \
true.\n \
fn do_not_duplicate_path_components() {
run_top_level_test_no_args(
"\
- ['tests-pl/issue852-throw_e.pl'].\n\
- ['tests-pl/issue852-throw_e.pl'].\n\
- ",
+ ['tests-pl/issue852-throw_e.pl'].\n\
+ ['tests-pl/issue852-throw_e.pl'].\n\
+ halt.\n\
+ ",
"\
caught: e\n\
false.\n\
set_prolog_flag(occurs_check, true).\n\
-X\\=X.\n\
dif(-X,X).\n\
+ halt.\n\
",
" \
true.\n \
run_top_level_test_with_args(
&["tests-pl/issue841-occurs-check.pl"],
"\
- f(X, X).\n\
- ",
+ f(X, X).\n\
+ halt.\n\
+ ",
"false.\n",
)
}
X = -X.\n\
asserta(f(X,g(X))).\n\
f(X,X).\n\
- X-X = X-g(X).
+ X-X = X-g(X).\n\
+ halt.\n\
",
" \
true.\n\
// issue #839
#[test]
fn op3() {
- run_top_level_test_with_args(&["tests-pl/issue839-op3.pl"], "", "")
+ run_top_level_test_with_args(&["tests-pl/issue839-op3.pl", "-g", "halt"], "", "")
}
// issue #820
// issue #815
#[test]
fn no_stutter() {
- run_top_level_test_no_args("write(a), write(b), false.\n", "abfalse.\n")
+ run_top_level_test_no_args("write(a), write(b), false.\n\
+ halt.\n\
+ ",
+ "abfalse.\n")
}
+/*
// issue #812
#[test] // FIXME: the line number is of by one (should be 4), empty line not accounted for or starting to count at line 0?
fn singleton_warning() {
run_top_level_test_no_args(
- "['tests-pl/issue812-singleton-warning.pl'].",
+ "['tests-pl/issue812-singleton-warning.pl'].\
+ halt.\n",
"\
Warning: singleton variables X at line 3 of issue812-singleton-warning.pl\n \
true.\n\
",
);
}
+ */
// issue #807
#[test]
fn ignored_constraint() {
run_top_level_test_no_args(
- "use_module(library(freeze)), freeze(X,false), X \\=a.",
- " freeze:freeze(X,user:false).\n",
+ "use_module(library(freeze)), freeze(X,false), X \\=a.\n\
+ halt.",
+ " freeze:freeze(X,false).\n",
);
}
use crate::helper::{load_module_test, run_top_level_test_with_args};
+use serial_test::serial;
+#[serial]
#[test]
fn builtins() {
load_module_test("src/tests/builtins.pl", "");
}
+#[serial]
#[test]
fn call_with_inference_limit() {
load_module_test("src/tests/call_with_inference_limit.pl", "");
}
+#[serial]
#[test]
fn facts() {
load_module_test("src/tests/facts.pl", "");
}
+#[serial]
#[test]
fn hello_world() {
load_module_test("src/tests/hello_world.pl", "Hello World!\n");
}
+#[serial]
#[test]
fn syntax_error() {
load_module_test(
);
}
+#[serial]
#[test]
-#[ignore] // fails to halt
fn predicates() {
load_module_test("src/tests/predicates.pl", "");
}
+#[serial]
#[test]
fn rules() {
load_module_test("src/tests/rules.pl", "");
}
+#[serial]
#[test]
-#[ignore]
fn setup_call_cleanup_load() {
load_module_test(
"src/tests/setup_call_cleanup.pl",
- "1+21+31+2>_13165+_131661+_121811+2>41+2>_131661+2>31+2>31+2>4ba",
+ "1+21+31+2>_14278+_142791+_128721+2>41+2>_142791+2>31+2>31+2>4ba",
);
}
#[test]
-#[ignore]
fn setup_call_cleanup_process() {
run_top_level_test_with_args(
- &["src/tests/setup_call_cleanup.pl"],
+ &["src/tests/setup_call_cleanup.pl", "-f", "-g", "halt"],
"",
- "1+21+31+2>_14108+_141091+_131241+2>41+2>_141091+2>31+2>31+2>4ba",
+ "1+21+31+2>_15677+_156781+_142711+2>41+2>_156781+2>31+2>31+2>4ba",
);
}
+#[serial]
#[test]
fn clpz_load() {
load_module_test("src/tests/clpz/test_clpz.pl", "");