Skip to content

Commit e839ffe

Browse files
committed
libterm: Unconfigure tests during normal build
1 parent 751af27 commit e839ffe

File tree

7 files changed

+173
-173
lines changed

7 files changed

+173
-173
lines changed

src/libterm/terminfo/parm.rs

Lines changed: 3 additions & 141 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ use self::States::*;
55

66
use std::iter::repeat;
77

8+
#[cfg(test)]
9+
mod tests;
10+
811
#[derive(Clone, Copy, PartialEq)]
912
enum States {
1013
Nothing,
@@ -526,144 +529,3 @@ fn format(val: Param, op: FormatOp, flags: Flags) -> Result<Vec<u8>, String> {
526529
}
527530
Ok(s)
528531
}
529-
530-
#[cfg(test)]
531-
mod test {
532-
use super::{expand, Variables};
533-
use super::Param::{self, Words, Number};
534-
use std::result::Result::Ok;
535-
536-
#[test]
537-
fn test_basic_setabf() {
538-
let s = b"\\E[48;5;%p1%dm";
539-
assert_eq!(expand(s, &[Number(1)], &mut Variables::new()).unwrap(),
540-
"\\E[48;5;1m".bytes().collect::<Vec<_>>());
541-
}
542-
543-
#[test]
544-
fn test_multiple_int_constants() {
545-
assert_eq!(expand(b"%{1}%{2}%d%d", &[], &mut Variables::new()).unwrap(),
546-
"21".bytes().collect::<Vec<_>>());
547-
}
548-
549-
#[test]
550-
fn test_op_i() {
551-
let mut vars = Variables::new();
552-
assert_eq!(expand(b"%p1%d%p2%d%p3%d%i%p1%d%p2%d%p3%d",
553-
&[Number(1), Number(2), Number(3)],
554-
&mut vars),
555-
Ok("123233".bytes().collect::<Vec<_>>()));
556-
assert_eq!(expand(b"%p1%d%p2%d%i%p1%d%p2%d", &[], &mut vars),
557-
Ok("0011".bytes().collect::<Vec<_>>()));
558-
}
559-
560-
#[test]
561-
fn test_param_stack_failure_conditions() {
562-
let mut varstruct = Variables::new();
563-
let vars = &mut varstruct;
564-
fn get_res(fmt: &str,
565-
cap: &str,
566-
params: &[Param],
567-
vars: &mut Variables)
568-
-> Result<Vec<u8>, String> {
569-
let mut u8v: Vec<_> = fmt.bytes().collect();
570-
u8v.extend(cap.as_bytes().iter().map(|&b| b));
571-
expand(&u8v, params, vars)
572-
}
573-
574-
let caps = ["%d", "%c", "%s", "%Pa", "%l", "%!", "%~"];
575-
for &cap in caps.iter() {
576-
let res = get_res("", cap, &[], vars);
577-
assert!(res.is_err(),
578-
"Op {} succeeded incorrectly with 0 stack entries",
579-
cap);
580-
let p = if cap == "%s" || cap == "%l" {
581-
Words("foo".to_string())
582-
} else {
583-
Number(97)
584-
};
585-
let res = get_res("%p1", cap, &[p], vars);
586-
assert!(res.is_ok(),
587-
"Op {} failed with 1 stack entry: {}",
588-
cap,
589-
res.unwrap_err());
590-
}
591-
let caps = ["%+", "%-", "%*", "%/", "%m", "%&", "%|", "%A", "%O"];
592-
for &cap in caps.iter() {
593-
let res = expand(cap.as_bytes(), &[], vars);
594-
assert!(res.is_err(),
595-
"Binop {} succeeded incorrectly with 0 stack entries",
596-
cap);
597-
let res = get_res("%{1}", cap, &[], vars);
598-
assert!(res.is_err(),
599-
"Binop {} succeeded incorrectly with 1 stack entry",
600-
cap);
601-
let res = get_res("%{1}%{2}", cap, &[], vars);
602-
assert!(res.is_ok(),
603-
"Binop {} failed with 2 stack entries: {}",
604-
cap,
605-
res.unwrap_err());
606-
}
607-
}
608-
609-
#[test]
610-
fn test_push_bad_param() {
611-
assert!(expand(b"%pa", &[], &mut Variables::new()).is_err());
612-
}
613-
614-
#[test]
615-
fn test_comparison_ops() {
616-
let v = [('<', [1u8, 0u8, 0u8]), ('=', [0u8, 1u8, 0u8]), ('>', [0u8, 0u8, 1u8])];
617-
for &(op, bs) in v.iter() {
618-
let s = format!("%{{1}}%{{2}}%{}%d", op);
619-
let res = expand(s.as_bytes(), &[], &mut Variables::new());
620-
assert!(res.is_ok(), res.unwrap_err());
621-
assert_eq!(res.unwrap(), vec![b'0' + bs[0]]);
622-
let s = format!("%{{1}}%{{1}}%{}%d", op);
623-
let res = expand(s.as_bytes(), &[], &mut Variables::new());
624-
assert!(res.is_ok(), res.unwrap_err());
625-
assert_eq!(res.unwrap(), vec![b'0' + bs[1]]);
626-
let s = format!("%{{2}}%{{1}}%{}%d", op);
627-
let res = expand(s.as_bytes(), &[], &mut Variables::new());
628-
assert!(res.is_ok(), res.unwrap_err());
629-
assert_eq!(res.unwrap(), vec![b'0' + bs[2]]);
630-
}
631-
}
632-
633-
#[test]
634-
fn test_conditionals() {
635-
let mut vars = Variables::new();
636-
let s = b"\\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m";
637-
let res = expand(s, &[Number(1)], &mut vars);
638-
assert!(res.is_ok(), res.unwrap_err());
639-
assert_eq!(res.unwrap(), "\\E[31m".bytes().collect::<Vec<_>>());
640-
let res = expand(s, &[Number(8)], &mut vars);
641-
assert!(res.is_ok(), res.unwrap_err());
642-
assert_eq!(res.unwrap(), "\\E[90m".bytes().collect::<Vec<_>>());
643-
let res = expand(s, &[Number(42)], &mut vars);
644-
assert!(res.is_ok(), res.unwrap_err());
645-
assert_eq!(res.unwrap(), "\\E[38;5;42m".bytes().collect::<Vec<_>>());
646-
}
647-
648-
#[test]
649-
fn test_format() {
650-
let mut varstruct = Variables::new();
651-
let vars = &mut varstruct;
652-
assert_eq!(expand(b"%p1%s%p2%2s%p3%2s%p4%.2s",
653-
&[Words("foo".to_string()),
654-
Words("foo".to_string()),
655-
Words("f".to_string()),
656-
Words("foo".to_string())],
657-
vars),
658-
Ok("foofoo ffo".bytes().collect::<Vec<_>>()));
659-
assert_eq!(expand(b"%p1%:-4.2s", &[Words("foo".to_string())], vars),
660-
Ok("fo ".bytes().collect::<Vec<_>>()));
661-
662-
assert_eq!(expand(b"%p1%d%p1%.3d%p1%5d%p1%:+d", &[Number(1)], vars),
663-
Ok("1001 1+1".bytes().collect::<Vec<_>>()));
664-
assert_eq!(expand(b"%p1%o%p1%#o%p2%6.4x%p2%#6.4X",
665-
&[Number(15), Number(27)],
666-
vars),
667-
Ok("17017 001b0X001B".bytes().collect::<Vec<_>>()));
668-
}
669-
}

src/libterm/terminfo/parm/tests.rs

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
use super::*;
2+
3+
use std::result::Result::Ok;
4+
5+
#[test]
6+
fn test_basic_setabf() {
7+
let s = b"\\E[48;5;%p1%dm";
8+
assert_eq!(expand(s, &[Number(1)], &mut Variables::new()).unwrap(),
9+
"\\E[48;5;1m".bytes().collect::<Vec<_>>());
10+
}
11+
12+
#[test]
13+
fn test_multiple_int_constants() {
14+
assert_eq!(expand(b"%{1}%{2}%d%d", &[], &mut Variables::new()).unwrap(),
15+
"21".bytes().collect::<Vec<_>>());
16+
}
17+
18+
#[test]
19+
fn test_op_i() {
20+
let mut vars = Variables::new();
21+
assert_eq!(expand(b"%p1%d%p2%d%p3%d%i%p1%d%p2%d%p3%d",
22+
&[Number(1), Number(2), Number(3)],
23+
&mut vars),
24+
Ok("123233".bytes().collect::<Vec<_>>()));
25+
assert_eq!(expand(b"%p1%d%p2%d%i%p1%d%p2%d", &[], &mut vars),
26+
Ok("0011".bytes().collect::<Vec<_>>()));
27+
}
28+
29+
#[test]
30+
fn test_param_stack_failure_conditions() {
31+
let mut varstruct = Variables::new();
32+
let vars = &mut varstruct;
33+
fn get_res(fmt: &str,
34+
cap: &str,
35+
params: &[Param],
36+
vars: &mut Variables)
37+
-> Result<Vec<u8>, String> {
38+
let mut u8v: Vec<_> = fmt.bytes().collect();
39+
u8v.extend(cap.as_bytes().iter().map(|&b| b));
40+
expand(&u8v, params, vars)
41+
}
42+
43+
let caps = ["%d", "%c", "%s", "%Pa", "%l", "%!", "%~"];
44+
for &cap in caps.iter() {
45+
let res = get_res("", cap, &[], vars);
46+
assert!(res.is_err(),
47+
"Op {} succeeded incorrectly with 0 stack entries",
48+
cap);
49+
let p = if cap == "%s" || cap == "%l" {
50+
Words("foo".to_string())
51+
} else {
52+
Number(97)
53+
};
54+
let res = get_res("%p1", cap, &[p], vars);
55+
assert!(res.is_ok(),
56+
"Op {} failed with 1 stack entry: {}",
57+
cap,
58+
res.unwrap_err());
59+
}
60+
let caps = ["%+", "%-", "%*", "%/", "%m", "%&", "%|", "%A", "%O"];
61+
for &cap in caps.iter() {
62+
let res = expand(cap.as_bytes(), &[], vars);
63+
assert!(res.is_err(),
64+
"Binop {} succeeded incorrectly with 0 stack entries",
65+
cap);
66+
let res = get_res("%{1}", cap, &[], vars);
67+
assert!(res.is_err(),
68+
"Binop {} succeeded incorrectly with 1 stack entry",
69+
cap);
70+
let res = get_res("%{1}%{2}", cap, &[], vars);
71+
assert!(res.is_ok(),
72+
"Binop {} failed with 2 stack entries: {}",
73+
cap,
74+
res.unwrap_err());
75+
}
76+
}
77+
78+
#[test]
79+
fn test_push_bad_param() {
80+
assert!(expand(b"%pa", &[], &mut Variables::new()).is_err());
81+
}
82+
83+
#[test]
84+
fn test_comparison_ops() {
85+
let v = [('<', [1u8, 0u8, 0u8]), ('=', [0u8, 1u8, 0u8]), ('>', [0u8, 0u8, 1u8])];
86+
for &(op, bs) in v.iter() {
87+
let s = format!("%{{1}}%{{2}}%{}%d", op);
88+
let res = expand(s.as_bytes(), &[], &mut Variables::new());
89+
assert!(res.is_ok(), res.unwrap_err());
90+
assert_eq!(res.unwrap(), vec![b'0' + bs[0]]);
91+
let s = format!("%{{1}}%{{1}}%{}%d", op);
92+
let res = expand(s.as_bytes(), &[], &mut Variables::new());
93+
assert!(res.is_ok(), res.unwrap_err());
94+
assert_eq!(res.unwrap(), vec![b'0' + bs[1]]);
95+
let s = format!("%{{2}}%{{1}}%{}%d", op);
96+
let res = expand(s.as_bytes(), &[], &mut Variables::new());
97+
assert!(res.is_ok(), res.unwrap_err());
98+
assert_eq!(res.unwrap(), vec![b'0' + bs[2]]);
99+
}
100+
}
101+
102+
#[test]
103+
fn test_conditionals() {
104+
let mut vars = Variables::new();
105+
let s = b"\\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m";
106+
let res = expand(s, &[Number(1)], &mut vars);
107+
assert!(res.is_ok(), res.unwrap_err());
108+
assert_eq!(res.unwrap(), "\\E[31m".bytes().collect::<Vec<_>>());
109+
let res = expand(s, &[Number(8)], &mut vars);
110+
assert!(res.is_ok(), res.unwrap_err());
111+
assert_eq!(res.unwrap(), "\\E[90m".bytes().collect::<Vec<_>>());
112+
let res = expand(s, &[Number(42)], &mut vars);
113+
assert!(res.is_ok(), res.unwrap_err());
114+
assert_eq!(res.unwrap(), "\\E[38;5;42m".bytes().collect::<Vec<_>>());
115+
}
116+
117+
#[test]
118+
fn test_format() {
119+
let mut varstruct = Variables::new();
120+
let vars = &mut varstruct;
121+
assert_eq!(expand(b"%p1%s%p2%2s%p3%2s%p4%.2s",
122+
&[Words("foo".to_string()),
123+
Words("foo".to_string()),
124+
Words("f".to_string()),
125+
Words("foo".to_string())],
126+
vars),
127+
Ok("foofoo ffo".bytes().collect::<Vec<_>>()));
128+
assert_eq!(expand(b"%p1%:-4.2s", &[Words("foo".to_string())], vars),
129+
Ok("fo ".bytes().collect::<Vec<_>>()));
130+
131+
assert_eq!(expand(b"%p1%d%p1%.3d%p1%5d%p1%:+d", &[Number(1)], vars),
132+
Ok("1001 1+1".bytes().collect::<Vec<_>>()));
133+
assert_eq!(expand(b"%p1%o%p1%#o%p2%6.4x%p2%#6.4X",
134+
&[Number(15), Number(27)],
135+
vars),
136+
Ok("17017 001b0X001B".bytes().collect::<Vec<_>>()));
137+
}

src/libterm/terminfo/parser/compiled.rs

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ use std::io;
77
use std::io::prelude::*;
88
use super::super::TermInfo;
99

10+
#[cfg(test)]
11+
mod tests;
12+
1013
// These are the orders ncurses uses in its compiled format (as of 5.9). Not sure if portable.
1114

1215
#[rustfmt::skip]
@@ -331,16 +334,3 @@ pub fn msys_terminfo() -> TermInfo {
331334
strings,
332335
}
333336
}
334-
335-
#[cfg(test)]
336-
mod test {
337-
338-
use super::{boolnames, boolfnames, numnames, numfnames, stringnames, stringfnames};
339-
340-
#[test]
341-
fn test_veclens() {
342-
assert_eq!(boolfnames.len(), boolnames.len());
343-
assert_eq!(numfnames.len(), numnames.len());
344-
assert_eq!(stringfnames.len(), stringnames.len());
345-
}
346-
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
use super::*;
2+
3+
#[test]
4+
fn test_veclens() {
5+
assert_eq!(boolfnames.len(), boolnames.len());
6+
assert_eq!(numfnames.len(), numnames.len());
7+
assert_eq!(stringfnames.len(), stringnames.len());
8+
}

src/libterm/terminfo/searcher.rs

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ use std::env;
66
use std::fs;
77
use std::path::PathBuf;
88

9+
#[cfg(test)]
10+
mod tests;
11+
912
/// Return path to database entry for `term`
1013
#[allow(deprecated)]
1114
pub fn get_dbpath_for_term(term: &str) -> Option<PathBuf> {
@@ -64,21 +67,3 @@ pub fn get_dbpath_for_term(term: &str) -> Option<PathBuf> {
6467
}
6568
None
6669
}
67-
68-
#[test]
69-
#[ignore = "buildbots don't have ncurses installed and I can't mock everything I need"]
70-
fn test_get_dbpath_for_term() {
71-
// woefully inadequate test coverage
72-
// note: current tests won't work with non-standard terminfo hierarchies (e.g., macOS's)
73-
use std::env;
74-
// FIXME (#9639): This needs to handle non-utf8 paths
75-
fn x(t: &str) -> String {
76-
let p = get_dbpath_for_term(t).expect("no terminfo entry found");
77-
p.to_str().unwrap().to_string()
78-
}
79-
assert!(x("screen") == "/usr/share/terminfo/s/screen");
80-
assert!(get_dbpath_for_term("") == None);
81-
env::set_var("TERMINFO_DIRS", ":");
82-
assert!(x("screen") == "/usr/share/terminfo/s/screen");
83-
env::remove_var("TERMINFO_DIRS");
84-
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
use super::*;
2+
3+
#[test]
4+
#[ignore = "buildbots don't have ncurses installed and I can't mock everything I need"]
5+
fn test_get_dbpath_for_term() {
6+
// woefully inadequate test coverage
7+
// note: current tests won't work with non-standard terminfo hierarchies (e.g., macOS's)
8+
use std::env;
9+
// FIXME (#9639): This needs to handle non-utf8 paths
10+
fn x(t: &str) -> String {
11+
let p = get_dbpath_for_term(t).expect("no terminfo entry found");
12+
p.to_str().unwrap().to_string()
13+
}
14+
assert!(x("screen") == "/usr/share/terminfo/s/screen");
15+
assert!(get_dbpath_for_term("") == None);
16+
env::set_var("TERMINFO_DIRS", ":");
17+
assert!(x("screen") == "/usr/share/terminfo/s/screen");
18+
env::remove_var("TERMINFO_DIRS");
19+
}

src/tools/tidy/src/unit_tests.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ pub fn check(root_path: &Path, bad: &mut bool) {
3838
"libstd",
3939
"libsyntax",
4040
"libsyntax_pos",
41-
"libterm/terminfo",
4241
];
4342

4443
let mut skip = |path: &Path| {

0 commit comments

Comments
 (0)