twine 1.0.2 → 1.1

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.
@@ -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