gettext-setup 0.23 → 0.24

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 301f3ae1df25e57691ff9a3b68fbbaaba018fb75
4
- data.tar.gz: ff2707b717e503eee61bdb29b4abf8368abe3603
3
+ metadata.gz: 76721ee7a2e3870cbdb1a258b0158f1e65028f36
4
+ data.tar.gz: 01e7351ecc3386294020afa1e978a3bb9d5098ce
5
5
  SHA512:
6
- metadata.gz: fba28fcc1c48d5d29a1f5944d8533e59122d93203652697e2416cc56fab2259708414156677861dbaaafc642c294ea92b45b4134669ce4e4c0802d80a4cc411c
7
- data.tar.gz: d5b6badc80b1ab2e76e28094b6e094f76ef6fe131e49afa3c3e54977304dca13fb2f28f954b67669b3ad4ec0c774ad02c850034b59b4df28300f61738f934a1d
6
+ metadata.gz: b36a89fd9842e6fea600ee76935c84f13ff61509956d8ac2fb280b82eb9b0ce47251a70db692b6db4a6c604940b54a190c988bb6fdbbe6b92d056e2e37edcf76
7
+ data.tar.gz: 43567030ca8a0d62dc0079cda4522d0fa3673c9cf4b9c41cfc45aaa3704eb9fddc343a930ac404a57371c8e58971fd97a9718a3f69487b13822d98fe33e94e43
@@ -119,18 +119,22 @@ module GettextSetup
119
119
  puts 'No existing POT file, generating new'
120
120
  result = GettextSetup::Pot.generate_new_pot(locales_path, path)
121
121
  puts "POT file #{path} has been generated" if result
122
+ result
122
123
  else
123
124
  old_pot = path + '.old'
124
125
  File.rename(path, old_pot)
125
126
  result = GettextSetup::Pot.generate_new_pot(locales_path, path)
126
127
  if !result
127
128
  puts 'POT creation failed'
129
+ result
128
130
  elsif GettextSetup::Pot.string_changes?(old_pot, path)
129
- File.delete(old_pot)
130
131
  puts 'String changes detected, replacing with updated POT file'
132
+ File.delete(old_pot)
133
+ true
131
134
  else
132
135
  puts 'No string changes detected, keeping old POT file'
133
136
  File.rename(old_pot, path)
137
+ true
134
138
  end
135
139
  end
136
140
  end
@@ -9,9 +9,11 @@ namespace :gettext do
9
9
 
10
10
  task :update_pot do
11
11
  begin
12
- GettextSetup::Pot.update_pot
12
+ result = GettextSetup::Pot.update_pot
13
+ exit 1 unless result
13
14
  rescue GettextSetup::NoConfigFoundError => e
14
15
  puts e.message
16
+ exit 1
15
17
  end
16
18
  end
17
19
 
@@ -21,6 +23,8 @@ namespace :gettext do
21
23
  result = GettextSetup::Pot.generate_new_pot
22
24
  if result
23
25
  puts "POT file #{GettextSetup::Pot.pot_file_path} has been generated"
26
+ else
27
+ exit 1
24
28
  end
25
29
  rescue GettextSetup::NoConfigFoundError => e
26
30
  puts e.message
@@ -33,6 +37,8 @@ namespace :gettext do
33
37
  result = GettextSetup::MetadataPot.generate_metadata_pot
34
38
  if result
35
39
  puts "POT metadata file #{GettextSetup::MetadataPot.metadata_path} has been generated"
40
+ else
41
+ exit 1
36
42
  end
37
43
  rescue GettextSetup::NoConfigFoundError => e
38
44
  puts e.message
@@ -42,7 +48,8 @@ namespace :gettext do
42
48
  desc 'Update PO file for a specific language'
43
49
  task :po, [:language] do |_, args|
44
50
  begin
45
- GettextSetup::Pot.generate_new_po(args.language)
51
+ result = GettextSetup::Pot.generate_new_po(args.language)
52
+ exit 1 unless result
46
53
  rescue GettextSetup::NoConfigFoundError => e
47
54
  puts e.message
48
55
  end
@@ -0,0 +1,22 @@
1
+ ---
2
+ # This is the project-specific configuration file for setting up
3
+ # fast_gettext for your project.
4
+ gettext:
5
+ # This is used for the name of the .pot and .po files; they will be
6
+ # called <project_name>.pot?
7
+ project_name: 'sinatra-i18n'
8
+ # This is used in comments in the .pot and .po files to indicate what
9
+ # project the files belong to and should bea little more desctiptive than
10
+ # <project_name>
11
+ package_name: Sinatra i18n demo
12
+ # The locale that the default messages in the .pot file are in
13
+ default_locale: en
14
+ # The email used for sending bug reports.
15
+ bugs_address: docs@puppetlabs.com
16
+ # The holder of the copyright.
17
+ copyright_holder: Puppet Labs, LLC.
18
+ # Patterns for +Dir.glob+ used to find all files that might contain
19
+ # translatable content, relative to the project root directory
20
+ source_files:
21
+ - 'lib/**/*.rb'
22
+ - 'spec/**/*.rb'
@@ -0,0 +1,23 @@
1
+ # German translations for Sinatra i18n demo package.
2
+ # Copyright (C) 2016 Puppet Labs, LLC.
3
+ # This file is distributed under the same license as the Sinatra i18n demo package.
4
+ # Automatically generated, 2016.
5
+ #
6
+ msgid ""
7
+ msgstr ""
8
+ "Project-Id-Version: Sinatra i18n demo \n"
9
+ "Report-Msgid-Bugs-To: docs@puppetlabs.com\n"
10
+ "POT-Creation-Date: 2016-04-05 10:39-0700\n"
11
+ "PO-Revision-Date: 2016-02-26 18:21-0800\n"
12
+ "Last-Translator: Automatically generated\n"
13
+ "Language-Team: none\n"
14
+ "Language: de\n"
15
+ "MIME-Version: 1.0\n"
16
+ "Content-Type: text/plain; charset=UTF-8\n"
17
+ "Content-Transfer-Encoding: 8bit\n"
18
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
+
20
+ #: ../app.rb:14
21
+ msgid "Hello, world!"
22
+ msgstr "Hallo, Welt!"
23
+
@@ -0,0 +1,40 @@
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) 2017 Puppet Labs, LLC.
3
+ # This file is distributed under the same license as the Sinatra i18n demo package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
5
+ #
6
+ #, fuzzy
7
+ msgid ""
8
+ msgstr ""
9
+ "Project-Id-Version: Sinatra i18n demo 0.21-4-geccdac4\n"
10
+ "\n"
11
+ "Report-Msgid-Bugs-To: docs@puppetlabs.com\n"
12
+ "POT-Creation-Date: 2017-04-11 20:08-0500\n"
13
+ "PO-Revision-Date: 2017-04-11 20:08-0500\n"
14
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
15
+ "Language-Team: LANGUAGE <LL@li.org>\n"
16
+ "Language: \n"
17
+ "MIME-Version: 1.0\n"
18
+ "Content-Type: text/plain; charset=UTF-8\n"
19
+ "Content-Transfer-Encoding: 8bit\n"
20
+ "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
21
+
22
+ #: ../../lib/gettext_setup_spec.rb:26 ../../lib/gettext_setup_spec.rb:89 ../../lib/gettext_setup_spec.rb:91
23
+ msgid "Hello, world!"
24
+ msgstr ""
25
+
26
+ #: ../../lib/pot_spec.rb:52
27
+ msgid "merged-po-file"
28
+ msgstr ""
29
+
30
+ #: ../../lib/pot_spec.rb:74
31
+ msgid "no-pot-file"
32
+ msgstr ""
33
+
34
+ #: ../../lib/pot_spec.rb:85
35
+ msgid "some-spec-only-string"
36
+ msgstr ""
37
+
38
+ #: ../../lib/pot_spec.rb:104
39
+ msgid "unchanged-string"
40
+ msgstr ""
@@ -1,11 +1,14 @@
1
1
  require 'rspec/expectations'
2
- require_relative '../spec_helper'
2
+ require_relative '../../spec_helper'
3
3
 
4
- require_relative '../../lib/gettext-setup'
4
+ require_relative '../../../lib/gettext-setup'
5
5
 
6
6
  describe GettextSetup do
7
+ locales_path = File.absolute_path(File.join(File.dirname(__FILE__), '../../fixtures/locales'))
8
+ fixture_locales_path = File.absolute_path(File.join(File.dirname(__FILE__), '../../fixtures/fixture_locales'))
9
+
7
10
  before(:each) do
8
- GettextSetup.initialize(File.join(File.dirname(File.dirname(__FILE__)), 'fixtures', 'locales'))
11
+ GettextSetup.initialize(locales_path)
9
12
  end
10
13
  let(:config) do
11
14
  GettextSetup.config
@@ -73,7 +76,7 @@ describe GettextSetup do
73
76
  context 'multiple locales' do
74
77
  # locales/ loads the de locale and fixture_locales/ loads the jp locale
75
78
  before(:all) do
76
- GettextSetup.initialize(File.join(File.dirname(File.dirname(__FILE__)), 'fixtures', 'fixture_locales'))
79
+ GettextSetup.initialize(fixture_locales_path)
77
80
  end
78
81
  it 'can aggregate locales across projects' do
79
82
  expect(FastGettext.default_available_locales).to include('en')
@@ -89,7 +92,7 @@ describe GettextSetup do
89
92
  end
90
93
  context 'translation repository chain' do
91
94
  before(:all) do
92
- GettextSetup.initialize(File.join(File.dirname(File.dirname(__FILE__)), 'fixtures', 'fixture_locales'))
95
+ GettextSetup.initialize(fixture_locales_path)
93
96
  end
94
97
  it 'chain is not nil' do
95
98
  expect(GettextSetup.translation_repositories).not_to be_nil
@@ -101,12 +104,12 @@ describe GettextSetup do
101
104
  expect(_('Hello, world!')).to eq('こんにちは世界')
102
105
  end
103
106
  it 'does not allow duplicate repositories' do
104
- GettextSetup.initialize(File.join(File.dirname(File.dirname(__FILE__)), 'fixtures', 'fixture_locales'))
107
+ GettextSetup.initialize(fixture_locales_path)
105
108
  repos = GettextSetup.translation_repositories
106
109
  expect(repos.select { |k, _| k == 'fixture_locales' }.size).to eq(1)
107
110
  end
108
111
  it 'does allow multiple unique domains' do
109
- GettextSetup.initialize(File.join(File.dirname(File.dirname(__FILE__)), 'fixtures', 'locales'))
112
+ GettextSetup.initialize(locales_path)
110
113
  repos = GettextSetup.translation_repositories
111
114
  expect(repos.size == 2)
112
115
  expect(repos.select { |k, _| k == 'fixture_locales' }.size).to eq(1)
@@ -1,11 +1,11 @@
1
1
  require 'rspec/expectations'
2
- require_relative '../spec_helper'
2
+ require_relative '../../spec_helper'
3
3
 
4
- require_relative '../../lib/gettext-setup'
4
+ require_relative '../../../lib/gettext-setup'
5
5
 
6
6
  describe GettextSetup::MetadataPot do
7
7
  before(:each) do
8
- GettextSetup.initialize(File.join(File.dirname(File.dirname(__FILE__)), 'fixtures', 'locales'))
8
+ GettextSetup.initialize(File.absolute_path(File.join(File.dirname(__FILE__), '../../fixtures/locales')))
9
9
  end
10
10
  context '#metadata_path' do
11
11
  it 'finds the right metadata path' do
@@ -1,42 +1,42 @@
1
1
  require 'rspec/expectations'
2
- require_relative '../spec_helper.rb'
2
+ require_relative '../../spec_helper.rb'
3
3
 
4
- require_relative '../../lib/gettext-setup'
4
+ require_relative '../../../lib/gettext-setup'
5
5
  describe GettextSetup::Pot do
6
6
  NoConfigFoundError = GettextSetup::NoConfigFoundError
7
7
 
8
8
  def fixture_locales_path
9
- File.join(File.dirname(__FILE__), '../fixtures/fixture_locales')
9
+ File.join(File.dirname(__FILE__), '../../fixtures/fixture_locales')
10
10
  end
11
11
 
12
12
  def spec_locales_path
13
- File.join(File.dirname(__FILE__), '../fixtures/spec_locales')
13
+ File.join(File.dirname(__FILE__), '../../fixtures/spec_locales')
14
14
  end
15
15
 
16
16
  def locales_path
17
- File.join(File.dirname(__FILE__), '../fixtures/locales')
17
+ File.join(File.dirname(__FILE__), '../../fixtures/locales')
18
18
  end
19
19
 
20
20
  describe 'string_changes?', if: msgcmp_present? do
21
- old_pot = File.absolute_path('../fixtures/string_changes/old.pot', File.dirname(__FILE__))
21
+ old_pot = File.absolute_path('../../fixtures/string_changes/old.pot', File.dirname(__FILE__))
22
22
 
23
23
  it 'should detect string addition' do
24
- new_pot = File.absolute_path('../fixtures/string_changes/add.pot', File.dirname(__FILE__))
24
+ new_pot = File.absolute_path('../../fixtures/string_changes/add.pot', File.dirname(__FILE__))
25
25
  expect(GettextSetup::Pot.string_changes?(old_pot, new_pot)).to eq(true)
26
26
  end
27
27
 
28
28
  it 'should detect string removal' do
29
- new_pot = File.absolute_path('../fixtures/string_changes/remove.pot', File.dirname(__FILE__))
29
+ new_pot = File.absolute_path('../../fixtures/string_changes/remove.pot', File.dirname(__FILE__))
30
30
  expect(GettextSetup::Pot.string_changes?(old_pot, new_pot)).to eq(true)
31
31
  end
32
32
 
33
33
  it 'should detect string changes' do
34
- new_pot = File.absolute_path('../fixtures/string_changes/change.pot', File.dirname(__FILE__))
34
+ new_pot = File.absolute_path('../../fixtures/string_changes/change.pot', File.dirname(__FILE__))
35
35
  expect(GettextSetup::Pot.string_changes?(old_pot, new_pot)).to eq(true)
36
36
  end
37
37
 
38
38
  it 'should not detect non-string changes' do
39
- new_pot = File.absolute_path('../fixtures/string_changes/non_string_changes.pot', File.dirname(__FILE__))
39
+ new_pot = File.absolute_path('../../fixtures/string_changes/non_string_changes.pot', File.dirname(__FILE__))
40
40
  expect(GettextSetup::Pot.string_changes?(old_pot, new_pot)).to eq(false)
41
41
  end
42
42
  end
@@ -44,16 +44,13 @@ describe GettextSetup::Pot do
44
44
  context 'generate_new_pot' do
45
45
  it "fails when GettextSetup can't find a config.yaml" do
46
46
  path = File.join(Dir.mktmpdir, 'empty.pot')
47
- with_captured_stdout do
48
- expect { GettextSetup::Pot.generate_new_pot(Dir.mktmpdir, path) }.to raise_error(NoConfigFoundError)
49
- end
47
+ expect { GettextSetup::Pot.generate_new_pot(Dir.mktmpdir, path) }.to raise_error(NoConfigFoundError)
50
48
  end
51
49
  it 'builds a POT file' do
52
50
  path = File.join(Dir.mktmpdir, 'new.pot')
53
- out = with_captured_stdout do
51
+ expect do
54
52
  GettextSetup::Pot.generate_new_pot(fixture_locales_path, path)
55
- end
56
- expect(out).to eq('') # STDOUT is determined in `update_pot`.
53
+ end.to output('').to_stdout # STDOUT is determined in `update_pot`.
57
54
  contents = File.read(path)
58
55
  expect(contents).to match(/Fixture locales/)
59
56
  expect(contents).to match(/docs@puppetlabs.com/)
@@ -66,43 +63,37 @@ describe GettextSetup::Pot do
66
63
  it "fails when GettextSetup can't find a config.yaml" do
67
64
  path = File.join(Dir.mktmpdir, 'fails.pot')
68
65
  po_path = File.join(Dir.mktmpdir, 'fails.po')
69
- with_captured_stdout do
70
- expect { GettextSetup::Pot.generate_new_po('ja', Dir.mktmpdir, path, po_path) }.to raise_error(NoConfigFoundError)
71
- end
66
+ expect { GettextSetup::Pot.generate_new_po('ja', Dir.mktmpdir, path, po_path) }.to raise_error(NoConfigFoundError)
72
67
  end
73
68
  it 'complains when no language is supplied' do
74
- stdout = with_captured_stdout do
75
- GettextSetup::Pot.generate_new_po(nil, fixture_locales_path, Dir.mktmpdir, Dir.mktmpdir)
76
- end
77
69
  result = "You need to specify the language to add. Either 'LANGUAGE=eo rake gettext:po' or 'rake gettext:po[LANGUAGE]'\n"
78
- expect(stdout).to eq(result)
70
+ expect do
71
+ GettextSetup::Pot.generate_new_po(nil, fixture_locales_path, Dir.mktmpdir, Dir.mktmpdir)
72
+ end.to output(result).to_stdout
79
73
  end
80
74
  it 'generates new PO file', if: msginit_present? do
81
75
  po_path = File.join(Dir.mktmpdir, 'aa', 'tmp.po')
82
76
  pot_path = File.join(locales_path, 'sinatra-i18n.pot')
83
77
 
84
- stdout = with_captured_stdout do
78
+ expect do
85
79
  GettextSetup::Pot.generate_new_po('aa', locales_path, pot_path, po_path)
86
- end
87
- expect(stdout).to eq("PO file #{po_path} created\n")
80
+ end.to output("PO file #{po_path} created\n").to_stdout
88
81
  end
89
82
  it 'merges PO files', if: [msginit_present?, msgmerge_present?] do
90
83
  _('merged-po-file')
91
84
  po_path = File.join(Dir.mktmpdir, 'aa', 'tmp.po')
92
85
  pot_path = GettextSetup::Pot.pot_file_path
93
86
 
94
- stdout = with_captured_stdout do
87
+ expect do
95
88
  GettextSetup::Pot.generate_new_po('aa', fixture_locales_path, pot_path, po_path)
96
- end
97
- expect(stdout).to eq("PO file #{po_path} created\n")
89
+ end.to output("PO file #{po_path} created\n").to_stdout
98
90
  contents = File.read(po_path)
99
91
  expect(contents).to match(/msgid "Hello, world!"/)
100
92
 
101
93
  new_pot_path = File.join(spec_locales_path, 'sinatra-i18n.pot')
102
- new_stdout = with_captured_stdout do
94
+ expect do
103
95
  GettextSetup::Pot.generate_new_po('aa', spec_locales_path, new_pot_path, po_path)
104
- end
105
- expect(new_stdout).to eq("PO file #{po_path} merged\n")
96
+ end.to output("PO file #{po_path} merged\n").to_stdout
106
97
  new_contents = File.read(po_path)
107
98
  expect(new_contents).to match(/merged-po-file/)
108
99
  end
@@ -111,52 +102,45 @@ describe GettextSetup::Pot do
111
102
  context 'update_pot' do
112
103
  it "fails when GettextSetup can't find a config.yaml" do
113
104
  path = File.join(Dir.mktmpdir, 'fail-update.pot')
114
- with_captured_stdout do
115
- expect { GettextSetup::Pot.update_pot(Dir.mktmpdir, path) }.to raise_error(NoConfigFoundError)
116
- end
105
+ expect { GettextSetup::Pot.update_pot(Dir.mktmpdir, path) }.to raise_error(NoConfigFoundError)
117
106
  end
118
107
  it 'creates POT when absent' do
119
108
  _('no-pot-file')
120
109
  path = File.join(Dir.mktmpdir, 'some-pot.pot')
121
- stdout = with_captured_stdout do
110
+ expect do
122
111
  GettextSetup::Pot.update_pot(spec_locales_path, path)
123
- end
124
- expect(stdout).to eq("No existing POT file, generating new\nPOT file #{path} has been generated\n")
112
+ end.to output("No existing POT file, generating new\nPOT file #{path} has been generated\n").to_stdout
125
113
  contents = File.read(path)
126
114
  expect(contents).to match(/msgid "no-pot-file"/)
127
115
  end
128
116
  it 'updates POT when something changes', if: [msginit_present?, msgmerge_present?] do
129
117
  _('some-spec-only-string')
130
118
  path = File.join(Dir.mktmpdir, 'some-pot.pot')
131
- stdout = with_captured_stdout do
119
+ expect do
132
120
  GettextSetup::Pot.update_pot(fixture_locales_path, path)
133
- end
134
- expect(stdout).to eq("No existing POT file, generating new\nPOT file #{path} has been generated\n")
121
+ end.to output("No existing POT file, generating new\nPOT file #{path} has been generated\n").to_stdout
135
122
  contents = File.read(path)
136
123
  expect(contents).to match(/Language-Team: LANGUAGE <LL@li.org>/)
137
124
  expect(contents).not_to match(/some-spec-only-string/)
138
- output = with_captured_stdout do
125
+ expect do
139
126
  GettextSetup::Pot.update_pot(spec_locales_path, path)
140
- end
127
+ end.to output("String changes detected, replacing with updated POT file\n").to_stdout
141
128
  new_contents = File.read(path)
142
129
  expect(new_contents).to match(/some-spec-only-string/)
143
- expect(output).to eq("String changes detected, replacing with updated POT file\n")
144
130
  end
145
131
  it "doesn't update the POT when nothing changes", if: [msginit_present?, msgcmp_present?] do
146
132
  _('unchanged-string')
147
133
  path = File.join(Dir.mktmpdir, 'some-pot.pot')
148
- stdout = with_captured_stdout do
134
+ expect do
149
135
  GettextSetup::Pot.update_pot(spec_locales_path, path)
150
- end
151
- expect(stdout).to eq("No existing POT file, generating new\nPOT file #{path} has been generated\n")
136
+ end.to output("No existing POT file, generating new\nPOT file #{path} has been generated\n").to_stdout
152
137
  contents = File.read(path)
153
138
  expect(contents).to match(/unchanged-string/)
154
- new_stdout = with_captured_stdout do
139
+ expect do
155
140
  GettextSetup::Pot.update_pot(spec_locales_path, path)
156
- end
141
+ end.to output("No string changes detected, keeping old POT file\n").to_stdout
157
142
  new_contents = File.read(path)
158
143
  expect(new_contents).to eq(contents)
159
- expect(new_stdout).to eq("No string changes detected, keeping old POT file\n")
160
144
  end
161
145
  end
162
146
  end
@@ -0,0 +1,103 @@
1
+ require 'rspec/expectations'
2
+ require 'rake'
3
+ require_relative '../../spec_helper.rb'
4
+
5
+ load File.expand_path('../../../../lib/tasks/gettext.rake', __FILE__)
6
+
7
+ describe 'gettext.rake' do
8
+ locales = File.expand_path('../../fixtures/locales', File.dirname(__FILE__))
9
+ tmp_locales = File.expand_path('../../fixtures/tmp_locales', File.dirname(__FILE__))
10
+ fixture_locales = File.expand_path('../../fixtures/fixture_locales', File.dirname(__FILE__))
11
+ tmp_pot_path = File.expand_path('sinatra-i18n.pot', tmp_locales)
12
+
13
+ before :each do
14
+ FileUtils.rm_r(tmp_locales, force: true)
15
+ FileUtils.cp_r(locales, tmp_locales)
16
+ end
17
+ after :each do
18
+ GettextSetup.clear
19
+ Rake::Task.tasks.each(&:reenable)
20
+ end
21
+ around :each do |test|
22
+ # Since we have `exit 1` in these rake tasks, we need to explicitly tell
23
+ # rspec that any unexpected errors aren't expected. Otherwise, if a
24
+ # SystemExit error is thrown, it just doesn't finish running the rest of
25
+ # the tests and considers the suite passing...
26
+ expect { test.run }.not_to raise_error
27
+ end
28
+ context Rake::Task['gettext:pot'] do
29
+ it 'outputs correctly' do
30
+ expect do
31
+ GettextSetup.initialize(tmp_locales)
32
+ subject.invoke
33
+ end.to output(/POT file .+\/spec\/fixtures\/tmp_locales\/sinatra-i18n.pot has been generated/).to_stdout
34
+ end
35
+ it 'exits 1 on error' do
36
+ allow(GettextSetup::Pot).to receive(:generate_new_pot).and_return(false)
37
+ expect do
38
+ GettextSetup.initialize(tmp_locales)
39
+ subject.invoke
40
+ end.to raise_error(SystemExit)
41
+ end
42
+ end
43
+ context Rake::Task['gettext:metadata_pot'] do
44
+ it 'outputs correctly' do
45
+ expect do
46
+ GettextSetup.initialize(tmp_locales)
47
+ subject.invoke
48
+ end.to output(/POT metadata file .+sinatra-i18n_metadata.pot has been generated/).to_stdout
49
+ end
50
+ it 'exits 1 on error' do
51
+ allow(GettextSetup::MetadataPot).to receive(:generate_metadata_pot).and_return(false)
52
+ expect do
53
+ GettextSetup.initialize(tmp_locales)
54
+ subject.invoke
55
+ end.to raise_error(SystemExit)
56
+ end
57
+ end
58
+ context Rake::Task['gettext:po'] do
59
+ it 'outputs correctly' do
60
+ expect do
61
+ GettextSetup.initialize(tmp_locales)
62
+ subject.invoke('de')
63
+ end.to output(/PO file .+de\/sinatra-i18n.po merged/).to_stdout
64
+ end
65
+ it 'exits 1 on error' do
66
+ allow(GettextSetup::Pot).to receive(:generate_new_po).with('de').and_return(false)
67
+ expect do
68
+ GettextSetup.initialize(tmp_locales)
69
+ subject.invoke('de')
70
+ end.to raise_error(SystemExit)
71
+ end
72
+ end
73
+ context Rake::Task['gettext:update_pot'] do
74
+ it 'does not update the POT when no changes are detected' do
75
+ expect do
76
+ GettextSetup.initialize(tmp_locales)
77
+ subject.invoke
78
+ end.to output(/No string changes detected, keeping old POT file/).to_stdout
79
+ end
80
+ it 'can create a new POT' do
81
+ FileUtils.rm(tmp_pot_path)
82
+ expect do
83
+ GettextSetup.initialize(tmp_locales)
84
+ subject.invoke
85
+ end.to output(/No existing POT file, generating new\nPOT file .+sinatra-i18n.pot has been generated/).to_stdout
86
+ end
87
+ it 'can update the POT' do
88
+ fixture_locales_pot = File.expand_path('fixture_locales.pot', fixture_locales)
89
+ FileUtils.cp(fixture_locales_pot, tmp_pot_path)
90
+ expect do
91
+ GettextSetup.initialize(tmp_locales)
92
+ subject.invoke
93
+ end.to output(/String changes detected, replacing with updated POT file/).to_stdout
94
+ end
95
+ it 'exits 1 upon error' do
96
+ allow(GettextSetup::Pot).to receive(:update_pot).and_return(false)
97
+ expect do
98
+ GettextSetup.initialize(tmp_locales)
99
+ subject.invoke
100
+ end.to raise_error(SystemExit)
101
+ end
102
+ end
103
+ end
data/spec/spec_helper.rb CHANGED
@@ -26,12 +26,3 @@ end
26
26
  def msgmerge_present?
27
27
  cmd_present?('msgmerge')
28
28
  end
29
-
30
- def with_captured_stdout
31
- old_stdout = $stdout
32
- $stdout = StringIO.new('', 'w')
33
- yield
34
- $stdout.string
35
- ensure
36
- $stdout = old_stdout
37
- end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gettext-setup
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.23'
4
+ version: '0.24'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-13 00:00:00.000000000 Z
11
+ date: 2017-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fast_gettext
@@ -223,9 +223,13 @@ files:
223
223
  - spec/fixtures/string_changes/non_string_changes.pot
224
224
  - spec/fixtures/string_changes/old.pot
225
225
  - spec/fixtures/string_changes/remove.pot
226
- - spec/lib/gettext_setup_spec.rb
227
- - spec/lib/metadata_pot_spec.rb
228
- - spec/lib/pot_spec.rb
226
+ - spec/fixtures/tmp_locales/config.yaml
227
+ - spec/fixtures/tmp_locales/de/sinatra-i18n.po
228
+ - spec/fixtures/tmp_locales/sinatra-i18n.pot
229
+ - spec/lib/gettext-setup/gettext_setup_spec.rb
230
+ - spec/lib/gettext-setup/metadata_pot_spec.rb
231
+ - spec/lib/gettext-setup/pot_spec.rb
232
+ - spec/lib/tasks/gettext_rake_spec.rb
229
233
  - spec/spec_helper.rb
230
234
  homepage: https://github.com/puppetlabs/gettext-setup-gem
231
235
  licenses:
@@ -266,8 +270,12 @@ test_files:
266
270
  - spec/fixtures/string_changes/non_string_changes.pot
267
271
  - spec/fixtures/string_changes/old.pot
268
272
  - spec/fixtures/string_changes/remove.pot
269
- - spec/lib/gettext_setup_spec.rb
270
- - spec/lib/metadata_pot_spec.rb
271
- - spec/lib/pot_spec.rb
273
+ - spec/fixtures/tmp_locales/config.yaml
274
+ - spec/fixtures/tmp_locales/de/sinatra-i18n.po
275
+ - spec/fixtures/tmp_locales/sinatra-i18n.pot
276
+ - spec/lib/gettext-setup/gettext_setup_spec.rb
277
+ - spec/lib/gettext-setup/metadata_pot_spec.rb
278
+ - spec/lib/gettext-setup/pot_spec.rb
279
+ - spec/lib/tasks/gettext_rake_spec.rb
272
280
  - spec/spec_helper.rb
273
281
  has_rdoc: