@@ -11,34 +11,64 @@ def setup
11
11
git ( 'init' , '--initial-branch=master' )
12
12
git ( 'config' , 'user.name' , 'Jóhän Grübél' )
13
13
git ( 'config' , 'user.email' , 'johan@example.com' )
14
- git ( 'commit' , '--allow-empty' , '-m' , 'New repository initialized by cvs2svn.' )
15
- git ( 'commit' , '--allow-empty' , '-m' , 'Initial revision' )
16
- git ( 'commit' , '--allow-empty' , '-m' , 'version 1.0.0' )
14
+ env = { 'GIT_AUTHOR_DATE' => '2025-10-08T12:00:00Z' }
15
+ git ( 'commit' , '--allow-empty' , '-m' , 'New repository initialized by cvs2svn.' , env :)
16
+ git ( 'commit' , '--allow-empty' , '-m' , 'Initial revision' , env :)
17
+ git ( 'commit' , '--allow-empty' , '-m' , 'version 1.0.0' , env :)
17
18
end
18
19
19
20
@sendmail = File . join ( Dir . mktmpdir , 'sendmail' )
20
21
File . write ( @sendmail , <<~SENDMAIL )
21
22
#!/usr/bin/env ruby
22
- p ARGV
23
+ puts "---"
23
24
puts STDIN.read
24
25
SENDMAIL
25
26
FileUtils . chmod ( 0755 , @sendmail )
26
27
27
28
@commit_email = File . expand_path ( '../../tool/commit-email.rb' , __dir__ )
28
29
end
29
30
30
- # Just testing an exit status :p
31
- # TODO: prepare something in test/fixtures/xxx and test output
32
- def test_successful_run
31
+ def test_sendmail_encoding
33
32
Dir . chdir ( @ruby ) do
33
+ before_rev = git ( 'rev-parse' , 'HEAD^' ) . chomp
34
+ long_rev = git ( 'rev-parse' , 'HEAD' ) . chomp
35
+ short_rev = long_rev [ 0 ...10 ]
36
+
37
+ env = {
38
+ 'SENDMAIL' => @sendmail ,
39
+ } . merge! ( gem_env )
34
40
out , _ , status = EnvUtil . invoke_ruby ( [
35
41
{ 'SENDMAIL' => @sendmail } . merge! ( gem_env ) ,
36
42
@commit_email , './' , 'cvs-admin@ruby-lang.org' ,
37
- git ( 'rev-parse' , 'HEAD^' ) . chomp , git ( 'rev-parse' , 'HEAD' ) . chomp , 'refs/heads/master' ,
43
+ before_rev , long_rev , 'refs/heads/master' ,
38
44
'--viewer-uri' , 'https://github.com/ruby/ruby/commit/' ,
39
45
'--error-to' , 'cvs-admin@ruby-lang.org' ,
40
46
] , '' , true )
41
- assert_true ( status . success? , out )
47
+
48
+ assert_true ( status . success? )
49
+ assert_equal ( out , <<~EOS )
50
+ master: #{ short_rev } (Jóhän Grübél)
51
+ ---
52
+ X-SVN-Author: =?UTF-8?B?SsOzaMOkbiBHcsO8YsOpbA==?=
53
+ X-SVN-Repository: XXX
54
+ X-SVN-Revision: #{ short_rev }
55
+ X-SVN-Commit-Id: #{ long_rev }
56
+ Mime-Version: 1.0
57
+ Content-Type: text/plain; charset=utf-8
58
+ Content-Transfer-Encoding: quoted-printable
59
+ From: =?UTF-8?B?SsOzaMOkbiBHcsO8YsOpbA==?= <noreply@ruby-lang.org>
60
+ To: cvs-admin@ruby-lang.org
61
+ Subject: #{ short_rev } (master): version 1.0.0
62
+ J=C3=B3h=C3=A4n Gr=C3=BCb=C3=A9l\t 2025-10-08 05:00:00 -0700 (Wed, 08 Oct 2=
63
+ 025)
64
+
65
+ New Revision: #{ short_rev }
66
+
67
+ https://github.com/ruby/ruby/commit/#{ short_rev }
68
+
69
+ Log:
70
+ version 1.0.0=
71
+ EOS
42
72
end
43
73
end
44
74
@@ -50,8 +80,8 @@ def gem_env
50
80
{ 'GEM_PATH' => ENV [ 'BUNDLED_GEM_PATH' ] , 'GEM_HOME' => ENV [ 'BUNDLED_GEM_HOME' ] }
51
81
end
52
82
53
- def git ( *cmd )
54
- out , status = Open3 . capture2 ( 'git' , *cmd )
83
+ def git ( *cmd , env : { } )
84
+ out , status = Open3 . capture2 ( env , 'git' , *cmd )
55
85
unless status . success?
56
86
raise "git #{ cmd . shelljoin } \n #{ out } "
57
87
end
0 commit comments