Add devshell and initial bats tests
This commit is contained in:
parent
af8fae68fe
commit
d3b3862040
4 changed files with 102 additions and 4 deletions
|
|
@ -10,6 +10,9 @@ trim_trailing_whitespace = true
|
|||
[*.py]
|
||||
indent_size = 4
|
||||
|
||||
[*.bats]
|
||||
indent_size = 2
|
||||
|
||||
[*.nix]
|
||||
indent_size = 2
|
||||
|
||||
|
|
|
|||
40
default.nix
40
default.nix
|
|
@ -1,28 +1,60 @@
|
|||
{
|
||||
stdenv,
|
||||
lib,
|
||||
bats,
|
||||
python3,
|
||||
python3Packages,
|
||||
shellcheck-minimal,
|
||||
shfmt,
|
||||
}:
|
||||
|
||||
let
|
||||
fs = lib.fileset;
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
pname = "mechanicaldiff";
|
||||
version = "0.0.1";
|
||||
|
||||
src = ./bin;
|
||||
src = fs.toSource {
|
||||
root = ./.;
|
||||
fileset = fs.unions [
|
||||
./.editorconfig
|
||||
./bin
|
||||
./test
|
||||
];
|
||||
};
|
||||
|
||||
buildInputs = [ python3 ];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs .
|
||||
'';
|
||||
|
||||
doCheck = true;
|
||||
|
||||
nativeCheckInputs = [ python3Packages.flake8 ];
|
||||
nativeCheckInputs = [
|
||||
(bats.withLibraries (p: [
|
||||
p.bats-assert
|
||||
p.bats-support
|
||||
p.bats-file
|
||||
]))
|
||||
python3Packages.flake8
|
||||
shellcheck-minimal
|
||||
shfmt
|
||||
];
|
||||
|
||||
checkPhase = ''
|
||||
flake8 mechanicaldiff.py
|
||||
runHook preCheck
|
||||
flake8 bin/mechanicaldiff.py
|
||||
shellcheck test/mechanicaldiff.bats
|
||||
shfmt -d test/mechanicaldiff.bats
|
||||
bats test
|
||||
runHook postCheck
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp mechanicaldiff.py $out/bin/mechanicaldiff
|
||||
cp $src/bin/mechanicaldiff.py $out/bin/mechanicaldiff
|
||||
chmod +x $out/bin/mechanicaldiff
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
13
flake.nix
13
flake.nix
|
|
@ -15,6 +15,19 @@
|
|||
in
|
||||
{
|
||||
packages.default = pkgs.callPackage ./default.nix { };
|
||||
devShells.default = pkgs.mkShell {
|
||||
packages = [
|
||||
(pkgs.bats.withLibraries (p: [
|
||||
p.bats-assert
|
||||
p.bats-support
|
||||
p.bats-file
|
||||
]))
|
||||
pkgs.python3
|
||||
pkgs.python3Packages.flake8
|
||||
pkgs.shellcheck
|
||||
pkgs.shfmt
|
||||
];
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
|
|||
50
test/mechanicaldiff.bats
Executable file
50
test/mechanicaldiff.bats
Executable file
|
|
@ -0,0 +1,50 @@
|
|||
#!/usr/bin/env bats
|
||||
|
||||
setup() {
|
||||
set -euo pipefail
|
||||
|
||||
bats_load_library bats-support
|
||||
bats_load_library bats-assert
|
||||
|
||||
DIR="$(cd "$(dirname "$BATS_TEST_FILENAME")" >/dev/null 2>&1 && pwd)"
|
||||
PATH="$DIR/../bin:$PATH"
|
||||
}
|
||||
|
||||
@test "keeps hunk when replacement matches" {
|
||||
run bash -c 'cat <<"EOF" | mechanicaldiff.py foo bar
|
||||
diff --git a/file.txt b/file.txt
|
||||
index 1111111..2222222 100644
|
||||
--- a/file.txt
|
||||
+++ b/file.txt
|
||||
@@ -1,1 +1,1 @@
|
||||
-foo
|
||||
+bar
|
||||
EOF'
|
||||
assert_success
|
||||
expected="$(
|
||||
cat <<'EOF'
|
||||
diff --git a/file.txt b/file.txt
|
||||
index 1111111..2222222 100644
|
||||
--- a/file.txt
|
||||
+++ b/file.txt
|
||||
@@ -1,1 +1,1 @@
|
||||
-foo
|
||||
+bar
|
||||
EOF
|
||||
)"
|
||||
assert_output "$expected"
|
||||
}
|
||||
|
||||
@test "drops diff when replacement does not match" {
|
||||
run bash -c 'cat <<"EOF" | mechanicaldiff.py foo bar
|
||||
diff --git a/file.txt b/file.txt
|
||||
index 1111111..2222222 100644
|
||||
--- a/file.txt
|
||||
+++ b/file.txt
|
||||
@@ -1,1 +1,1 @@
|
||||
-foo
|
||||
+baz
|
||||
EOF'
|
||||
assert_success
|
||||
assert_output ""
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue