From 790fc7c792f15c868f37e0d3bf8f608acbccbb10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Ri=C3=9Fe?= Date: Mon, 14 Oct 2024 15:59:21 +0000 Subject: [PATCH] Add git-annex' testremote to the test suite (#48) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `git annex testremote` command runs a built-in set of tests against a remote. It cannot hurt to check our implementation of a git-annex remote against it too. Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/48 Co-authored-by: Matthias Riße Co-committed-by: Matthias Riße --- tests/integration/git_annex_test.go | 196 ++++++++++++++++++++++++++++ 1 file changed, 196 insertions(+) diff --git a/tests/integration/git_annex_test.go b/tests/integration/git_annex_test.go index 44bc8376d7..03c8802918 100644 --- a/tests/integration/git_annex_test.go +++ b/tests/integration/git_annex_test.go @@ -395,6 +395,16 @@ func TestGitAnnexPermissions(t *testing.T) { require.NoError(t, doAnnexDownloadTest(remoteRepoPath, repoPath)) }) + t.Run("TestremoteReadOnly", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.NoError(t, doAnnexTestremoteReadOnlyTest(repoPath)) + }) + + t.Run("TestremoteReadWrite", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.NoError(t, doAnnexTestremoteReadWriteTest(repoPath)) + }) + t.Run("Upload", func(t *testing.T) { defer tests.PrintCurrentTest(t)() @@ -425,6 +435,16 @@ func TestGitAnnexPermissions(t *testing.T) { defer tests.PrintCurrentTest(t)() require.NoError(t, doAnnexDownloadTest(remoteRepoPath, repoPath)) }) + + t.Run("TestremoteReadOnly", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.NoError(t, doAnnexTestremoteReadOnlyTest(repoPath)) + }) + + t.Run("TestremoteReadWrite", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.Error(t, doAnnexTestremoteReadWriteTest(repoPath)) + }) }) }) }) @@ -457,6 +477,16 @@ func TestGitAnnexPermissions(t *testing.T) { require.NoError(t, doAnnexDownloadTest(remoteRepoPath, repoPath)) }) + t.Run("TestremoteReadOnly", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.NoError(t, doAnnexTestremoteReadOnlyTest(repoPath)) + }) + + t.Run("TestremoteReadWrite", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.NoError(t, doAnnexTestremoteReadWriteTest(repoPath)) + }) + t.Run("Upload", func(t *testing.T) { defer tests.PrintCurrentTest(t)() @@ -487,6 +517,16 @@ func TestGitAnnexPermissions(t *testing.T) { defer tests.PrintCurrentTest(t)() require.NoError(t, doAnnexDownloadTest(remoteRepoPath, repoPath)) }) + + t.Run("TestremoteReadOnly", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.NoError(t, doAnnexTestremoteReadOnlyTest(repoPath)) + }) + + t.Run("TestremoteReadWrite", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.Error(t, doAnnexTestremoteReadWriteTest(repoPath)) + }) }) }) }) @@ -519,6 +559,16 @@ func TestGitAnnexPermissions(t *testing.T) { require.NoError(t, doAnnexDownloadTest(remoteRepoPath, repoPath)) }) + t.Run("TestremoteReadOnly", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.NoError(t, doAnnexTestremoteReadOnlyTest(repoPath)) + }) + + t.Run("TestremoteReadWrite", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.Error(t, doAnnexTestremoteReadWriteTest(repoPath)) + }) + t.Run("Upload", func(t *testing.T) { defer tests.PrintCurrentTest(t)() @@ -549,6 +599,16 @@ func TestGitAnnexPermissions(t *testing.T) { defer tests.PrintCurrentTest(t)() require.NoError(t, doAnnexDownloadTest(remoteRepoPath, repoPath)) }) + + t.Run("TestremoteReadOnly", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.NoError(t, doAnnexTestremoteReadOnlyTest(repoPath)) + }) + + t.Run("TestremoteReadWrite", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.Error(t, doAnnexTestremoteReadWriteTest(repoPath)) + }) }) }) }) @@ -581,6 +641,16 @@ func TestGitAnnexPermissions(t *testing.T) { require.NoError(t, doAnnexDownloadTest(remoteRepoPath, repoPath)) }) + t.Run("TestremoteReadOnly", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.NoError(t, doAnnexTestremoteReadOnlyTest(repoPath)) + }) + + t.Run("TestremoteReadWrite", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.Error(t, doAnnexTestremoteReadWriteTest(repoPath)) + }) + t.Run("Upload", func(t *testing.T) { defer tests.PrintCurrentTest(t)() @@ -611,6 +681,16 @@ func TestGitAnnexPermissions(t *testing.T) { defer tests.PrintCurrentTest(t)() require.NoError(t, doAnnexDownloadTest(remoteRepoPath, repoPath)) }) + + t.Run("TestremoteReadOnly", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.NoError(t, doAnnexTestremoteReadOnlyTest(repoPath)) + }) + + t.Run("TestremoteReadWrite", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.Error(t, doAnnexTestremoteReadWriteTest(repoPath)) + }) }) }) }) @@ -642,6 +722,16 @@ func TestGitAnnexPermissions(t *testing.T) { defer tests.PrintCurrentTest(t)() require.NoError(t, doAnnexDownloadTest(remoteRepoPath, repoPath)) }) + + t.Run("TestremoteReadOnly", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.NoError(t, doAnnexTestremoteReadOnlyTest(repoPath)) + }) + + t.Run("TestremoteReadWrite", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.Error(t, doAnnexTestremoteReadWriteTest(repoPath)) + }) }) }) @@ -713,6 +803,16 @@ func TestGitAnnexPermissions(t *testing.T) { require.NoError(t, doAnnexDownloadTest(remoteRepoPath, repoPath)) }) + t.Run("TestremoteReadOnly", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.NoError(t, doAnnexTestremoteReadOnlyTest(repoPath)) + }) + + t.Run("TestremoteReadWrite", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.NoError(t, doAnnexTestremoteReadWriteTest(repoPath)) + }) + t.Run("Upload", func(t *testing.T) { defer tests.PrintCurrentTest(t)() @@ -743,6 +843,16 @@ func TestGitAnnexPermissions(t *testing.T) { defer tests.PrintCurrentTest(t)() require.NoError(t, doAnnexDownloadTest(remoteRepoPath, repoPath)) }) + + t.Run("TestremoteReadOnly", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.NoError(t, doAnnexTestremoteReadOnlyTest(repoPath)) + }) + + t.Run("TestremoteReadWrite", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.Error(t, doAnnexTestremoteReadWriteTest(repoPath)) + }) }) }) }) @@ -775,6 +885,16 @@ func TestGitAnnexPermissions(t *testing.T) { require.NoError(t, doAnnexDownloadTest(remoteRepoPath, repoPath)) }) + t.Run("TestremoteReadOnly", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.NoError(t, doAnnexTestremoteReadOnlyTest(repoPath)) + }) + + t.Run("TestremoteReadWrite", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.NoError(t, doAnnexTestremoteReadWriteTest(repoPath)) + }) + t.Run("Upload", func(t *testing.T) { defer tests.PrintCurrentTest(t)() @@ -805,6 +925,16 @@ func TestGitAnnexPermissions(t *testing.T) { defer tests.PrintCurrentTest(t)() require.NoError(t, doAnnexDownloadTest(remoteRepoPath, repoPath)) }) + + t.Run("TestremoteReadOnly", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.NoError(t, doAnnexTestremoteReadOnlyTest(repoPath)) + }) + + t.Run("TestremoteReadWrite", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.Error(t, doAnnexTestremoteReadWriteTest(repoPath)) + }) }) }) }) @@ -837,6 +967,16 @@ func TestGitAnnexPermissions(t *testing.T) { require.NoError(t, doAnnexDownloadTest(remoteRepoPath, repoPath)) }) + t.Run("TestremoteReadOnly", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.NoError(t, doAnnexTestremoteReadOnlyTest(repoPath)) + }) + + t.Run("TestremoteReadWrite", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.Error(t, doAnnexTestremoteReadWriteTest(repoPath)) + }) + t.Run("Upload", func(t *testing.T) { defer tests.PrintCurrentTest(t)() @@ -867,6 +1007,16 @@ func TestGitAnnexPermissions(t *testing.T) { defer tests.PrintCurrentTest(t)() require.NoError(t, doAnnexDownloadTest(remoteRepoPath, repoPath)) }) + + t.Run("TestremoteReadOnly", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.NoError(t, doAnnexTestremoteReadOnlyTest(repoPath)) + }) + + t.Run("TestremoteReadWrite", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.Error(t, doAnnexTestremoteReadWriteTest(repoPath)) + }) }) }) }) @@ -899,6 +1049,16 @@ func TestGitAnnexPermissions(t *testing.T) { require.Error(t, doAnnexDownloadTest(remoteRepoPath, repoPath), "annex copy --from should fail due to permissions") }) + t.Run("TestremoteReadOnly", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.Error(t, doAnnexTestremoteReadOnlyTest(repoPath)) + }) + + t.Run("TestremoteReadWrite", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.Error(t, doAnnexTestremoteReadWriteTest(repoPath)) + }) + t.Run("Upload", func(t *testing.T) { defer tests.PrintCurrentTest(t)() @@ -929,6 +1089,16 @@ func TestGitAnnexPermissions(t *testing.T) { defer tests.PrintCurrentTest(t)() require.Error(t, doAnnexDownloadTest(remoteRepoPath, repoPath)) }) + + t.Run("TestremoteReadOnly", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.Error(t, doAnnexTestremoteReadOnlyTest(repoPath)) + }) + + t.Run("TestremoteReadWrite", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.Error(t, doAnnexTestremoteReadWriteTest(repoPath)) + }) }) }) }) @@ -960,6 +1130,16 @@ func TestGitAnnexPermissions(t *testing.T) { defer tests.PrintCurrentTest(t)() require.Error(t, doAnnexDownloadTest(remoteRepoPath, repoPath)) }) + + t.Run("TestremoteReadOnly", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.Error(t, doAnnexTestremoteReadOnlyTest(repoPath)) + }) + + t.Run("TestremoteReadWrite", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + require.Error(t, doAnnexTestremoteReadWriteTest(repoPath)) + }) }) }) @@ -1032,6 +1212,22 @@ func doAnnexInitTest(remoteRepoPath, repoPath string) (err error) { return nil } +func doAnnexTestremoteReadWriteTest(repoPath string) (err error) { + _, _, err = git.NewCommandContextNoGlobals(git.DefaultContext, "annex", "testremote", "origin").RunStdString(&git.RunOpts{Dir: repoPath}) + if err != nil { + return err + } + return nil +} + +func doAnnexTestremoteReadOnlyTest(repoPath string) (err error) { + _, _, err = git.NewCommandContextNoGlobals(git.DefaultContext, "annex", "testremote", "origin", "--test-readonly", "annexed.tiff").RunStdString(&git.RunOpts{Dir: repoPath}) + if err != nil { + return err + } + return nil +} + func doAnnexDownloadTest(remoteRepoPath, repoPath string) (err error) { // NB: this test does something slightly different if run separately from "doAnnexInitTest()": // "git annex copy" will notice and run "git annex init", silently.