Make it easier to detect when bootstrap tries to read uncaptured stdo… · rust-lang/rust@1984a46 (original) (raw)

`@@ -223,17 +223,31 @@ pub fn command<S: AsRef>(program: S) -> BootstrapCommand {

`

223

223

`}

`

224

224

``

225

225

`/// Represents the output of an executed process.

`

226

``

`-

#[allow(unused)]

`

227

226

`pub struct CommandOutput {

`

228

227

`status: CommandStatus,

`

229

``

`-

stdout: Vec,

`

230

``

`-

stderr: Vec,

`

``

228

`+

stdout: Option<Vec>,

`

``

229

`+

stderr: Option<Vec>,

`

231

230

`}

`

232

231

``

233

232

`impl CommandOutput {

`

234

233

`#[must_use]

`

235

234

`pub fn did_not_start() -> Self {

`

236

``

`-

Self { status: CommandStatus::DidNotStart, stdout: vec![], stderr: vec![] }

`

``

235

`+

Self { status: CommandStatus::DidNotStart, stdout: None, stderr: None }

`

``

236

`+

}

`

``

237

+

``

238

`+

#[must_use]

`

``

239

`+

pub fn from_output(output: Output, stdout: OutputMode, stderr: OutputMode) -> Self {

`

``

240

`+

Self {

`

``

241

`+

status: CommandStatus::Finished(output.status),

`

``

242

`+

stdout: match stdout {

`

``

243

`+

OutputMode::Print => None,

`

``

244

`+

OutputMode::Capture => Some(output.stdout),

`

``

245

`+

},

`

``

246

`+

stderr: match stderr {

`

``

247

`+

OutputMode::Print => None,

`

``

248

`+

OutputMode::Capture => Some(output.stderr),

`

``

249

`+

},

`

``

250

`+

}

`

237

251

`}

`

238

252

``

239

253

`#[must_use]

`

`@@ -259,7 +273,10 @@ impl CommandOutput {

`

259

273

``

260

274

`#[must_use]

`

261

275

`pub fn stdout(&self) -> String {

`

262

``

`-

String::from_utf8(self.stdout.clone()).expect("Cannot parse process stdout as UTF-8")

`

``

276

`+

String::from_utf8(

`

``

277

`+

self.stdout.clone().expect("Accessing stdout of a command that did not capture stdout"),

`

``

278

`+

)

`

``

279

`+

.expect("Cannot parse process stdout as UTF-8")

`

263

280

`}

`

264

281

``

265

282

`#[must_use]

`

`@@ -269,26 +286,19 @@ impl CommandOutput {

`

269

286

``

270

287

`#[must_use]

`

271

288

`pub fn stderr(&self) -> String {

`

272

``

`-

String::from_utf8(self.stderr.clone()).expect("Cannot parse process stderr as UTF-8")

`

``

289

`+

String::from_utf8(

`

``

290

`+

self.stderr.clone().expect("Accessing stderr of a command that did not capture stderr"),

`

``

291

`+

)

`

``

292

`+

.expect("Cannot parse process stderr as UTF-8")

`

273

293

`}

`

274

294

`}

`

275

295

``

276

296

`impl Default for CommandOutput {

`

277

297

`fn default() -> Self {

`

278

298

`Self {

`

279

299

`status: CommandStatus::Finished(ExitStatus::default()),

`

280

``

`-

stdout: vec![],

`

281

``

`-

stderr: vec![],

`

282

``

`-

}

`

283

``

`-

}

`

284

``

`-

}

`

285

``

-

286

``

`-

impl From for CommandOutput {

`

287

``

`-

fn from(output: Output) -> Self {

`

288

``

`-

Self {

`

289

``

`-

status: CommandStatus::Finished(output.status),

`

290

``

`-

stdout: output.stdout,

`

291

``

`-

stderr: output.stderr,

`

``

300

`+

stdout: Some(vec![]),

`

``

301

`+

stderr: Some(vec![]),

`

292

302

`}

`

293

303

`}

`

294

304

`}

`