Repository: aspiers/git-deps (language: python)

Issue:
write tests
Embarrassing to admit I wrote this as a quick hack without following TDD methodology.  In my defence, I was doing it in coffee breaks at an openSUSE conference ;-p



Discussion / hints:
f1fa5efb0b provides fixtures for future integration tests.

I'm fine with writing tests for Python code, but have no clue how to do browser-oriented testing of the Javascript :-/  Advice welcome.


Fix patch:
diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml
index 6dae66e..01e41e6 100644
--- a/.github/workflows/CI.yml
+++ b/.github/workflows/CI.yml
@@ -20,6 +20,8 @@ jobs:
 
     steps:
     - uses: actions/checkout@v3
+      with:
+        fetch-depth: 0 # fetch the entire repository so that we can use it for our self tests
     - name: Set up Python ${{ matrix.python-version }}
       uses: actions/setup-python@v3
       with:
@@ -41,3 +43,6 @@ jobs:
     - name: Test with pytest
       run: |
         pytest
+    - name: Run the self-test suite
+      run: |
+        tests/self_test.sh


Test patch:
diff --git a/tests/expected_outputs/deps_1ba7ad5 b/tests/expected_outputs/deps_1ba7ad5
new file mode 100644
index 0000000..ca9783e
--- /dev/null
+++ b/tests/expected_outputs/deps_1ba7ad5
@@ -0,0 +1,3 @@
+2bd9ea0f03a644cc3f5e7824d9ad0979ccdf94dc
+2c9d23b0291157eb1096384ff76e0122747b9bdf
+c15f0364bf0364b8123b370b78b6d6ac8bf6f779
diff --git a/tests/expected_outputs/deps_4f27a1e b/tests/expected_outputs/deps_4f27a1e
new file mode 100644
index 0000000..6796a68
--- /dev/null
+++ b/tests/expected_outputs/deps_4f27a1e
@@ -0,0 +1,7 @@
+3374b8419a45d91d3c0631be11c8cf893b272217
+3a1dd42fd6114a634ba7cf037ce61e2aee76db73
+5ec5ccbdff508014c61ae9d18f3366a15c0f2689
+80c247fd21a1e7f476d1c8ba289498e216eff3dc
+b144bfd5feb327ef7ce0c26bbfb6f4da573abfe5
+b1967573e81a8100a4cc778936de0ba0a8a8f5cb
+f7bf058439fd7499aad7a10418a9f516e6949fbc
diff --git a/tests/expected_outputs/deps_b196757 b/tests/expected_outputs/deps_b196757
new file mode 100644
index 0000000..e69de29
diff --git a/tests/self_test.sh b/tests/self_test.sh
new file mode 100755
index 0000000..c2ddfb1
--- /dev/null
+++ b/tests/self_test.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+set -eo pipefail
+
+# Collection of tests consisting in running `git-deps` on its own repository.
+# The expected outputs of various commands are stored in the `expected_outputs` subdirectory.
+
+# Because git-deps can only be run from the repository's root, this script should be run at
+# the root of a clone of git-deps. The clone should not be shallow, so that all refs can be accessed.
+
+echo "Running test suite"
+
+echo "* Dependencies of 4f27a1e, a regular commit"
+git-deps 4f27a1e^! | sort | diff tests/expected_outputs/deps_4f27a1e -
+
+echo "* Dependencies of 1ba7ad5, a merge commit"
+git-deps 1ba7ad5^! | sort | diff tests/expected_outputs/deps_1ba7ad5 -
+
+# Currently failing:
+#echo "* Dependencies of the root commit"
+# git-deps b196757^! | sort # | diff tests/expected_outputs/deps_b196757 -
+
+echo "All tests passed!"