mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 18:38:55 +00:00
53 lines
1.7 KiB
TypeScript
53 lines
1.7 KiB
TypeScript
import { $ } from "bun";
|
|
import { describe, expect } from "bun:test";
|
|
import { join } from "path";
|
|
import { createTestBuilder } from "../test_builder";
|
|
import { sortedShellOutput } from "../util";
|
|
const TestBuilder = createTestBuilder(import.meta.path);
|
|
|
|
$.nothrow();
|
|
|
|
describe("mv", async () => {
|
|
TestBuilder.command`echo foo > a; mv a b`.ensureTempDir().fileEquals("b", "foo\n").runAsTest("move file -> file");
|
|
|
|
TestBuilder.command`touch a; mkdir foo; mv a foo; ls foo`
|
|
.ensureTempDir()
|
|
.stdout("a\n")
|
|
.doesNotExist("a")
|
|
.runAsTest("move single file into a directory");
|
|
|
|
TestBuilder.command`mkdir d; mv a b c d/; ls d/`
|
|
.stdout(str => expect(sortedShellOutput(str)).toEqual(["a", "b", "c"]))
|
|
.ensureTempDir()
|
|
.file("a", "file")
|
|
.file("b", "file")
|
|
.file("c", "file")
|
|
.doesNotExist("a")
|
|
.doesNotExist("b")
|
|
.doesNotExist("c")
|
|
.runAsTest("move multiple files into a directory");
|
|
|
|
TestBuilder.command`mv file1.txt file2.txt does_not_exist/`
|
|
.exitCode(1)
|
|
.stderr("mv: does_not_exist/: No such file or directory\n")
|
|
.ensureTempDir()
|
|
.file("file1.txt", "hi")
|
|
.file("file1.txt", "hello")
|
|
.runAsTest("fails if destination folder does not exist");
|
|
|
|
TestBuilder.command`mkdir -p foo; mkdir -p bar; echo hi > foo/inside_foo; echo hi > bar/inside_bar; mv foo bar; ls -R bar`
|
|
.ensureTempDir()
|
|
.stdout(str =>
|
|
expect(sortedShellOutput(str)).toEqual(
|
|
sortedShellOutput(["inside_bar", "foo", join("bar", "foo") + ":", "inside_foo"]),
|
|
),
|
|
)
|
|
.runAsTest("move dir -> dir");
|
|
|
|
TestBuilder.command`touch a; mkdir -p foo; mv foo/ a`
|
|
.ensureTempDir()
|
|
.exitCode(20 /* ENOTDIR */)
|
|
.stderr("mv: a: Not a directory\n")
|
|
.runAsTest("move dir -> file fails");
|
|
});
|