SurfCustomCalabash 1.0.0 → 1.1.0

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
  SHA256:
3
- metadata.gz: 10324a3851f0d2c8a774575861c3489d6519d9a6fed70ac48244565ed9c03da6
4
- data.tar.gz: 70572d7c07b601e2407cc9cf8e0d3317a680b919afb56faca9be2d3cb9f68f04
3
+ metadata.gz: 642a2175dd5be63af09865c3e401256600b92e24e9d81b7acebb6a3431356c5f
4
+ data.tar.gz: cb0842d72f0a04b435f422b928869cbaa84aca0a14db4ea028e4c07d88b9bfb2
5
5
  SHA512:
6
- metadata.gz: 4092df2ff8c18a451ad3e0132accbb3eae2c66ee24526e43d7c0adfa51f17e47234f8573999d248df0de0eb24a91f264fed8cd1310a8784309e44eb5776bdc57
7
- data.tar.gz: 89d7c2269fd6aa04b72eb58ace406dad941a2dcaf2ae84559729802ff1ea65e65e39db5d1902577e70df131b35f5e4e13f8abdebfe3b2054e798caa336eac22d
6
+ metadata.gz: adfc4a77d09b27c5b2abd6094a49981763d9cd4dae2c033fd6602936d9ba3953e260424665511ed61b1b4dd152674c898ebea1bfb262ee45583797c39bfab31c
7
+ data.tar.gz: 35c47618c702ccc856c0bc5dcfe8e5a8ffaaf259609dd6e8ff758dde008f33a116814c91bab2ea2e6db8dc6fdd0bcf8018d0f5d34d111844f810e557e8e257d6
@@ -1,6 +1,13 @@
1
1
  # Change Log
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+ ## v1.1.0 - 08.10.2020
5
+ ### Added
6
+ - File **files_for_update** with a list of files required for updating in your project with autotests. For update your project use **SurfCustomCalabash update**
7
+
8
+ ### Changed
9
+ - In command **SurfCustomCalabash gen** you can immediately enter the name of the folder with your tests
10
+
4
11
 
5
12
  ## v1.0.0 - 28.08.2020
6
13
  ### Added
data/Gemfile CHANGED
@@ -6,4 +6,5 @@ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
6
6
  gemspec
7
7
 
8
8
  gem 'calabash-android'
9
- gem 'rspec/expectations'
9
+ gem 'rspec/expectations'
10
+ gem 'diffy'
data/README.md CHANGED
@@ -34,8 +34,7 @@ Install gem in your exist project, add in your ios or android ruby files.
34
34
  **CommonMethods** contains different methods (taps, swipes, waits and other) for both platforms.
35
35
 
36
36
  ### Create new project
37
- You should move to the directory which would contains folder with your tests.
38
- surf-calabash will create it by itself with the name **Change_it_to_your_own_project_name**:
37
+ You should move to the directory which would contains folder with your tests and execute command and then enter folder name
39
38
 
40
39
  $ SurfCustomCalabash gen
41
40
 
@@ -92,4 +91,10 @@ Also it shows some integration with Xray Jira plugin.
92
91
 
93
92
  Shell script for useful launch all helpful scripts of folder above.
94
93
 
95
-
94
+ ### Update infrastructure files
95
+
96
+ To check the relevance of the infrastructure files of your project with autotests, execute command:
97
+
98
+ $ SurfCustomCalabash update
99
+
100
+ If your project has files that are not up-to-date, you will be prompted to update them all or only those you need.
@@ -12,9 +12,10 @@ end
12
12
 
13
13
  require File.join(File.dirname(__FILE__), "surf-calabash-helpers")
14
14
 
15
- @hierarchy = File.join(FileUtils.pwd, "Change_it_to_your_own_project_name")
15
+ @hierarchy = File.join(FileUtils.pwd, "features")
16
16
  @source_dir = File.join(File.dirname(__FILE__), '..', 'sources')
17
17
 
18
+
18
19
  if ARGV.length == 0
19
20
  print_usage
20
21
  else
@@ -47,6 +48,14 @@ else
47
48
  when 'version'
48
49
  require_relative '../lib/SurfCustomCalabash/version'
49
50
  Kernel.puts SurfCustomCalabash::VERSION
51
+ when 'update'
52
+ require File.join(File.dirname(__FILE__), "update_files")
53
+ if File.exists?(@hierarchy)
54
+ show_files_for_update
55
+ else
56
+ Kernel.puts("В текущей папке нет файлов автотестов, перейдите в нужную папку или создайте новый проект используя команду:")
57
+ Kernel.puts("SurfCustomCalabash gen")
58
+ end
50
59
  else
51
60
  Kernel.puts "Invalid command '#{cmd}'"
52
61
  print_usage
@@ -0,0 +1,7 @@
1
+ /sources/features/android/support
2
+ /sources/features/ios/support
3
+ /sources/features/net/screentest_api.rb
4
+ /sources/Scripts
5
+ /sources/find_id.rb
6
+ /sources/group_steps.rb
7
+ /sources/start.sh
@@ -5,12 +5,14 @@ def surf_gen
5
5
  end
6
6
  msg("Question") do
7
7
  Kernel.puts "I'm about to create a subdirectory called sources."
8
- Kernel.puts "Please change name of it to name of your own project."
9
8
  Kernel.puts "Please hit return to confirm that's what you want."
10
9
  end
11
10
  exit 2 unless STDIN.gets.chomp == ''
12
11
 
13
- FileUtils.cp_r(@source_dir, @hierarchy)
12
+ Kernel.puts("Please enter name autotest project:")
13
+ file_name = gets.chomp
14
+ file_name = "Change_it_to_your_own_project_name" if file_name == ""
15
+ FileUtils.cp_r(@source_dir, File.join(FileUtils.pwd, file_name))
14
16
  msg("Info") do
15
17
  Kernel.puts "hierarchy was created. \n"
16
18
  end
@@ -16,6 +16,8 @@ def print_usage
16
16
  prints more detailed help information.
17
17
  gen
18
18
  generate a features folder structure.
19
+ update
20
+ update infrastructure files in your project
19
21
  version
20
22
  prints the gem version
21
23
 
@@ -0,0 +1,202 @@
1
+ require 'fileutils'
2
+ require 'diffy'
3
+
4
+ # for compare files use gem diffy https://github.com/samg/diffy
5
+
6
+ CUR_FOLDER = FileUtils.pwd
7
+
8
+ GEM_FOLDER = File.dirname(__FILE__)
9
+
10
+ # list files for update
11
+ FILES_FOR_UPDATE = File.join(GEM_FOLDER, 'files_for_update')
12
+
13
+ # path to data file
14
+ DATA_FILE = "/Scripts/data"
15
+
16
+ # read from file, files that need update
17
+ def read_file_to_arr(path_to_file)
18
+ arr_lines = Array.new
19
+ text = File.open(path_to_file).read
20
+ text.each_line do |line|
21
+ line.gsub!(/\n/, "")
22
+ arr_lines.push(line)
23
+ end
24
+ return arr_lines
25
+ end
26
+
27
+ # get list files from sourcec folder in gem
28
+ def get_list_files_for_update
29
+ list_files = read_file_to_arr(FILES_FOR_UPDATE)
30
+ all_files = Array.new
31
+
32
+ list_files.each do |name|
33
+ path = File.join(GEM_FOLDER, '..', name)
34
+ if File.file?(path)
35
+ all_files.push(path)
36
+ elsif File.directory?(path)
37
+ Dir["#{path}/*"].each {|pth| all_files.push(pth)}
38
+ end
39
+ end
40
+
41
+ return all_files
42
+ end
43
+
44
+ # trim folder sources from path
45
+ def get_list_for_search
46
+ all_files = get_list_files_for_update
47
+
48
+ all_files.each do |name|
49
+ name.sub! /.*sources/, ''
50
+ end
51
+
52
+ return all_files
53
+ end
54
+
55
+ # search files, then not exist in autotest folder
56
+ def search_not_exists_files
57
+ not_exists_files = Array.new
58
+ get_list_for_search.each do |name|
59
+ not_exists_files.push(name) unless File.file?(CUR_FOLDER + name)
60
+ end
61
+
62
+ return not_exists_files
63
+ end
64
+
65
+ # search files, then exist in autotest folder
66
+ def search_exists_files
67
+ exists_files = Array.new
68
+ get_list_for_search.each do |name|
69
+ exists_files.push(name) if File.file?(CUR_FOLDER + name)
70
+ end
71
+
72
+ # exclude file data from list, then to don't erase user data
73
+ exclude_str_from_arr(exists_files, DATA_FILE)
74
+ return exists_files
75
+ end
76
+
77
+ # copy files from gem to autotest folder
78
+ def copy_files(list_for_copy)
79
+ list_for_copy.each do |name|
80
+ FileUtils.mkdir_p File.dirname(CUR_FOLDER + name)
81
+ FileUtils.cp(File.join(GEM_FOLDER, '../sources', name), File.dirname(CUR_FOLDER + name))
82
+ end
83
+ end
84
+
85
+ # add ccs style in html-report for readability
86
+ def add_css_style(file)
87
+ file.puts("<style>")
88
+ file.puts(Diffy::CSS)
89
+ file.puts("</style>")
90
+ end
91
+
92
+ # compare files from gem and autotest folder
93
+ # the result would be html file with differences in compare folder
94
+ def compare_files
95
+ need_copy = Array.new
96
+ FileUtils.rm_rf(Dir[File.join(CUR_FOLDER, '/compare/*')])
97
+ search_exists_files.each do |name|
98
+ compare_result = Diffy::Diff.new(File.dirname(CUR_FOLDER + name), File.join(GEM_FOLDER, '../sources', name), :source => 'files', :format => :html)
99
+ unless compare_result.to_s(:text).empty?
100
+ need_copy.push(name)
101
+ FileUtils.mkdir_p 'compare'
102
+ File.open(File.join(CUR_FOLDER, '/compare/', "#{File.basename(name, ".*")}.html"), "w:UTF-8") do |file|
103
+ add_css_style(file)
104
+ file.puts(compare_result.to_s(:html))
105
+ end
106
+ end
107
+ end
108
+
109
+ return need_copy
110
+ end
111
+
112
+ # delete from array element match str_name
113
+ def exclude_str_from_arr(input_arr, str_name)
114
+ result_arr = input_arr
115
+ need_del = result_arr.select { |el| el.include? str_name}
116
+ need_del.each do |value|
117
+ result_arr.delete(value)
118
+ end
119
+ end
120
+
121
+ # show files, then don't exixst in autotest folder
122
+ def show_files_ready_for_copy
123
+ unless search_not_exists_files.empty?
124
+ Kernel.puts("Файлы которых нет в текущей папке с автотестами и они будут добавлены:")
125
+ Kernel.puts search_not_exists_files
126
+ Kernel.puts("\n")
127
+ end
128
+ end
129
+
130
+ # exclude files from list, then don't need update
131
+ def excludes_files_for_update(input_arr, list_files)
132
+ all_files = list_files.split(/,\s*/)
133
+ list_files_for_update = input_arr
134
+ all_files.each do |name|
135
+ exclude_str_from_arr(list_files_for_update, name)
136
+ end
137
+
138
+ return list_files_for_update
139
+ end
140
+
141
+ # show files, then need update and update them
142
+ def show_files_for_update
143
+ Kernel.puts("\n")
144
+
145
+ new_files = search_not_exists_files
146
+ exist_files = compare_files
147
+
148
+ if !new_files.empty? && exist_files.empty?
149
+ show_files_ready_for_copy
150
+ Kernel.puts("Скопировать все файлы? (y/n)")
151
+ answer = gets
152
+
153
+ if answer == "y\n"|| answer == "\n"
154
+ copy_files(new_files)
155
+ Kernel.puts("Файлы успешно добавлены!")
156
+ end
157
+ elsif !exist_files.empty?
158
+ show_files_ready_for_copy
159
+ Kernel.puts("Файлы которые уже есть в текущей папки с автотестами, но требуют обновления:")
160
+ Kernel.puts exist_files
161
+ Kernel.puts("\n")
162
+ Kernel.puts("Все изменения в указанных файлах можно посмотреть в папке compare")
163
+ Kernel.puts("Для каждого файла создан html-отчет с отображением изменений")
164
+ Kernel.puts("\n")
165
+ Kernel.puts("Скопировать все файлы или исключить некоторые файлы из обновления?")
166
+ Kernel.puts("1 - Скопировать все файлы")
167
+ Kernel.puts("2 - Исключить файлы из обновления")
168
+ answer = gets.chomp
169
+
170
+ if answer == "1"
171
+ copy_files(new_files)
172
+ copy_files(exist_files)
173
+ Kernel.puts("Файлы успешно добавлены!")
174
+ elsif answer == "2"
175
+ Kernel.puts("Введите в одной строке через запятую имена файлов, которые надо исключить из обновления:")
176
+ file_names = gets.chomp
177
+ files_for_update = excludes_files_for_update(exist_files,file_names)
178
+
179
+ if !files_for_update.empty? || !new_files.empty?
180
+ Kernel.puts("Список файлов для обновления:")
181
+ Kernel.puts files_for_update
182
+ Kernel.puts new_files
183
+ Kernel.puts("Скопировать все файлы? (y/n)")
184
+ answer = gets
185
+
186
+ if answer == "y\n"|| answer == "\n"
187
+ copy_files(new_files)
188
+ copy_files(files_for_update)
189
+ Kernel.puts("Файлы успешно добавлены!")
190
+ end
191
+ else
192
+ Kernel.puts("Нет файлов для обновлений!")
193
+ end
194
+ end
195
+ end
196
+
197
+ if new_files.empty? && compare_files.empty?
198
+ Kernel.puts("В текущей папке все инфраструктурные файлы актуальны!")
199
+ end
200
+
201
+ Kernel.puts("\n")
202
+ end
@@ -1,3 +1,3 @@
1
1
  module SurfCustomCalabash
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: SurfCustomCalabash
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexey Hripunov
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-09-15 00:00:00.000000000 Z
12
+ date: 2020-10-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -71,9 +71,11 @@ files:
71
71
  - Rakefile
72
72
  - SurfCustomCalabash.gemspec
73
73
  - bin/SurfCustomCalabash
74
+ - bin/files_for_update
74
75
  - bin/surf-calabash-console.rb
75
76
  - bin/surf-calabash-gen.rb
76
77
  - bin/surf-calabash-helpers.rb
78
+ - bin/update_files.rb
77
79
  - lib/SurfCustomCalabash.rb
78
80
  - lib/SurfCustomCalabash/CommonMethods.rb
79
81
  - lib/SurfCustomCalabash/DroidMethods.rb