diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2024-02-23 07:56:34 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-23 07:56:34 +0530 |
commit | f49abcc1ac3de72bf894ccfc0102d83ec19f1d46 (patch) | |
tree | 8a50b03bb1e1d2e9e8831620529ef328a5582041 /tests | |
parent | ae703041b1921affb7fa8a0aa865c6f302c72d6e (diff) |
feat(publish): respect .gitignore during `deno publish` (#22514)
Files from `.gitignore`, global git config, `.git/info/exclude` and
`deno.json`'s `exclude` are ignored.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/integration/publish_tests.rs | 67 |
1 files changed, 66 insertions, 1 deletions
diff --git a/tests/integration/publish_tests.rs b/tests/integration/publish_tests.rs index 61cb40fba..71bc838a8 100644 --- a/tests/integration/publish_tests.rs +++ b/tests/integration/publish_tests.rs @@ -216,6 +216,43 @@ itest!(config_flag { }); #[test] +fn ignores_gitignore() { + let context = publish_context_builder().build(); + let temp_dir = context.temp_dir().path(); + temp_dir.join("deno.json").write_json(&json!({ + "name": "@foo/bar", + "version": "1.0.0", + "exports": "./main.ts" + })); + + temp_dir.join("main.ts").write("import './sub_dir/b.ts';"); + + let gitignore = temp_dir.join(".gitignore"); + gitignore.write("ignored.ts\nsub_dir/ignored.wasm"); + + let sub_dir = temp_dir.join("sub_dir"); + sub_dir.create_dir_all(); + sub_dir.join("ignored.wasm").write(""); + sub_dir.join("b.ts").write("export default {}"); + + temp_dir.join("ignored.ts").write(""); + + let output = context + .new_command() + .arg("publish") + .arg("--dry-run") + .arg("--token") + .arg("sadfasdf") + .run(); + output.assert_exit_code(0); + let output = output.combined_output(); + assert_contains!(output, "b.ts"); + assert_contains!(output, "main.ts"); + assert_not_contains!(output, "ignored.ts"); + assert_not_contains!(output, "ignored.wasm"); +} + +#[test] fn ignores_directories() { let context = publish_context_builder().build(); let temp_dir = context.temp_dir().path(); @@ -261,6 +298,35 @@ fn ignores_directories() { } #[test] +fn includes_directories_with_gitignore() { + let context = publish_context_builder().build(); + let temp_dir = context.temp_dir().path(); + temp_dir.join("deno.json").write_json(&json!({ + "name": "@foo/bar", + "version": "1.0.0", + "exports": "./main.ts", + "publish": { + "include": [ "deno.json", "main.ts" ] + } + })); + + temp_dir.join(".gitignore").write("main.ts"); + temp_dir.join("main.ts").write(""); + temp_dir.join("ignored.ts").write(""); + + let output = context + .new_command() + .arg("publish") + .arg("--token") + .arg("sadfasdf") + .run(); + output.assert_exit_code(0); + let output = output.combined_output(); + assert_contains!(output, "main.ts"); + assert_not_contains!(output, "ignored.ts"); +} + +#[test] fn includes_directories() { let context = publish_context_builder().build(); let temp_dir = context.temp_dir().path(); @@ -279,7 +345,6 @@ fn includes_directories() { let output = context .new_command() .arg("publish") - .arg("--log-level=debug") .arg("--token") .arg("sadfasdf") .run(); |