diff --git a/tests/files/signed_commits/dot_git/HEAD b/tests/files/signed_commits/dot_git/HEAD deleted file mode 100644 index b870d826..00000000 --- a/tests/files/signed_commits/dot_git/HEAD +++ /dev/null @@ -1 +0,0 @@ -ref: refs/heads/main diff --git a/tests/files/signed_commits/dot_git/config b/tests/files/signed_commits/dot_git/config deleted file mode 100644 index 6c9406b7..00000000 --- a/tests/files/signed_commits/dot_git/config +++ /dev/null @@ -1,7 +0,0 @@ -[core] - repositoryformatversion = 0 - filemode = true - bare = false - logallrefupdates = true - ignorecase = true - precomposeunicode = true diff --git a/tests/files/signed_commits/dot_git/index b/tests/files/signed_commits/dot_git/index deleted file mode 100644 index 8ad08658..00000000 Binary files a/tests/files/signed_commits/dot_git/index and /dev/null differ diff --git a/tests/files/signed_commits/dot_git/logs/HEAD b/tests/files/signed_commits/dot_git/logs/HEAD deleted file mode 100644 index 130aef50..00000000 --- a/tests/files/signed_commits/dot_git/logs/HEAD +++ /dev/null @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 a043c677c93d9f2b285771a29742cc73715e41ea Simon Coffey 1673868871 +0000 commit (initial): Signed commit diff --git a/tests/files/signed_commits/dot_git/logs/refs/heads/main b/tests/files/signed_commits/dot_git/logs/refs/heads/main deleted file mode 100644 index 130aef50..00000000 --- a/tests/files/signed_commits/dot_git/logs/refs/heads/main +++ /dev/null @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 a043c677c93d9f2b285771a29742cc73715e41ea Simon Coffey 1673868871 +0000 commit (initial): Signed commit diff --git a/tests/files/signed_commits/dot_git/objects/4a/7f2717e7c6b029dcadf62aac0e5e811332f39d b/tests/files/signed_commits/dot_git/objects/4a/7f2717e7c6b029dcadf62aac0e5e811332f39d deleted file mode 100644 index 57463231..00000000 Binary files a/tests/files/signed_commits/dot_git/objects/4a/7f2717e7c6b029dcadf62aac0e5e811332f39d and /dev/null differ diff --git a/tests/files/signed_commits/dot_git/objects/92/fd5b7c1aeb6a4e2602799f01608b3deebbad2d b/tests/files/signed_commits/dot_git/objects/92/fd5b7c1aeb6a4e2602799f01608b3deebbad2d deleted file mode 100644 index dedfeed8..00000000 Binary files a/tests/files/signed_commits/dot_git/objects/92/fd5b7c1aeb6a4e2602799f01608b3deebbad2d and /dev/null differ diff --git a/tests/files/signed_commits/dot_git/objects/a0/43c677c93d9f2b285771a29742cc73715e41ea b/tests/files/signed_commits/dot_git/objects/a0/43c677c93d9f2b285771a29742cc73715e41ea deleted file mode 100644 index 1463622a..00000000 Binary files a/tests/files/signed_commits/dot_git/objects/a0/43c677c93d9f2b285771a29742cc73715e41ea and /dev/null differ diff --git a/tests/files/signed_commits/dot_git/refs/heads/main b/tests/files/signed_commits/dot_git/refs/heads/main deleted file mode 100644 index 6315edb3..00000000 --- a/tests/files/signed_commits/dot_git/refs/heads/main +++ /dev/null @@ -1 +0,0 @@ -a043c677c93d9f2b285771a29742cc73715e41ea diff --git a/tests/files/signed_commits/notes.txt b/tests/files/signed_commits/notes.txt deleted file mode 100644 index 4a7f2717..00000000 --- a/tests/files/signed_commits/notes.txt +++ /dev/null @@ -1 +0,0 @@ -it is very important that changes to this file are verified diff --git a/tests/units/test_signed_commits.rb b/tests/units/test_signed_commits.rb index 578b082c..d9cae557 100644 --- a/tests/units/test_signed_commits.rb +++ b/tests/units/test_signed_commits.rb @@ -4,55 +4,33 @@ require "fileutils" class TestSignedCommits < Test::Unit::TestCase - def git_working_dir - cwd = FileUtils.pwd - if File.directory?(File.join(cwd, 'files')) - test_dir = File.join(cwd, 'files') - elsif File.directory?(File.join(cwd, '..', 'files')) - test_dir = File.join(cwd, '..', 'files') - elsif File.directory?(File.join(cwd, 'tests', 'files')) - test_dir = File.join(cwd, 'tests', 'files') + SSH_SIGNATURE_REGEXP = Regexp.new(<<~EOS.chomp, Regexp::MULTILINE) + -----BEGIN SSH SIGNATURE----- + .* + -----END SSH SIGNATURE----- + EOS + + def in_repo_with_signing_config(&block) + in_temp_dir do |path| + `git init` + `ssh-keygen -t dsa -N "" -C "test key" -f .git/test-key` + `git config --local gpg.format ssh` + `git config --local user.signingkey .git/test-key` + + yield end - - create_temp_repo(File.expand_path(File.join(test_dir, 'signed_commits'))) - end - - def create_temp_repo(clone_path) - filename = 'git_test' + Time.now.to_i.to_s + rand(300).to_s.rjust(3, '0') - @tmp_path = File.join("/tmp/", filename) - FileUtils.mkdir_p(@tmp_path) - FileUtils.cp_r(clone_path, @tmp_path) - tmp_path = File.join(@tmp_path, File.basename(clone_path)) - Dir.chdir(tmp_path) do - FileUtils.mv('dot_git', '.git') - end - tmp_path - end - - def setup - @lib = Git.open(git_working_dir).lib end def test_commit_data - data = @lib.commit_data('a043c677c93d9f2b') + in_repo_with_signing_config do + create_file('README.md', '# My Project') + `git add README.md` + `git commit -S -m "Signed, sealed, delivered"` - assert_equal('Simon Coffey 1673868871 +0000', data['author']) - assert_equal('92fd5b7c1aeb6a4e2602799f01608b3deebbad2d', data['tree']) - assert_equal(<<~EOS.chomp, data['gpgsig']) - -----BEGIN PGP SIGNATURE----- + data = Git.open('.').lib.commit_data('HEAD') - iHUEABYKAB0WIQRmiEtd91BkbBpcgV2yCJ+VnJz/iQUCY8U2cgAKCRCyCJ+VnJz/ - ibjyAP48dGdoFgWL2BjV3CnmebdVjEjTCQtF2QGUybJsyJhhcwEAwbzAAGt3YHfS - uuLNH9ki9Sqd+/CH+L8Q2dPM5F4l3gg= - =3ATn - -----END PGP SIGNATURE----- - EOS - assert_equal(<<~EOS, data['message']) - Signed commit - - This will allow me to test commit data extraction for signed commits. - I'm making the message multiline to make sure that message extraction is - preserved. - EOS + assert_match(SSH_SIGNATURE_REGEXP, data['gpgsig']) + assert_equal("Signed, sealed, delivered\n", data['message']) + end end end