Files
bun.sh/test/js/bun/shell/commands/mv.test.ts
2024-09-03 21:32:52 -07:00

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");
});