Skip to content
This repository was archived by the owner on Jun 27, 2018. It is now read-only.

Commit ab5c56f

Browse files
authored
Merge pull request #254 from TimNN/versionless-irc
don't print version for playpot
2 parents 4c56a30 + 670469f commit ab5c56f

File tree

5 files changed

+54
-8
lines changed

5 files changed

+54
-8
lines changed

docker/bin/compile.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
set -o errexit
44

5-
rustc --version
5+
if [ "$RUST_PLAYPEN_ENV" != "irc" ]; then
6+
rustc --version
7+
fi
68

79
RUST_NEW_ERROR_FORMAT=1 TERM=xterm rustc - -o ./out "$@"
810
printf '\377' # 255 in octal

docker/bin/evaluate.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
set -o errexit
44

5-
rustc --version
5+
if [ "$RUST_PLAYPEN_ENV" != "irc" ]; then
6+
rustc --version
7+
fi
68

79
RUST_NEW_ERROR_FORMAT=1 TERM=xterm rustc - -o ./out "$@"
810
printf '\377' # 255 in octal

src/bin/playbot.rs

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,18 @@ use std::process;
1818

1919
use hyper::client::Client;
2020
use irc::client::prelude::*;
21-
use rust_playpen::{ReleaseChannel, Cache};
21+
use rust_playpen::{ReleaseChannel, Cache, PLAYPEN_ENV_VAR_NAME};
2222
use rustc_serialize::json;
2323
use url::form_urlencoded;
2424

2525
static DEFAULT_CHANNEL: ReleaseChannel = ReleaseChannel::Stable;
2626

27+
const ENV: &'static str = "irc";
28+
29+
fn base_env() -> Vec<(String, String)> {
30+
vec![(PLAYPEN_ENV_VAR_NAME.into(), ENV.into())]
31+
}
32+
2733
fn get_rust_versions(cache: &Cache) -> Vec<String> {
2834
let mut versions = Vec::new();
2935
// Note: Keep these in the same order as their discriminant values
@@ -33,7 +39,7 @@ fn get_rust_versions(cache: &Cache) -> Vec<String> {
3339
let (status, output) = cache.exec(*channel,
3440
"rustc",
3541
vec![String::from("-V")],
36-
vec![],
42+
base_env(),
3743
String::new()).unwrap();
3844
assert!(status.success(), "couldn't get version (this currently needs to run as root)");
3945
let version = str::from_utf8(&output).unwrap();
@@ -85,7 +91,7 @@ impl Playbot {
8591
let (_status, output) = try!(self.cache.exec(channel,
8692
"/usr/local/bin/evaluate.sh",
8793
Vec::new(),
88-
Vec::new(),
94+
base_env(),
8995
String::from(full_code)));
9096

9197
let output_merged = output.splitn(2, |b| *b == b'\xff')
@@ -297,3 +303,17 @@ fn main() {
297303
thread.join().unwrap();
298304
}
299305
}
306+
307+
#[test]
308+
fn irc_no_version() {
309+
drop(env_logger::init());
310+
311+
let cache = Cache::new();
312+
let input = r#"fn main() {}"#;
313+
314+
let (status, out) = cache.exec(ReleaseChannel::Stable, "/usr/local/bin/evaluate.sh",
315+
vec![], base_env(), input.into()).unwrap();
316+
317+
assert!(status.success());
318+
assert_eq!(&out, b"\xFF"); // 0xFF is a separator produced by evaluate.sh
319+
}

src/bin/playpen.rs

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ use rustc_serialize::json;
2929
use staticfile::Static;
3030
use unicase::UniCase;
3131

32+
const ENV: &'static str = "web";
33+
34+
fn base_env() -> Vec<(String, String)> {
35+
vec![(PLAYPEN_ENV_VAR_NAME.into(), ENV.into())]
36+
}
37+
3238
#[derive(Clone, Debug)]
3339
struct XXssProtection(bool);
3440

@@ -104,7 +110,7 @@ fn evaluate(req: &mut Request) -> IronResult<Response> {
104110
args.push(String::from("--test"));
105111
}
106112

107-
let mut env = vec![];
113+
let mut env = base_env();
108114
if backtrace.is_requested(opt == OptLevel::O0) {
109115
env.push(("RUST_BACKTRACE".into(), "1".into()));
110116
}
@@ -180,7 +186,7 @@ fn compile(req: &mut Request) -> IronResult<Response> {
180186
args.push(String::from("--color=always"));
181187
}
182188

183-
let mut env = vec![];
189+
let mut env = base_env();
184190
if backtrace.is_requested(opt == OptLevel::O0) {
185191
env.push(("RUST_BACKTRACE".into(), "1".into()));
186192
}
@@ -225,7 +231,7 @@ fn format(req: &mut Request) -> IronResult<Response> {
225231
let version = itry!(data.version.map(|v| v.parse()).unwrap_or(Ok(ReleaseChannel::Stable)));
226232
let backtrace = itry!(data.backtrace.map(|b| b.parse()).unwrap_or(Ok(Backtrace::Auto)));
227233

228-
let mut env = vec![];
234+
let mut env = base_env();
229235
if backtrace == Backtrace::Always {
230236
env.push(("RUST_BACKTRACE".into(), "1".into()));
231237
}
@@ -298,3 +304,17 @@ fn main() {
298304
println!("listening on {:?}", addr);
299305
Iron::new(chain).http(addr).unwrap();
300306
}
307+
308+
#[test]
309+
fn web_has_version() {
310+
drop(env_logger::init());
311+
312+
let cache = Cache::new();
313+
let input = r#"fn main() {}"#;
314+
315+
let (status, out) = cache.exec(ReleaseChannel::Stable, "/usr/local/bin/evaluate.sh",
316+
vec![], base_env(), input.into()).unwrap();
317+
318+
assert!(status.success());
319+
assert!(String::from_utf8_lossy(&out).contains("rustc "));
320+
}

src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ use docker::Container;
1919

2020
mod docker;
2121

22+
pub const PLAYPEN_ENV_VAR_NAME: &'static str = "RUST_PLAYPEN_ENV";
23+
2224
/// Error type holding a description
2325
pub struct StringError(pub String);
2426

0 commit comments

Comments
 (0)