imports.rs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. // SPDX-License-Identifier: Apache-2.0
  2. use assert_cmd::Command;
  3. #[test]
  4. fn import_map_dup() {
  5. let mut cmd = Command::cargo_bin("solang").unwrap();
  6. let dup = cmd
  7. .args([
  8. "compile",
  9. "--target",
  10. "solana",
  11. "--importmap",
  12. "foo=tests",
  13. "--importmap",
  14. "foo=tests",
  15. "foo.sol",
  16. ])
  17. .env("exit", "1")
  18. .assert();
  19. let output = dup.get_output();
  20. let stderr = String::from_utf8_lossy(&output.stderr);
  21. println!("stderr: {}", stderr);
  22. assert_eq!(
  23. stderr,
  24. "error: import path 'tests': duplicate mapping for 'foo'\n"
  25. );
  26. }
  27. #[test]
  28. fn import_map_badpath() {
  29. let mut cmd = Command::cargo_bin("solang").unwrap();
  30. let badpath = cmd
  31. .args([
  32. "compile",
  33. "--target",
  34. "solana",
  35. "--importmap",
  36. "foo=/does/not/exist",
  37. "bar.sol",
  38. ])
  39. .env("exit", "1")
  40. .assert();
  41. let output = badpath.get_output();
  42. let stderr = String::from_utf8_lossy(&output.stderr);
  43. println!("stderr: {}", stderr);
  44. assert!(stderr.contains("error: import path '/does/not/exist': "));
  45. }
  46. #[test]
  47. fn import_map() {
  48. let mut cmd = Command::cargo_bin("solang").unwrap();
  49. let assert = cmd
  50. .args([
  51. "compile",
  52. "--target",
  53. "solana",
  54. "--importmap",
  55. "foo=imports/",
  56. "import_map.sol",
  57. ])
  58. .current_dir("tests/imports_testcases")
  59. .assert();
  60. let output = assert.get_output();
  61. assert_eq!(String::from_utf8_lossy(&output.stderr), "");
  62. let mut cmd = Command::cargo_bin("solang").unwrap();
  63. let badpath = cmd
  64. .args(["compile", "import_map.sol", "--target", "solana"])
  65. .current_dir("tests/imports_testcases")
  66. .assert();
  67. let output = badpath.get_output();
  68. let stderr = String::from_utf8_lossy(&output.stderr);
  69. println!("stderr: {}", stderr);
  70. assert!(stderr.contains("file not found 'foo/bar.sol'"));
  71. }
  72. #[test]
  73. fn import() {
  74. let mut cmd = Command::cargo_bin("solang").unwrap();
  75. let assert = cmd
  76. .args([
  77. "compile",
  78. "--target",
  79. "solana",
  80. "--importpath",
  81. "./imports_testcases/imports",
  82. "imports_testcases/import.sol",
  83. ])
  84. .current_dir("tests")
  85. .assert();
  86. let output = assert.get_output();
  87. assert_eq!(String::from_utf8_lossy(&output.stderr), "");
  88. let mut cmd = Command::cargo_bin("solang").unwrap();
  89. let badpath = cmd
  90. .args(["compile", "--target", "solana", "import.sol"])
  91. .current_dir("tests/imports_testcases")
  92. .assert();
  93. let output = badpath.get_output();
  94. let stderr = String::from_utf8_lossy(&output.stderr);
  95. println!("stderr: {}", stderr);
  96. assert!(stderr.contains("file not found 'bar.sol'"));
  97. }