gettext-setup 0.23 → 0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: