let adb_arg = format!("export LD_LIBRARY_PATH={}; gdbserver :5039 {}/{}",
config.adb_test_dir.clone(), config.adb_test_dir.clone(),
- str::from_utf8(exe_file.filename().unwrap()));
+ str::from_utf8(exe_file.filename().unwrap()).unwrap());
let mut process = procsrv::run_background("", config.adb_path,
[~"shell",adb_arg.clone()],
}
pub fn as_str_slice<'a>(&'a self) -> &'a str {
- str::from_utf8(self.data.slice(self.start, self.end))
+ str::from_utf8(self.data.slice(self.start, self.end)).unwrap()
}
pub fn as_str(&self) -> ~str {
st.write_failures();
let s = match st.out {
- Raw(ref m) => str::from_utf8(m.get_ref()),
+ Raw(ref m) => str::from_utf8(m.get_ref()).unwrap(),
Pretty(_) => unreachable!()
};
if !o.status.success() {
sess.err(format!("{} {} failed with: {}", ar, args.connect(" "),
o.status));
- sess.note(format!("stdout ---\n{}", str::from_utf8(o.output)));
- sess.note(format!("stderr ---\n{}", str::from_utf8(o.error)));
+ sess.note(format!("stdout ---\n{}", str::from_utf8(o.output).unwrap()));
+ sess.note(format!("stderr ---\n{}", str::from_utf8(o.error).unwrap()));
sess.abort_if_errors();
}
o
/// Lists all files in an archive
pub fn files(&self) -> ~[~str] {
let output = run_ar(self.sess, "t", None, [&self.dst]);
- str::from_utf8(output.output).lines().map(|s| s.to_owned()).collect()
+ str::from_utf8(output.output).unwrap().lines().map(|s| s.to_owned()).collect()
}
fn add_archive(&mut self, archive: &Path, name: &str, skip: &[&str]) {
fn parse_ident_(st: &mut PState, is_last: |char| -> bool) -> ast::Ident {
scan(st, is_last, |bytes| {
- st.tcx.sess.ident_of(str::from_utf8(bytes))
+ st.tcx.sess.ident_of(str::from_utf8(bytes).unwrap())
})
}
let mut abis = AbiSet::empty();
while peek(st) != ']' {
scan(st, |c| c == ',', |bytes| {
- let abi_str = str::from_utf8(bytes).to_owned();
+ let abi_str = str::from_utf8(bytes).unwrap().to_owned();
let abi = abi::lookup(abi_str).expect(abi_str);
abis.add(abi);
});
None => {
let wr = &mut MemWriter::new();
enc_sty(wr, cx, &ty::get(t).sty);
- let s = str::from_utf8(wr.get_ref()).to_managed();
+ let s = str::from_utf8(wr.get_ref()).unwrap().to_managed();
let mut short_names_cache = cx.tcx
.short_names_cache
.borrow_mut();
unsafe {
let my_opaque: &my_opaque = cast::transmute(opaque);
vec::raw::buf_as_slice((*text).data, (*text).size as uint, |text| {
- let text = str::from_utf8(text);
+ let text = str::from_utf8(text).unwrap();
let mut lines = text.lines().filter(|l| stripped_filtered_line(*l).is_none());
let text = lines.to_owned_vec().connect("\n");
let (test, shouldfail, ignore) =
vec::raw::buf_as_slice((*lang).data,
(*lang).size as uint, |lang| {
- let s = str::from_utf8(lang);
+ let s = str::from_utf8(lang).unwrap();
(s.contains("rust"), s.contains("should_fail"),
s.contains("ignore"))
});
if !test { return }
vec::raw::buf_as_slice((*text).data, (*text).size as uint, |text| {
let tests: &mut ::test::Collector = intrinsics::transmute(opaque);
- let text = str::from_utf8(text);
+ let text = str::from_utf8(text).unwrap();
let mut lines = text.lines().map(|l| stripped_filtered_line(l).unwrap_or(l));
let text = lines.to_owned_vec().connect("\n");
tests.add_test(text, ignore, shouldfail);
Some(output) => {
debug!("run_custom: second pkg command did {:?}", output.status);
// Run the configs() function to get the configs
- let cfgs = str::from_utf8(output.output).words()
+ let cfgs = str::from_utf8(output.output).unwrap().words()
.map(|w| w.to_owned()).collect();
Some((cfgs, output.status))
},
let rslt = prog.finish_with_output();
if !rslt.status.success() {
fail!("{} [git returned {:?}, output = {}, error = {}]", err_msg,
- rslt.status, str::from_utf8(rslt.output), str::from_utf8(rslt.error));
+ rslt.status, str::from_utf8(rslt.output).unwrap(), str::from_utf8(rslt.error).unwrap());
}
}
}).expect(format!("failed to exec `{}`", cmd));
let output = prog.finish_with_output();
debug!("Output from command {} with args {:?} was {} \\{{}\\}[{:?}]",
- cmd, args, str::from_utf8(output.output),
- str::from_utf8(output.error),
+ cmd, args, str::from_utf8(output.output).unwrap(),
+ str::from_utf8(output.error).unwrap(),
output.status);
if !output.status.success() {
debug!("Command {} {:?} failed with exit code {:?}; its output was --- {} {} ---",
cmd, args, output.status,
- str::from_utf8(output.output), str::from_utf8(output.error));
+ str::from_utf8(output.output).unwrap(), str::from_utf8(output.error).unwrap());
Fail(output)
}
else {
fn command_line_test_output(args: &[~str]) -> ~[~str] {
let mut result = ~[];
let p_output = command_line_test(args, &os::getcwd());
- let test_output = str::from_utf8(p_output.output);
+ let test_output = str::from_utf8(p_output.output).unwrap();
for s in test_output.split('\n') {
result.push(s.to_owned());
}
Fail(_) => fail!("Command-line test failed"),
Success(r) => r
};
- let test_output = str::from_utf8(p_output.output);
+ let test_output = str::from_utf8(p_output.output).unwrap();
for s in test_output.split('\n') {
result.push(s.to_owned());
}
let workspace = create_local_package(&CrateId::new("foo"));
command_line_test([~"uninstall", ~"foo"], workspace.path());
let output = command_line_test([~"list"], workspace.path());
- assert!(!str::from_utf8(output.output).contains("foo"));
+ assert!(!str::from_utf8(output.output).unwrap().contains("foo"));
}
#[test]
let outp = prog.finish_with_output();
if !outp.status.success() {
fail!("output was {}, error was {}",
- str::from_utf8(outp.output),
- str::from_utf8(outp.error));
+ str::from_utf8(outp.output).unwrap(),
+ str::from_utf8(outp.error).unwrap());
}
assert!(exec_file.exists() && is_executable(&exec_file));
}
let outp = prog.finish_with_output();
if !outp.status.success() {
fail!("output was {}, error was {}",
- str::from_utf8(outp.output),
- str::from_utf8(outp.error));
+ str::from_utf8(outp.output).unwrap(),
+ str::from_utf8(outp.error).unwrap());
}
assert!(exec_file.exists() && is_executable(&exec_file));
}
fn test_rustpkg_test_output() {
let workspace = create_local_package_with_test(&CrateId::new("foo"));
let output = command_line_test([~"test", ~"foo"], workspace.path());
- let output_str = str::from_utf8(output.output);
+ let output_str = str::from_utf8(output.output).unwrap();
// The first two assertions are separate because test output may
// contain color codes, which could appear between "test f" and "ok".
assert!(output_str.contains("test f"));
"#[test] #[cfg(not(foobar))] fn f() { assert!('a' != 'a'); }");
let output = command_line_test([~"test", ~"--cfg", ~"foobar", ~"foo"],
foo_workspace);
- let output_str = str::from_utf8(output.output);
+ let output_str = str::from_utf8(output.output).unwrap();
assert!(output_str.contains("0 passed; 0 failed; 0 ignored; 0 measured"));
}
Fail(ProcessOutput{ error: error, output: output, .. }) => {
assert!(str::is_utf8(error));
assert!(str::is_utf8(output));
- let error_str = str::from_utf8(error);
- let out_str = str::from_utf8(output);
+ let error_str = str::from_utf8(error).unwrap();
+ let out_str = str::from_utf8(output).unwrap();
debug!("ss = {}", error_str);
debug!("out_str = {}", out_str);
if out_str.contains("Package badpkg depends on some_package_that_doesnt_exist") &&
}
let mut output = None;
- let output_text = str::from_utf8(outp.output);
+ let output_text = str::from_utf8(outp.output).unwrap();
for l in output_text.lines() {
if !l.is_whitespace() {
output = Some(l);
let outp = opt_outp.expect("Failed to exec `git`");
if outp.status.success() {
debug!("Cloned it... ( {}, {} )",
- str::from_utf8(outp.output),
- str::from_utf8(outp.error));
+ str::from_utf8(outp.output).unwrap(),
+ str::from_utf8(outp.error).unwrap());
let mut output = None;
let git_dir = tmp_dir.join(".git");
debug!("(getting version, now getting tags) executing \\{git --git-dir={} tag -l\\}",
["--git-dir=" + git_dir.as_str().unwrap(),
~"tag", ~"-l"]);
let outp = opt_outp.expect("Failed to exec `git`");
- let output_text = str::from_utf8(outp.output);
+ let output_text = str::from_utf8(outp.output).unwrap();
debug!("Full output: ( {} ) [{:?}]", output_text, outp.status);
for l in output_text.lines() {
debug!("A line of output: {}", l);
let nread = result.unwrap();
assert!(nread > 0);
- let read_str = str::from_utf8(read_mem.slice_to(nread as uint));
+ let read_str = str::from_utf8(read_mem.slice_to(nread as uint)).unwrap();
assert_eq!(read_str, "hello");
}
// unlink
if self.buf.is_null() { return None; }
let buf = self.as_bytes();
let buf = buf.slice_to(buf.len()-1); // chop off the trailing NUL
- str::from_utf8_opt(buf)
+ str::from_utf8(buf)
}
/// Return a CString iterator.
fn runplural(&mut self, value: uint, pieces: &[rt::Piece]) {
::uint::to_str_bytes(value, 10, |buf| {
- let valuestr = str::from_utf8(buf);
+ let valuestr = str::from_utf8(buf).unwrap();
for piece in pieces.iter() {
self.run(piece, Some(valuestr));
}
}
}
unlink(filename);
- let read_str = str::from_utf8(read_mem);
+ let read_str = str::from_utf8(read_mem).unwrap();
assert_eq!(read_str, message);
})
tell_pos_post_read = read_stream.tell();
}
unlink(filename);
- let read_str = str::from_utf8(read_mem);
+ let read_str = str::from_utf8(read_mem).unwrap();
assert_eq!(read_str, message.slice(4, 8));
assert_eq!(tell_pos_pre_read, set_cursor);
assert_eq!(tell_pos_post_read, message.len() as u64);
read_stream.read(read_mem);
}
unlink(filename);
- let read_str = str::from_utf8(read_mem);
+ let read_str = str::from_utf8(read_mem).unwrap();
assert!(read_str == final_msg.to_owned());
})
read_stream.seek(-4, SeekEnd);
read_stream.read(read_mem);
- assert_eq!(str::from_utf8(read_mem), chunk_three);
+ assert_eq!(str::from_utf8(read_mem).unwrap(), chunk_three);
read_stream.seek(-9, SeekCur);
read_stream.read(read_mem);
- assert_eq!(str::from_utf8(read_mem), chunk_two);
+ assert_eq!(str::from_utf8(read_mem).unwrap(), chunk_two);
read_stream.seek(0, SeekSet);
read_stream.read(read_mem);
- assert_eq!(str::from_utf8(read_mem), chunk_one);
+ assert_eq!(str::from_utf8(read_mem).unwrap(), chunk_one);
}
unlink(filename);
})
{
let n = f.filestem_str();
File::open(f).read(mem);
- let read_str = str::from_utf8(mem);
+ let read_str = str::from_utf8(mem).unwrap();
let expected = match n {
None|Some("") => fail!("really shouldn't happen.."),
Some(n) => prefix+n
}
}
}
- match str::from_utf8_opt(buf.slice_to(width)) {
+ match str::from_utf8(buf.slice_to(width)) {
Some(s) => Some(s.char_at(0)),
None => None
}
loop {
match input.read(buf) {
None => { break }
- Some(n) => { ret.push_str(str::from_utf8(buf.slice_to(n))); }
+ Some(n) => { ret.push_str(str::from_utf8(buf.slice_to(n)).unwrap()); }
}
}
return ret;
/// If the path is not representable in utf-8, this returns None.
#[inline]
fn as_str<'a>(&'a self) -> Option<&'a str> {
- str::from_utf8_opt(self.as_vec())
+ str::from_utf8(self.as_vec())
}
/// Returns the path as a byte vector
/// See `dirname` for details.
#[inline]
fn dirname_str<'a>(&'a self) -> Option<&'a str> {
- str::from_utf8_opt(self.dirname())
+ str::from_utf8(self.dirname())
}
/// Returns the file component of `self`, as a byte vector.
/// If `self` represents the root of the file hierarchy, returns None.
/// See `filename` for details.
#[inline]
fn filename_str<'a>(&'a self) -> Option<&'a str> {
- self.filename().and_then(str::from_utf8_opt)
+ self.filename().and_then(str::from_utf8)
}
/// Returns the stem of the filename of `self`, as a byte vector.
/// The stem is the portion of the filename just before the last '.'.
/// See `filestem` for details.
#[inline]
fn filestem_str<'a>(&'a self) -> Option<&'a str> {
- self.filestem().and_then(str::from_utf8_opt)
+ self.filestem().and_then(str::from_utf8)
}
/// Returns the extension of the filename of `self`, as an optional byte vector.
/// The extension is the portion of the filename just after the last '.'.
/// See `extension` for details.
#[inline]
fn extension_str<'a>(&'a self) -> Option<&'a str> {
- self.extension().and_then(str::from_utf8_opt)
+ self.extension().and_then(str::from_utf8)
}
/// Replaces the filename portion of the path with the given byte vector or string.
/// Returns the receiver interpreted as a utf-8 string, if possible
#[inline]
fn container_as_str<'a>(&'a self) -> Option<&'a str> {
- str::from_utf8_opt(self.container_as_bytes())
+ str::from_utf8(self.container_as_bytes())
}
/// Returns whether .container_as_str() is guaranteed to not fail
// FIXME (#8888): Remove unused arg once ::<for T> works
/// Returns an iterator that yields each component of the path as Option<&str>.
/// See components() for details.
pub fn str_components<'a>(&'a self) -> StrComponents<'a> {
- self.components().map(str::from_utf8_opt)
+ self.components().map(str::from_utf8)
}
/// Returns an iterator that yields each component of the path in reverse as Option<&str>.
/// See components() for details.
pub fn rev_str_components<'a>(&'a self) -> RevStrComponents<'a> {
- self.rev_components().map(str::from_utf8_opt)
+ self.rev_components().map(str::from_utf8)
}
}
(s: $path:expr, $op:ident, $exp:expr, opt) => (
{
let path = Path::new($path);
- let left = path.$op().map(|x| str::from_utf8(x));
+ let left = path.$op().map(|x| str::from_utf8(x).unwrap());
assert_eq!(left, $exp);
}
);
/// Once the slice has been validated as utf-8, it is transmuted in-place and
/// returned as a '&str' instead of a '&[u8]'
///
-/// # Failure
-///
-/// Fails if invalid UTF-8
-pub fn from_utf8<'a>(v: &'a [u8]) -> &'a str {
- from_utf8_opt(v).expect("from_utf8: not utf-8")
-}
-
-/// Converts a vector to a string slice without performing any allocations.
-///
/// Returns None if the slice is not utf-8.
-pub fn from_utf8_opt<'a>(v: &'a [u8]) -> Option<&'a str> {
+pub fn from_utf8<'a>(v: &'a [u8]) -> Option<&'a str> {
if is_utf8(v) {
Some(unsafe { raw::from_utf8(v) })
} else { None }
let s1: ~str = ~"All mimsy were the borogoves";
let v: ~[u8] = s1.as_bytes().to_owned();
- let s2: ~str = from_utf8(v).to_owned();
+ let s2: ~str = from_utf8(v).unwrap().to_owned();
let mut i: uint = 0u;
let n1: uint = s1.len();
let n2: uint = v.len();
#[test]
fn test_str_from_utf8() {
let xs = bytes!("hello");
- assert_eq!(from_utf8(xs), "hello");
-
- let xs = bytes!("ศไทย中华Việt Nam");
- assert_eq!(from_utf8(xs), "ศไทย中华Việt Nam");
- }
-
- #[test]
- #[should_fail]
- fn test_str_from_utf8_invalid() {
- let xs = bytes!("hello", 0xff);
- let _ = from_utf8(xs);
- }
-
- #[test]
- fn test_str_from_utf8_opt() {
- let xs = bytes!("hello");
- assert_eq!(from_utf8_opt(xs), Some("hello"));
+ assert_eq!(from_utf8(xs), Some("hello"));
let xs = bytes!("ศไทย中华Việt Nam");
- assert_eq!(from_utf8_opt(xs), Some("ศไทย中华Việt Nam"));
+ assert_eq!(from_utf8(xs), Some("ศไทย中华Việt Nam"));
let xs = bytes!("hello", 0xff);
- assert_eq!(from_utf8_opt(xs), None);
+ assert_eq!(from_utf8(xs), None);
}
#[test]
mapper_done => { num_mappers -= 1; }
find_reducer(k, cc) => {
let mut c;
- match reducers.find(&str::from_utf8(k).to_owned()) {
+ match reducers.find(&str::from_utf8(k).unwrap().to_owned()) {
Some(&_c) => { c = _c; }
None => { c = 0; }
}