diff --git a/crate2nix/Cargo.nix b/crate2nix/Cargo.nix index c848dcdd..dd07ebd4 100644 --- a/crate2nix/Cargo.nix +++ b/crate2nix/Cargo.nix @@ -3284,7 +3284,10 @@ rec { let drv = testCrate.override (_: { buildTests = true; - }); + } // (lib.optionalAttrs (testCrate ? testedCrate) { + # if nixpkgs is recent enough to support testedCrate, provide it + testedCrate = testCrate; + })); # If the user hasn't set any pre/post commands, we don't want to # insert empty lines. This means that any existing users of crate2nix # don't get a spurious rebuild unless they set these explicitly. diff --git a/crate2nix/templates/nix/crate2nix/default.nix b/crate2nix/templates/nix/crate2nix/default.nix index 5b810733..c1b7f328 100644 --- a/crate2nix/templates/nix/crate2nix/default.nix +++ b/crate2nix/templates/nix/crate2nix/default.nix @@ -155,7 +155,10 @@ rec { let drv = testCrate.override (_: { buildTests = true; - }); + } // (lib.optionalAttrs (testCrate ? testedCrate) { + # if nixpkgs is recent enough to support testedCrate, provide it + testedCrate = testCrate; + })); # If the user hasn't set any pre/post commands, we don't want to # insert empty lines. This means that any existing users of crate2nix # don't get a spurious rebuild unless they set these explicitly. diff --git a/sample_projects/bin_with_git_submodule_dep/Cargo.nix b/sample_projects/bin_with_git_submodule_dep/Cargo.nix index fad04a12..931ed1e8 100644 --- a/sample_projects/bin_with_git_submodule_dep/Cargo.nix +++ b/sample_projects/bin_with_git_submodule_dep/Cargo.nix @@ -1502,7 +1502,10 @@ rec { let drv = testCrate.override (_: { buildTests = true; - }); + } // (lib.optionalAttrs (testCrate ? testedCrate) { + # if nixpkgs is recent enough to support testedCrate, provide it + testedCrate = testCrate; + })); # If the user hasn't set any pre/post commands, we don't want to # insert empty lines. This means that any existing users of crate2nix # don't get a spurious rebuild unless they set these explicitly. diff --git a/sample_projects/codegen/Cargo.nix b/sample_projects/codegen/Cargo.nix index b25e3f07..69f037f4 100644 --- a/sample_projects/codegen/Cargo.nix +++ b/sample_projects/codegen/Cargo.nix @@ -677,7 +677,10 @@ rec { let drv = testCrate.override (_: { buildTests = true; - }); + } // (lib.optionalAttrs (testCrate ? testedCrate) { + # if nixpkgs is recent enough to support testedCrate, provide it + testedCrate = testCrate; + })); # If the user hasn't set any pre/post commands, we don't want to # insert empty lines. This means that any existing users of crate2nix # don't get a spurious rebuild unless they set these explicitly. diff --git a/sample_projects/future_util_multi_version/result b/sample_projects/future_util_multi_version/result deleted file mode 120000 index 461ee4d9..00000000 --- a/sample_projects/future_util_multi_version/result +++ /dev/null @@ -1 +0,0 @@ -/nix/store/99x50q7l9a3zih8ak94ka8j34rjl0fag-rust_future_util_multi_version-0.1.0 \ No newline at end of file diff --git a/sample_projects/integration_test_with_envvar/Cargo.lock b/sample_projects/integration_test_with_envvar/Cargo.lock new file mode 100644 index 00000000..7d751d1a --- /dev/null +++ b/sample_projects/integration_test_with_envvar/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "integration_test_with_envvar" +version = "0.1.0" diff --git a/sample_projects/integration_test_with_envvar/Cargo.toml b/sample_projects/integration_test_with_envvar/Cargo.toml new file mode 100644 index 00000000..1500c2b1 --- /dev/null +++ b/sample_projects/integration_test_with_envvar/Cargo.toml @@ -0,0 +1,5 @@ +[package] +name = "integration_test_with_envvar" +version = "0.1.0" + +[dependencies] diff --git a/sample_projects/integration_test_with_envvar/src/bin/exe-with-dash.rs b/sample_projects/integration_test_with_envvar/src/bin/exe-with-dash.rs new file mode 100644 index 00000000..b3eb99d3 --- /dev/null +++ b/sample_projects/integration_test_with_envvar/src/bin/exe-with-dash.rs @@ -0,0 +1,3 @@ +fn main() { + println!("exe-with-dash.rs"); +} diff --git a/sample_projects/integration_test_with_envvar/src/bin/exe.rs b/sample_projects/integration_test_with_envvar/src/bin/exe.rs new file mode 100644 index 00000000..8df69cee --- /dev/null +++ b/sample_projects/integration_test_with_envvar/src/bin/exe.rs @@ -0,0 +1,3 @@ +fn main() { + println!("exe.rs"); +} diff --git a/sample_projects/integration_test_with_envvar/src/main.rs b/sample_projects/integration_test_with_envvar/src/main.rs new file mode 100644 index 00000000..830a1658 --- /dev/null +++ b/sample_projects/integration_test_with_envvar/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("main.rs"); +} diff --git a/sample_projects/integration_test_with_envvar/test.nix b/sample_projects/integration_test_with_envvar/test.nix new file mode 100644 index 00000000..580ae503 --- /dev/null +++ b/sample_projects/integration_test_with_envvar/test.nix @@ -0,0 +1,9 @@ +{ pkgs ? import ../../nix/nixpkgs.nix { config = { }; } +, generatedCargoNix ? ./Cargo.nix { } +}: +let + instantiatedBuild = pkgs.callPackage generatedCargoNix { }; +in +instantiatedBuild.rootCrate.build.override { + runTests = true; +} diff --git a/sample_projects/integration_test_with_envvar/tests/foo.rs b/sample_projects/integration_test_with_envvar/tests/foo.rs new file mode 100644 index 00000000..752ca020 --- /dev/null +++ b/sample_projects/integration_test_with_envvar/tests/foo.rs @@ -0,0 +1,15 @@ +#[test] +fn test_main() { + let mut cmd = std::process::Command::new(env!("CARGO_BIN_EXE_integration_test_with_envvar")); + assert_eq!(&cmd.output().unwrap().stdout, b"main.rs\n"); +} +#[test] +fn test_exe() { + let mut cmd = std::process::Command::new(env!("CARGO_BIN_EXE_exe")); + assert_eq!(&cmd.output().unwrap().stdout, b"exe.rs\n"); +} +#[test] +fn test_exe2() { + let mut cmd = std::process::Command::new(env!("CARGO_BIN_EXE_exe-with-dash")); + assert_eq!(&cmd.output().unwrap().stdout, b"exe-with-dash.rs\n"); +} diff --git a/sample_projects/renamed_build_deps/result b/sample_projects/renamed_build_deps/result deleted file mode 120000 index 78537b0d..00000000 --- a/sample_projects/renamed_build_deps/result +++ /dev/null @@ -1 +0,0 @@ -/nix/store/8lminniz3aj2dqxzx7hwfv2v0hzf3gqy-rust_rename_conflict-0.1.0 \ No newline at end of file diff --git a/sample_projects/sub_dir_crates/Cargo.nix b/sample_projects/sub_dir_crates/Cargo.nix index 52aaa247..d023d7e6 100644 --- a/sample_projects/sub_dir_crates/Cargo.nix +++ b/sample_projects/sub_dir_crates/Cargo.nix @@ -286,7 +286,10 @@ rec { let drv = testCrate.override (_: { buildTests = true; - }); + } // (lib.optionalAttrs (testCrate ? testedCrate) { + # if nixpkgs is recent enough to support testedCrate, provide it + testedCrate = testCrate; + })); # If the user hasn't set any pre/post commands, we don't want to # insert empty lines. This means that any existing users of crate2nix # don't get a spurious rebuild unless they set these explicitly. diff --git a/sample_projects/with_problematic_crates/Cargo.lock b/sample_projects/with_problematic_crates/Cargo.lock index d4fb4743..34bbcbc8 100644 --- a/sample_projects/with_problematic_crates/Cargo.lock +++ b/sample_projects/with_problematic_crates/Cargo.lock @@ -1214,6 +1214,12 @@ dependencies = [ "libc", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-traits" version = "0.2.17" @@ -1831,12 +1837,13 @@ dependencies = [ [[package]] name = "time" -version = "0.3.31" +version = "0.3.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e" +checksum = "ef89ece63debf11bc32d1ed8d078ac870cbeb44da02afb02a9ff135ae7ca0582" dependencies = [ "deranged", "itoa", + "num-conv", "powerfmt", "serde", "time-core", @@ -1851,10 +1858,11 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ + "num-conv", "time-core", ] diff --git a/tests.nix b/tests.nix index b244714b..ef90e94a 100644 --- a/tests.nix +++ b/tests.nix @@ -377,6 +377,20 @@ let ]; } + { + name = "integration_test_with_envvar"; + src = ./sample_projects/integration_test_with_envvar; + cargoToml = "Cargo.toml"; + customBuild = "sample_projects/integration_test_with_envvar/test.nix"; + expectedOutput = "main.rs"; + expectedTestOutputs = [ + "test test_exe ... ok" + "test test_exe2 ... ok" + "test test_main ... ok" + + ]; + } + { name = "cross_compile_build_dependencies"; src = ./sample_projects/cross_compile_build_dependencies;