/tests/test_cargo_profiles.rs

https://gitlab.com/alx741/cargo · Rust · 107 lines · 103 code · 4 blank · 0 comment · 0 complexity · 8777c717d6249e767b906c5251662659 MD5 · raw file

  1. use std::env;
  2. use std::path::MAIN_SEPARATOR as SEP;
  3. use support::{project, execs};
  4. use hamcrest::assert_that;
  5. fn setup() {
  6. }
  7. test!(profile_overrides {
  8. let mut p = project("foo");
  9. p = p
  10. .file("Cargo.toml", r#"
  11. [package]
  12. name = "test"
  13. version = "0.0.0"
  14. authors = []
  15. [profile.dev]
  16. opt-level = 1
  17. debug = false
  18. rpath = true
  19. "#)
  20. .file("src/lib.rs", "");
  21. assert_that(p.cargo_process("build").arg("-v"),
  22. execs().with_status(0).with_stdout(&format!("\
  23. [COMPILING] test v0.0.0 ({url})
  24. [RUNNING] `rustc src{sep}lib.rs --crate-name test --crate-type lib \
  25. -C opt-level=1 \
  26. -C debug-assertions=on \
  27. -C rpath \
  28. --out-dir {dir}{sep}target{sep}debug \
  29. --emit=dep-info,link \
  30. -L dependency={dir}{sep}target{sep}debug \
  31. -L dependency={dir}{sep}target{sep}debug{sep}deps`
  32. ", sep = SEP,
  33. dir = p.root().display(),
  34. url = p.url(),
  35. )));
  36. });
  37. test!(top_level_overrides_deps {
  38. let mut p = project("foo");
  39. p = p
  40. .file("Cargo.toml", r#"
  41. [package]
  42. name = "test"
  43. version = "0.0.0"
  44. authors = []
  45. [profile.release]
  46. opt-level = 1
  47. debug = true
  48. [dependencies.foo]
  49. path = "foo"
  50. "#)
  51. .file("src/lib.rs", "")
  52. .file("foo/Cargo.toml", r#"
  53. [package]
  54. name = "foo"
  55. version = "0.0.0"
  56. authors = []
  57. [profile.release]
  58. opt-level = 0
  59. debug = false
  60. [lib]
  61. name = "foo"
  62. crate_type = ["dylib", "rlib"]
  63. "#)
  64. .file("foo/src/lib.rs", "");
  65. assert_that(p.cargo_process("build").arg("-v").arg("--release"),
  66. execs().with_status(0).with_stdout(&format!("\
  67. [COMPILING] foo v0.0.0 ({url}/foo)
  68. [RUNNING] `rustc foo{sep}src{sep}lib.rs --crate-name foo \
  69. --crate-type dylib --crate-type rlib -C prefer-dynamic \
  70. -C opt-level=1 \
  71. -g \
  72. -C metadata=[..] \
  73. -C extra-filename=-[..] \
  74. --out-dir {dir}{sep}target{sep}release{sep}deps \
  75. --emit=dep-info,link \
  76. -L dependency={dir}{sep}target{sep}release{sep}deps \
  77. -L dependency={dir}{sep}target{sep}release{sep}deps`
  78. [COMPILING] test v0.0.0 ({url})
  79. [RUNNING] `rustc src{sep}lib.rs --crate-name test --crate-type lib \
  80. -C opt-level=1 \
  81. -g \
  82. --out-dir {dir}{sep}target{sep}release \
  83. --emit=dep-info,link \
  84. -L dependency={dir}{sep}target{sep}release \
  85. -L dependency={dir}{sep}target{sep}release{sep}deps \
  86. --extern foo={dir}{sep}target{sep}release{sep}deps{sep}\
  87. {prefix}foo-[..]{suffix} \
  88. --extern foo={dir}{sep}target{sep}release{sep}deps{sep}libfoo-[..].rlib`
  89. ",
  90. dir = p.root().display(),
  91. url = p.url(),
  92. sep = SEP,
  93. prefix = env::consts::DLL_PREFIX,
  94. suffix = env::consts::DLL_SUFFIX)));
  95. });