Skip to content

Commit c9c8d6f

Browse files
committed
Merge pull request #4563 from cpeterso/fix-doc-tests
Fix various doc tests
2 parents 885f0a2 + b3cbe9e commit c9c8d6f

File tree

5 files changed

+52
-28
lines changed

5 files changed

+52
-28
lines changed

doc/rust.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -594,16 +594,16 @@ and may optionally begin with any number of `attributes` that apply to the conta
594594
Atributes on the anonymous crate module define important metadata that influences
595595
the behavior of the compiler.
596596

597-
~~~~~~~~{.xfail-test}
597+
~~~~~~~~
598598
// Linkage attributes
599-
#[ link(name = "projx"
599+
#[ link(name = "projx",
600600
vers = "2.5",
601601
uuid = "9cccc5d5-aceb-4af5-8285-811211826b82") ];
602602
603603
// Additional metadata attributes
604-
#[ desc = "Project X",
605-
license = "BSD" ];
606-
author = "Jane Doe" ];
604+
#[ desc = "Project X" ];
605+
#[ license = "BSD" ];
606+
#[ author = "Jane Doe" ];
607607
608608
// Specify the output type
609609
#[ crate_type = "lib" ];

doc/tutorial-ffi.md

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ argument, which it then converts to a hexadecimal string and prints to
1212
standard output. If you have the OpenSSL libraries installed, it
1313
should compile and run without any extra effort.
1414

15-
~~~~ {.xfail-test}
15+
~~~~
1616
extern mod std;
17-
use libc::c_uint;
17+
use libc::size_t;
1818
1919
extern mod crypto {
20-
fn SHA1(src: *u8, sz: c_uint, out: *u8) -> *u8;
20+
fn SHA1(src: *u8, sz: size_t, out: *u8) -> *u8;
2121
}
2222
2323
fn as_hex(data: ~[u8]) -> ~str {
@@ -29,7 +29,7 @@ fn as_hex(data: ~[u8]) -> ~str {
2929
fn sha1(data: ~str) -> ~str unsafe {
3030
let bytes = str::to_bytes(data);
3131
let hash = crypto::SHA1(vec::raw::to_ptr(bytes),
32-
vec::len(bytes) as c_uint, ptr::null());
32+
vec::len(bytes) as size_t, ptr::null());
3333
return as_hex(vec::from_buf(hash, 20));
3434
}
3535
@@ -43,9 +43,11 @@ fn main() {
4343
Before we can call the `SHA1` function defined in the OpenSSL library, we have
4444
to declare it. That is what this part of the program does:
4545

46-
~~~~ {.xfail-test}
46+
~~~~
47+
# use libc::size_t;
4748
extern mod crypto {
48-
fn SHA1(src: *u8, sz: uint, out: *u8) -> *u8; }
49+
fn SHA1(src: *u8, sz: size_t, out: *u8) -> *u8;
50+
}
4951
~~~~
5052

5153
An `extern` module declaration containing function signatures introduces the
@@ -62,10 +64,11 @@ searches for the shared library with that name, and links the library into the
6264
program. If you want the module to have a different name from the actual
6365
library, you can use the `"link_name"` attribute, like:
6466

65-
~~~~ {.xfail-test}
67+
~~~~
68+
# use libc::size_t;
6669
#[link_name = "crypto"]
6770
extern mod something {
68-
fn SHA1(src: *u8, sz: uint, out: *u8) -> *u8;
71+
fn SHA1(src: *u8, sz: size_t, out: *u8) -> *u8;
6972
}
7073
~~~~
7174

@@ -94,9 +97,10 @@ calling conventions.
9497

9598
The foreign `SHA1` function takes three arguments, and returns a pointer.
9699

97-
~~~~ {.xfail-test}
100+
~~~~
101+
# use libc::size_t;
98102
# extern mod crypto {
99-
fn SHA1(src: *u8, sz: libc::c_uint, out: *u8) -> *u8;
103+
fn SHA1(src: *u8, sz: size_t, out: *u8) -> *u8;
100104
# }
101105
~~~~
102106

@@ -108,8 +112,8 @@ probably even worse, your code will work on one platform, but break on
108112
another.
109113

110114
In this case, we declare that `SHA1` takes two `unsigned char*`
111-
arguments and one `unsigned long`. The Rust equivalents are `*u8`
112-
unsafe pointers and an `uint` (which, like `unsigned long`, is a
115+
arguments and one `size_t`. The Rust equivalents are `*u8`
116+
unsafe pointers and an `libc::size_t` (which, like `unsigned long`, is a
113117
machine-word-sized type).
114118

115119
The standard library provides various functions to create unsafe pointers,
@@ -124,14 +128,16 @@ The `sha1` function is the most obscure part of the program.
124128

125129
~~~~
126130
# pub mod crypto {
127-
# pub fn SHA1(src: *u8, sz: uint, out: *u8) -> *u8 { out }
131+
# use libc::size_t;
132+
# pub fn SHA1(src: *u8, sz: size_t, out: *u8) -> *u8 { out }
128133
# }
134+
# use libc::size_t;
129135
# fn as_hex(data: ~[u8]) -> ~str { ~"hi" }
130136
fn sha1(data: ~str) -> ~str {
131137
unsafe {
132138
let bytes = str::to_bytes(data);
133139
let hash = crypto::SHA1(vec::raw::to_ptr(bytes),
134-
vec::len(bytes), ptr::null());
140+
vec::len(bytes) as size_t, ptr::null());
135141
return as_hex(vec::from_buf(hash, 20));
136142
}
137143
}
@@ -169,14 +175,16 @@ Let's look at our `sha1` function again.
169175

170176
~~~~
171177
# pub mod crypto {
172-
# pub fn SHA1(src: *u8, sz: uint, out: *u8) -> *u8 { out }
178+
# use libc::size_t;
179+
# pub fn SHA1(src: *u8, sz: size_t, out: *u8) -> *u8 { out }
173180
# }
181+
# use libc::size_t;
174182
# fn as_hex(data: ~[u8]) -> ~str { ~"hi" }
175183
# fn x(data: ~str) -> ~str {
176184
# unsafe {
177185
let bytes = str::to_bytes(data);
178186
let hash = crypto::SHA1(vec::raw::to_ptr(bytes),
179-
vec::len(bytes), ptr::null());
187+
vec::len(bytes) as size_t, ptr::null());
180188
return as_hex(vec::from_buf(hash, 20));
181189
# }
182190
# }

doc/tutorial-tasks.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ let result = port.recv();
220220
The `Port` and `Chan` pair created by `stream` enables efficient communication
221221
between a single sender and a single receiver, but multiple senders cannot use
222222
a single `Chan`, and multiple receivers cannot use a single `Port`. What if our
223-
example needed to computer multiple results across a number of tasks? The
223+
example needed to compute multiple results across a number of tasks? The
224224
following program is ill-typed:
225225

226226
~~~ {.xfail-test}

doc/tutorial.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2393,7 +2393,7 @@ override the name used to search for the crate.
23932393

23942394
Our example crate declared this set of `link` attributes:
23952395

2396-
~~~~ {.xfail-test}
2396+
~~~~
23972397
#[link(name = "farm", vers = "2.5", author = "mjh")];
23982398
~~~~
23992399

src/etc/extract-tests.py

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
# Script for extracting compilable fragments from markdown
44
# documentation. See prep.js for a description of the format
5-
# recognized by this tool. Expects a directory fragements/ to exist
5+
# recognized by this tool. Expects a directory fragments/ to exist
66
# under the current directory, and writes the fragments in there as
77
# individual .rs files.
88

9-
import sys, re;
9+
import sys, re
1010

1111
if len(sys.argv) < 3:
1212
print("Please provide an input filename")
@@ -26,7 +26,7 @@
2626
while cur < len(lines):
2727
line = lines[cur]
2828
cur += 1
29-
chap = re.match("# (.*)", line);
29+
chap = re.match("# (.*)", line)
3030
if chap:
3131
chapter = re.sub(r"\W", "_", chap.group(1)).lower()
3232
chapter_n = 1
@@ -51,14 +51,30 @@
5151
else:
5252
# Lines beginning with '# ' are turned into valid code
5353
line = re.sub("^# ", "", line)
54-
# Allow elipses in code snippets
54+
# Allow ellipses in code snippets
5555
line = re.sub("\.\.\.", "", line)
5656
block += line
5757
if not ignore:
5858
if not re.search(r"\bfn main\b", block):
5959
block = "fn main() {\n" + block + "\n}\n"
6060
if not re.search(r"\bextern mod std\b", block):
61-
block = "extern mod std;\n" + block;
61+
block = "extern mod std;\n" + block
62+
block = """#[ forbid(ctypes) ];
63+
#[ forbid(deprecated_mode) ];
64+
#[ forbid(deprecated_pattern) ];
65+
#[ forbid(implicit_copies) ];
66+
#[ forbid(non_implicitly_copyable_typarams) ];
67+
#[ forbid(path_statement) ];
68+
#[ forbid(type_limits) ];
69+
#[ forbid(unrecognized_lint) ];
70+
#[ forbid(unused_imports) ];
71+
#[ forbid(vecs_implicitly_copyable) ];
72+
#[ forbid(while_true) ];
73+
74+
#[ warn(deprecated_self) ];
75+
#[ warn(non_camel_case_types) ];
76+
#[ warn(structural_records) ];\n
77+
""" + block
6278
if xfail:
6379
block = "// xfail-test\n" + block
6480
filename = (dest + "/" + str(chapter)

0 commit comments

Comments
 (0)