Upload test logs with a UTF-8 content type (#2117)
This fixes rendering of test `.log` files when opened in a browser.
Updating the deps was required to get the project to compile due to:
```
error[E0635]: unknown feature `proc_macro_span_shrink`
--> /Users/fmeum/.cargo/registry/src/index.crates.io-6f17d22bba15001f/proc-macro2-1.0.56/src/lib.rs:92:30
|
92 | feature(proc_macro_span, proc_macro_span_shrink)
| ^^^^^^^^^^^^^^^^^^^^^^
```
Update command:
```
cargo update proc-macro2 --precise 1.0.60
```
diff --git a/agent/Cargo.lock b/agent/Cargo.lock
index 2ef353e..95717f4 100644
--- a/agent/Cargo.lock
+++ b/agent/Cargo.lock
@@ -1,6 +1,6 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
-version = 3
+version = 4
[[package]]
name = "aho-corasick"
@@ -690,9 +690,9 @@
[[package]]
name = "proc-macro2"
-version = "1.0.56"
+version = "1.0.60"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435"
+checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406"
dependencies = [
"unicode-ident",
]
diff --git a/agent/src/artifact/upload.rs b/agent/src/artifact/upload.rs
index ec774cf..3afeb10 100644
--- a/agent/src/artifact/upload.rs
+++ b/agent/src/artifact/upload.rs
@@ -210,7 +210,7 @@
build_event_json_file: &Path,
mode: Mode,
) -> Result<()> {
- uploader.upload_artifact(dry, None, build_event_json_file, mode)
+ uploader.upload_artifact(dry, None, build_event_json_file, mode, None)
}
fn gen_error_content(bazelci_task: &str, label: &str, name: &str, test_log: &str) -> String {
@@ -329,7 +329,7 @@
Ok(Some(writer.into_inner().into_inner()))
}
-fn execute_command(dry: bool, cwd: Option<&Path>, program: &str, args: &[&str]) -> Result<()> {
+fn execute_command(dry: bool, cwd: Option<&Path>, program: &str, args: &Vec<&str>) -> Result<()> {
println!("{} {}", program, args.join(" "));
if dry {
@@ -384,6 +384,7 @@
cwd: Option<&Path>,
artifact: &Path,
mode: Mode,
+ content_type: Option<&str>,
) -> Result<()> {
{
let file = match cwd {
@@ -405,7 +406,7 @@
}
match mode {
- Mode::Buildkite => self.upload_artifact_buildkite(dry, cwd, artifact),
+ Mode::Buildkite => self.upload_artifact_buildkite(dry, cwd, artifact, content_type),
}
}
@@ -414,14 +415,17 @@
dry: bool,
cwd: Option<&Path>,
artifact: &Path,
+ content_type: Option<&str>,
) -> Result<()> {
let artifact = artifact.display().to_string();
- execute_command(
- dry,
- cwd,
- "buildkite-agent",
- &["artifact", "upload", artifact.as_str()],
- )
+ let mut args = vec!["artifact", "upload", artifact.as_str()];
+ let ct_arg = content_type
+ .map(|ct| "--content_type=".to_owned() + ct)
+ .unwrap_or_default();
+ if !ct_arg.is_empty() {
+ args.push(ct_arg.as_str());
+ }
+ execute_command(dry, cwd, "buildkite-agent", &args)
}
fn upload_test_analytics(
@@ -631,7 +635,13 @@
mode: Mode,
) -> Result<()> {
let (cwd, artifact) = resolve_artifact(test_log, local_exec_root)?;
- return uploader.upload_artifact(dry, cwd.as_ref().map(|pb| pb.as_path()), &artifact, mode);
+ return uploader.upload_artifact(
+ dry,
+ cwd.as_ref().map(|pb| pb.as_path()),
+ &artifact,
+ mode,
+ Some("text/plain;encoding=utf-8"),
+ );
}
fn upload_test_xml(
diff --git a/agent/tests/artifact/upload.rs b/agent/tests/artifact/upload.rs
index 780bc16..0739032 100644
--- a/agent/tests/artifact/upload.rs
+++ b/agent/tests/artifact/upload.rs
@@ -19,7 +19,7 @@
]);
cmd.assert()
.success()
- .stdout(predicates::str::contains("buildkite-agent artifact upload src\\test\\shell\\bazel\\resource_compiler_toolchain_test\\test.log"));
+ .stdout(predicates::ord::eq("buildkite-agent artifact upload src\\test\\shell\\bazel\\resource_compiler_toolchain_test\\test.log --content_type=text/plain;encoding=utf-8\n"));
Ok(())
}
@@ -37,7 +37,7 @@
]);
cmd.assert()
.success()
- .stdout(predicates::str::contains("buildkite-agent artifact upload src/test/shell/bazel/starlark_repository_test/shard_4_of_6/test_attempts/attempt_1.log"));
+ .stdout(predicates::ord::eq("buildkite-agent artifact upload src/test/shell/bazel/starlark_repository_test/shard_4_of_6/test_attempts/attempt_1.log --content_type=text/plain;encoding=utf-8\n"));
Ok(())
}