twine 1.0.2 → 1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -24,10 +24,6 @@ class TestGenerateAllLocalizationFiles < CommandTest
24
24
  def setup
25
25
  super
26
26
  Dir.mkdir File.join @output_dir, 'values-en'
27
-
28
- # both Android and Tizen can handle folders containing `values-en`
29
- android_formatter = prepare_mock_formatter(Twine::Formatters::Android)
30
- tizen_formatter = prepare_mock_formatter(Twine::Formatters::Tizen, false)
31
27
  end
32
28
 
33
29
  def new_runner(options = {})
@@ -47,8 +43,8 @@ class TestGenerateAllLocalizationFiles < CommandTest
47
43
  end
48
44
 
49
45
  class TestDoNotCreateFolders < TestGenerateAllLocalizationFiles
50
- def new_runner(twine_file = nil)
51
- super(false, twine_file)
46
+ def new_runner(twine_file = nil, options = {})
47
+ super(false, twine_file, options)
52
48
  end
53
49
 
54
50
  def test_fails_if_output_folder_does_not_exist
@@ -60,39 +56,53 @@ class TestGenerateAllLocalizationFiles < CommandTest
60
56
  def test_does_not_create_language_folders
61
57
  Dir.mkdir File.join @output_dir, 'en.lproj'
62
58
  new_runner.generate_all_localization_files
63
- refute File.exists?(File.join(@output_dir, 'es.lproj')), "language folder should not be created"
59
+ refute File.exist?(File.join(@output_dir, 'es.lproj')), "language folder should not be created"
64
60
  end
65
61
 
66
62
  def test_prints_empty_file_warnings
67
63
  Dir.mkdir File.join @output_dir, 'en.lproj'
68
64
  empty_twine_file = build_twine_file('en') {}
69
65
  new_runner(empty_twine_file).generate_all_localization_files
70
- assert_match "Skipping file at path", Twine::stderr.string
66
+ assert_match "Skipping file at path", Twine::stdout.string
67
+ end
68
+
69
+ def test_does_not_print_empty_file_warnings_if_quite
70
+ Dir.mkdir File.join @output_dir, 'en.lproj'
71
+ empty_twine_file = build_twine_file('en') {}
72
+ new_runner(empty_twine_file, quite: true).generate_all_localization_files
73
+ refute_match "Skipping file at path", Twine::stdout.string
71
74
  end
72
75
  end
73
76
 
74
77
  class TestCreateFolders < TestGenerateAllLocalizationFiles
75
- def new_runner(twine_file = nil)
76
- super(true, twine_file)
78
+ def new_runner(twine_file = nil, options = {})
79
+ super(true, twine_file, options)
77
80
  end
78
81
 
79
82
  def test_creates_output_folder
80
83
  FileUtils.remove_entry_secure @output_dir
81
84
  new_runner.generate_all_localization_files
82
- assert File.exists? @output_dir
85
+ assert File.exist? @output_dir
83
86
  end
84
87
 
85
88
  def test_creates_language_folders
86
89
  new_runner.generate_all_localization_files
87
- assert File.exists?(File.join(@output_dir, 'en.lproj')), "language folder 'en.lproj' should be created"
88
- assert File.exists?(File.join(@output_dir, 'es.lproj')), "language folder 'es.lproj' should be created"
90
+ assert File.exist?(File.join(@output_dir, 'en.lproj')), "language folder 'en.lproj' should be created"
91
+ assert File.exist?(File.join(@output_dir, 'es.lproj')), "language folder 'es.lproj' should be created"
89
92
  end
90
93
 
91
94
  def test_prints_empty_file_warnings
92
95
  empty_twine_file = build_twine_file('en') {}
93
96
  new_runner(empty_twine_file).generate_all_localization_files
94
97
 
95
- assert_match "Skipping file at path", Twine::stderr.string
98
+ assert_match "Skipping file at path", Twine::stdout.string
99
+ end
100
+
101
+ def test_does_not_print_empty_file_warnings_if_quite
102
+ empty_twine_file = build_twine_file('en') {}
103
+ new_runner(empty_twine_file, quite: true).generate_all_localization_files
104
+
105
+ refute_match "Skipping file at path", Twine::stdout.string
96
106
  end
97
107
  end
98
108
 
@@ -1,8 +1,7 @@
1
1
  require 'command_test'
2
2
 
3
3
  class TestGenerateLocalizationArchive < CommandTest
4
- def new_runner(twine_file = nil)
5
- options = {}
4
+ def new_runner(twine_file = nil, options = {})
6
5
  options[:output_path] = @output_path
7
6
  options[:format] = 'apple'
8
7
 
@@ -20,7 +19,7 @@ class TestGenerateLocalizationArchive < CommandTest
20
19
  def test_generates_zip_file
21
20
  new_runner.generate_localization_archive
22
21
 
23
- assert File.exists?(@output_path), "zip file should exist"
22
+ assert File.exist?(@output_path), "zip file should exist"
24
23
  end
25
24
 
26
25
  def test_zip_file_structure
@@ -45,7 +44,13 @@ class TestGenerateLocalizationArchive < CommandTest
45
44
  def test_prints_empty_file_warnings
46
45
  empty_twine_file = build_twine_file('en') {}
47
46
  new_runner(empty_twine_file).generate_localization_archive
48
- assert_match "Skipping file", Twine::stderr.string
47
+ assert_match "Skipping file", Twine::stdout.string
48
+ end
49
+
50
+ def test_does_not_print_empty_file_warnings_if_quite
51
+ empty_twine_file = build_twine_file('en') {}
52
+ new_runner(empty_twine_file, quite: true).generate_localization_archive
53
+ refute_match "Skipping file", Twine::stdout.string
49
54
  end
50
55
 
51
56
  class TestValidate < CommandTest
@@ -79,6 +79,10 @@ class PlaceholderTest < TwineTest
79
79
  to_android("some %d second %2$f")
80
80
  end
81
81
  end
82
+
83
+ def test_complicated_float_placeholders
84
+ assert_equal "%1$.0f%2$s (apparent: %3$.0f)", to_android("%.0f%@ (apparent: %.0f)")
85
+ end
82
86
  end
83
87
 
84
88
  class FromAndroid < PlaceholderTest
@@ -118,4 +122,21 @@ class PlaceholderTest < TwineTest
118
122
  assert_equal "some %@ more %@ text %@", from_flash("some {0} more {1} text {2}")
119
123
  end
120
124
  end
125
+
126
+ class PythonPlaceholder < PlaceholderTest
127
+ def test_negative_for_regular_placeholders
128
+ assert_equal false, Twine::Placeholders.contains_python_specific_placeholder(placeholder)
129
+ end
130
+
131
+ def test_positive_for_named_placeholders
132
+ inputs = [
133
+ "%(language)s has",
134
+ "For %(number)03d quotes",
135
+ "bought on %(app_name)s"
136
+ ]
137
+ inputs.each do |input|
138
+ assert_equal true, Twine::Placeholders.contains_python_specific_placeholder(input)
139
+ end
140
+ end
141
+ end
121
142
  end
@@ -58,4 +58,12 @@ class TestValidateTwineFile < CommandTest
58
58
  Twine::Runner.new(@options.merge(pedantic: true), @twine_file).validate_twine_file
59
59
  end
60
60
  end
61
+
62
+ def test_reports_python_specific_placeholders
63
+ random_definition.translations["en"] = "%(python_only)s"
64
+
65
+ assert_raises Twine::Error do
66
+ Twine::Runner.new(@options, @twine_file).validate_twine_file
67
+ end
68
+ end
61
69
  end
@@ -1,6 +1,6 @@
1
1
  require 'erb'
2
2
  require 'minitest/autorun'
3
- require "mocha/mini_test"
3
+ require "mocha/minitest"
4
4
  require 'securerandom'
5
5
  require 'stringio'
6
6
  require 'twine'
@@ -23,7 +23,7 @@ class TwineTest < Minitest::Test
23
23
  end
24
24
 
25
25
  def teardown
26
- FileUtils.remove_entry_secure @output_dir if File.exists? @output_dir
26
+ FileUtils.remove_entry_secure @output_dir if File.exist? @output_dir
27
27
  Twine::Formatters.formatters.clear
28
28
  Twine::Formatters.formatters.concat @formatters
29
29
  super
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twine
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: '1.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Celis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-20 00:00:00.000000000 Z
11
+ date: 2020-07-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.1'
19
+ version: '2.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.1'
26
+ version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: safe_yaml
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '10.4'
47
+ version: '13.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '10.4'
54
+ version: '13.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: minitest
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -138,6 +138,7 @@ files:
138
138
  - test/fixtures/formatter_django.po
139
139
  - test/fixtures/formatter_flash.properties
140
140
  - test/fixtures/formatter_gettext.po
141
+ - test/fixtures/formatter_gettext_quotes.po
141
142
  - test/fixtures/formatter_jquery.json
142
143
  - test/fixtures/formatter_tizen.xml
143
144
  - test/fixtures/gettext_multiline.po
@@ -157,7 +158,7 @@ files:
157
158
  - test/test_validate_twine_file.rb
158
159
  - test/twine_file_dsl.rb
159
160
  - test/twine_test.rb
160
- homepage: https://github.com/mobiata/twine
161
+ homepage: https://github.com/scelis/twine
161
162
  licenses:
162
163
  - BSD-3-Clause
163
164
  metadata: {}
@@ -169,29 +170,28 @@ required_ruby_version: !ruby/object:Gem::Requirement
169
170
  requirements:
170
171
  - - ">="
171
172
  - !ruby/object:Gem::Version
172
- version: '2.0'
173
+ version: '2.4'
173
174
  required_rubygems_version: !ruby/object:Gem::Requirement
174
175
  requirements:
175
176
  - - ">="
176
177
  - !ruby/object:Gem::Version
177
178
  version: '0'
178
179
  requirements: []
179
- rubyforge_project:
180
- rubygems_version: 2.5.2
180
+ rubygems_version: 3.1.2
181
181
  signing_key:
182
182
  specification_version: 4
183
183
  summary: Manage strings and their translations for your iOS, Android and other projects.
184
184
  test_files:
185
+ - test/test_formatters.rb
186
+ - test/test_output_processor.rb
187
+ - test/test_consume_localization_file.rb
188
+ - test/test_consume_localization_archive.rb
185
189
  - test/test_abstract_formatter.rb
186
190
  - test/test_cli.rb
187
- - test/test_consume_localization_archive.rb
188
- - test/test_consume_localization_file.rb
189
- - test/test_formatters.rb
191
+ - test/test_twine_file.rb
192
+ - test/test_generate_localization_file.rb
190
193
  - test/test_generate_all_localization_files.rb
191
194
  - test/test_generate_localization_archive.rb
192
- - test/test_generate_localization_file.rb
193
- - test/test_output_processor.rb
194
- - test/test_placeholders.rb
195
195
  - test/test_twine_definition.rb
196
- - test/test_twine_file.rb
196
+ - test/test_placeholders.rb
197
197
  - test/test_validate_twine_file.rb