twine 1.0.3 → 1.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
@@ -122,4 +122,21 @@ class PlaceholderTest < TwineTest
122
122
  assert_equal "some %@ more %@ text %@", from_flash("some {0} more {1} text {2}")
123
123
  end
124
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
125
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,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twine
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.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-26 00:00:00.000000000 Z
11
+ date: 2021-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
15
15
  requirement: !ruby/object:Gem::Requirement
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
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
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
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '5.5'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '5.5'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: minitest-ci
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '3.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '3.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: mocha
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: '1.1'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '1.1'
97
97
  description: |2
@@ -105,59 +105,60 @@ extensions: []
105
105
  extra_rdoc_files: []
106
106
  files:
107
107
  - Gemfile
108
- - README.md
109
108
  - LICENSE
109
+ - README.md
110
+ - bin/twine
110
111
  - lib/twine.rb
111
- - lib/twine/placeholders.rb
112
- - lib/twine/plugin.rb
112
+ - lib/twine/cli.rb
113
+ - lib/twine/encoding.rb
114
+ - lib/twine/formatters.rb
115
+ - lib/twine/formatters/abstract.rb
116
+ - lib/twine/formatters/android.rb
113
117
  - lib/twine/formatters/apple.rb
114
- - lib/twine/formatters/jquery.rb
118
+ - lib/twine/formatters/django.rb
115
119
  - lib/twine/formatters/flash.rb
116
- - lib/twine/formatters/android.rb
117
- - lib/twine/formatters/tizen.rb
118
120
  - lib/twine/formatters/gettext.rb
119
- - lib/twine/formatters/django.rb
120
- - lib/twine/formatters/abstract.rb
121
- - lib/twine/cli.rb
122
- - lib/twine/twine_file.rb
123
- - lib/twine/encoding.rb
121
+ - lib/twine/formatters/jquery.rb
122
+ - lib/twine/formatters/tizen.rb
124
123
  - lib/twine/output_processor.rb
125
- - lib/twine/version.rb
126
- - lib/twine/formatters.rb
124
+ - lib/twine/placeholders.rb
125
+ - lib/twine/plugin.rb
127
126
  - lib/twine/runner.rb
128
- - bin/twine
129
- - test/test_formatters.rb
130
- - test/test_output_processor.rb
131
- - test/test_consume_localization_file.rb
132
- - test/test_consume_localization_archive.rb
133
- - test/test_abstract_formatter.rb
134
- - test/test_cli.rb
135
- - test/test_twine_file.rb
136
- - test/test_generate_localization_file.rb
137
- - test/test_generate_all_localization_files.rb
138
- - test/twine_test.rb
139
- - test/test_generate_localization_archive.rb
127
+ - lib/twine/twine_file.rb
128
+ - lib/twine/version.rb
140
129
  - test/command_test.rb
141
- - test/twine_file_dsl.rb
142
- - test/test_twine_definition.rb
143
- - test/fixtures/formatter_apple.strings
130
+ - test/fixtures/consume_localization_archive.zip
131
+ - test/fixtures/enc_utf16be.dummy
144
132
  - test/fixtures/enc_utf16be_bom.dummy
145
- - test/fixtures/gettext_multiline.po
133
+ - test/fixtures/enc_utf16le.dummy
134
+ - test/fixtures/enc_utf16le_bom.dummy
146
135
  - test/fixtures/enc_utf8.dummy
147
136
  - test/fixtures/formatter_android.xml
148
- - test/fixtures/consume_localization_archive.zip
149
- - test/fixtures/twine_accent_values.txt
150
- - test/fixtures/enc_utf16be.dummy
137
+ - test/fixtures/formatter_apple.strings
151
138
  - test/fixtures/formatter_django.po
152
- - test/fixtures/enc_utf16le.dummy
153
- - test/fixtures/formatter_tizen.xml
154
- - test/fixtures/formatter_jquery.json
155
- - test/fixtures/formatter_gettext.po
156
139
  - test/fixtures/formatter_flash.properties
157
- - test/fixtures/enc_utf16le_bom.dummy
140
+ - test/fixtures/formatter_gettext.po
141
+ - test/fixtures/formatter_gettext_quotes.po
142
+ - test/fixtures/formatter_jquery.json
143
+ - test/fixtures/formatter_tizen.xml
144
+ - test/fixtures/gettext_multiline.po
145
+ - test/fixtures/twine_accent_values.txt
146
+ - test/test_abstract_formatter.rb
147
+ - test/test_cli.rb
148
+ - test/test_consume_localization_archive.rb
149
+ - test/test_consume_localization_file.rb
150
+ - test/test_formatters.rb
151
+ - test/test_generate_all_localization_files.rb
152
+ - test/test_generate_localization_archive.rb
153
+ - test/test_generate_localization_file.rb
154
+ - test/test_output_processor.rb
158
155
  - test/test_placeholders.rb
156
+ - test/test_twine_definition.rb
157
+ - test/test_twine_file.rb
159
158
  - test/test_validate_twine_file.rb
160
- homepage: https://github.com/mobiata/twine
159
+ - test/twine_file_dsl.rb
160
+ - test/twine_test.rb
161
+ homepage: https://github.com/scelis/twine
161
162
  licenses:
162
163
  - BSD-3-Clause
163
164
  metadata: {}
@@ -167,17 +168,16 @@ require_paths:
167
168
  - lib
168
169
  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.0.14.1
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.