diff --git a/Rakefile b/Rakefile index 082c455e9ca62..5c15de17e3b1b 100644 --- a/Rakefile +++ b/Rakefile @@ -1,9 +1,8 @@ # -*- mode: ruby -*- -$LOAD_PATH.unshift File.expand_path(".") +$LOAD_PATH.unshift File.expand_path('.') require 'rake' -require 'rake_tasks/files' require 'net/telnet' require 'stringio' require 'fileutils' @@ -11,7 +10,7 @@ require 'open-uri' include Rake::DSL -Rake.application.instance_variable_set "@name", "go" +Rake.application.instance_variable_set(:@name, 'go') orig_verbose = verbose verbose(false) @@ -29,7 +28,7 @@ require 'rake_tasks/crazy_fun/mappings/ruby' # Location of all new methods require 'rake_tasks/selenium_rake/checks' -require 'rake_tasks/selenium_rake/ie_code_generator' +require 'rake_tasks/selenium_rake/ie_generator' require 'rake_tasks/selenium_rake/java_formatter' require 'rake_tasks/selenium_rake/cpp_formatter' require 'rake_tasks/selenium_rake/type_definitions_generator' @@ -38,7 +37,6 @@ require 'rake_tasks/selenium_rake/type_definitions_generator' # These are the final items mixed into the global NS require 'rake_tasks/bazel' require 'rake_tasks/copyright' -require 'rake_tasks/files' require 'rake_tasks/python' # Our modifications to the Rake library @@ -89,7 +87,7 @@ crazy_fun.create_tasks(Dir["rb/**/build.desc"]) # If it looks like a bazel target, build it with bazel rule /\/\/.*/ do |task| - task.out = Bazel.execute("build", ["--workspace_status_command", "scripts/build-info.py"], task.name) + task.out = Bazel.execute('build', %w(--workspace_status_command scripts/build-info.py), task.name) end # Spoof tasks to get CI working with bazel @@ -281,17 +279,17 @@ ie_generator = SeleniumRake::IEGenerator.new # Generate a C++ Header file for mapping between magic numbers and #defines # in the C++ code. -ie_generator.ie_generate_type_mapping( - :name => "ie_result_type_cpp", - :src => "cpp/iedriver/result_types.txt", - :type => "cpp", - :out => "cpp/iedriver/IEReturnTypes.h" +ie_generator.generate_type_mapping( + name: 'ie_result_type_cpp', + src: 'cpp/iedriver/result_types.txt', + type: 'cpp', + out: 'cpp/iedriver/IEReturnTypes.h' ) task :javadocs => [:common, :firefox, :ie, :remote, :support, :chrome, :selenium] do - rm_rf "build/javadoc" - mkdir_p "build/javadoc" - sourcepath = "" + rm_rf 'build/javadoc' + mkdir_p 'build/javadoc' + sourcepath = '' classpath = '.' Dir["third_party/java/*/*.jar"].each do |jar| classpath << ":" + jar unless jar.to_s =~ /.*-src.*\.jar/ @@ -622,7 +620,7 @@ namespace :py do end %w[chrome ff marionette ie edge blackberry remote_firefox safari].each do |browser| - browser_data = SeleniumRake::Browsers::BROWSERS[browser][:python] + browser_data = SeleniumRake::Browsers::BROWSERS[browser] deps = browser_data[:deps] || [] deps += [:prep] driver = browser_data[:driver] diff --git a/rake_tasks/crazy_fun/mappings/export.rb b/rake_tasks/crazy_fun/mappings/export.rb index d53b48721fefa..ad83b48bfb6a4 100644 --- a/rake_tasks/crazy_fun/mappings/export.rb +++ b/rake_tasks/crazy_fun/mappings/export.rb @@ -2,6 +2,4 @@ require_relative 'export_mappings' require_relative 'export/check_preconditions' -require_relative 'export/export_tasks' -require_relative 'export/create_task' require_relative 'export/add_dependencies' diff --git a/rake_tasks/crazy_fun/mappings/export/add_dependencies.rb b/rake_tasks/crazy_fun/mappings/export/add_dependencies.rb index b419ef38c70b2..9ec760e3cda97 100644 --- a/rake_tasks/crazy_fun/mappings/export/add_dependencies.rb +++ b/rake_tasks/crazy_fun/mappings/export/add_dependencies.rb @@ -1,5 +1,5 @@ module Export - class AddDependencies < ExportTasks + class AddDependencies def handle(_fun, dir, args) to_export = dir + "/" + args[:srcs][0] name = export_name(dir, args[:name], File.extname(to_export)) diff --git a/rake_tasks/crazy_fun/mappings/export/create_task.rb b/rake_tasks/crazy_fun/mappings/export/create_task.rb deleted file mode 100644 index 5f990e2fea95c..0000000000000 --- a/rake_tasks/crazy_fun/mappings/export/create_task.rb +++ /dev/null @@ -1,19 +0,0 @@ -module Export - class CreateTask < ExportTasks - def handle(_fun, dir, args) - to_export = dir + "/" + args[:srcs][0] - - name = export_name(dir, args[:name], File.extname(to_export)) - file name => to_export do - src = Platform.path_for "#{dir}/#{args[:srcs][0]}" - mkdir_p File.dirname(name) - cp_r src, name - end - - task_name = task_name(dir, args[:name]) - task task_name => name - task "#{task_name}#{File.extname(to_export)}" => task_name - Rake::Task[task_name].out = name - end - end -end diff --git a/rake_tasks/crazy_fun/mappings/export/export_tasks.rb b/rake_tasks/crazy_fun/mappings/export/export_tasks.rb deleted file mode 100644 index fa18f766c4d9b..0000000000000 --- a/rake_tasks/crazy_fun/mappings/export/export_tasks.rb +++ /dev/null @@ -1,11 +0,0 @@ -module Export - class ExportTasks < Tasks - def export_name(dir, name, extension) - name = task_name(dir, name) - name = "build/" + (name.slice(2 ... name.length)) - name = name.sub(":", "/") - name += extension - Platform.path_for name - end - end -end diff --git a/rake_tasks/crazy_fun/mappings/gcc.rb b/rake_tasks/crazy_fun/mappings/gcc.rb index 2a518badbf439..9b9be43e498fd 100644 --- a/rake_tasks/crazy_fun/mappings/gcc.rb +++ b/rake_tasks/crazy_fun/mappings/gcc.rb @@ -79,6 +79,37 @@ def gccbuild_c(src_file, obj_dir, args, is_32_bit) end true end + + private + + def copy_prebuilt(prebuilt, out) + dir = out.split('/')[0..-2].join('/') + + if prebuilt.nil? + mkdir_p dir + File.open(out, 'w') { |f| f.write('') } + elsif File.directory? prebuilt + from = "#{prebuilt}/#{out}".sub(/\/build\//, '/') + + if File.exist?(from) + puts "Falling back to copy of: #{from}" + mkdir_p dir + if File.directory? from + cp_r "#{from}/.", out + else + cp_r from, out + end + else + puts "Unable to locate prebuilt copy of #{out}" + end + elsif File.exist?(prebuilt) + puts "Falling back to copy of: #{prebuilt}" + mkdir_p dir + cp prebuilt, out + else + puts "Unable to locate prebuilt copy of #{out}" + end + end end class CheckPreconditions diff --git a/rake_tasks/crazy_fun/mappings/javascript.rb b/rake_tasks/crazy_fun/mappings/javascript.rb index 1f3aeac1e01b6..48b4613897423 100644 --- a/rake_tasks/crazy_fun/mappings/javascript.rb +++ b/rake_tasks/crazy_fun/mappings/javascript.rb @@ -208,7 +208,6 @@ def initialize() def parse_deps(file) file = File.expand_path(file) - # Check the global cache if we've already parsed this file. if @@DEPS_FILES[file] @@DEPS_FILES[file].each do |info| info.provides.each{|p| record_provider(p, info)} @@ -241,7 +240,6 @@ def parse_deps(file) def parse_file(file) file = File.expand_path(file) - # Check the global cache if we've already parsed this file. if @@FILES[file] info = @files[file] = @@FILES[file] info.provides.each{|p| record_provider(p, info)} @@ -365,15 +363,6 @@ def record_provider(symbol, info) end class BaseJs < Tasks - def js_name(dir, name) - name = task_name(dir, name) - js = "build/" + (name.slice(2 ... name.length)) - js = js.sub(":", "/") - js << ".js" - - Platform.path_for js - end - def build_deps(ignore, task, deps) prereqs = task.prerequisites prereqs.each do |p| @@ -404,8 +393,6 @@ def calc_deps(src_files, js_files) Array(js_files).each {|f| deps.parse_file(f)} deps.calc_deps(src_files).uniq end - - private end class CheckPreconditions @@ -479,15 +466,6 @@ def handle(fun, dir, args) end class CreateLibrary < BaseJs - def manifest_name(dir, name) - name = task_name(dir, name) - mf = "build/" + (name.slice(2 ... name.length)) - mf = mf.sub(":", "/") - mf << ".mf" - - Platform.path_for mf - end - def handle(fun, dir, args) manifest = manifest_name(dir, args[:name]) task_name = task_name(dir, args[:name]) @@ -667,10 +645,6 @@ def collect_module_info(dir, modules) info end - #modules.sort! do |x, y| - # x[:deps].count <=> y[:deps].count - #end - # result_list = [] seen_list = [] modules.each do |info| @@ -685,64 +659,6 @@ def collect_module_info(dir, modules) result_list[0][:module_deps].empty? result_list end - - def handle(fun, dir, args) - check_preconditions(args) - declare_task(dir, args) - - task_name = task_name(dir, args[:name]) - task task_name do - folder = "build/#{dir}/#{args[:name]}" - - puts "Preparing: #{task_name} as #{folder}" - - module_info = collect_module_info(dir, args[:modules]) - srcs = (args[:srcs] || []).collect do |src| - File.expand_path(File.join(dir, src)) - end - deps = [] - module_info.each do |info| - srcs.concat(info[:srcs]) - deps.concat(info[:deps]) - end - srcs.uniq! - deps.uniq! - - js_files = calc_deps(srcs, deps) - - flags = args[:flags] || [] - flags.push("--module_output_path_prefix='#{folder}/#{args[:name]}_'") - - num_files = 0 - module_info.each do |info| - indices = info[:srcs].collect do |src| - js_files.index(src) - end - module_file_count = (indices.max + 1) - num_files - module_deps = info[:module_deps].collect do |dep| - @@MODULE_INFO[dep][:name] - end - module_deps = module_deps.empty? ? "" : ":#{module_deps.join(",")}" - flags.push("--module=#{info[:name]}:#{module_file_count}#{module_deps}") - num_files += module_file_count - end - - js_files.each do |file| - flags.push("--js=\"#{file}\"") - end - - (args[:externs] || []).each do |file| - flags.push("--externs=\"#{File.expand_path(File.join(dir, file))}\"") - end - - mkdir_p Platform.path_for folder - - cmd = "java -cp third_party/closure/bin/compiler.jar com.google.javascript.jscomp.CommandLineRunner " << - flags.join(" ") - - sh cmd - end - end end class BaseCompileFragment < BaseJs diff --git a/rake_tasks/crazy_fun/mappings/python/py_task.rb b/rake_tasks/crazy_fun/mappings/python/py_task.rb index 5894248ff8552..51e270d043d54 100644 --- a/rake_tasks/crazy_fun/mappings/python/py_task.rb +++ b/rake_tasks/crazy_fun/mappings/python/py_task.rb @@ -1,11 +1,9 @@ module Python class PyTask < Tasks - def get_resources(browser, args) + def get_resources(_browser, args) resources = [] resources.concat(args[:resources]) if args[:resources] - browser_specific_resources = SeleniumRake::Browsers::BROWSERS[browser][:python][:resources] - resources.concat(browser_specific_resources) if browser_specific_resources - return resources + resources end end end diff --git a/rake_tasks/crazy_fun/mappings/python/run_tests.rb b/rake_tasks/crazy_fun/mappings/python/run_tests.rb index 3ba3838b08f6b..1fe375415a4ad 100644 --- a/rake_tasks/crazy_fun/mappings/python/run_tests.rb +++ b/rake_tasks/crazy_fun/mappings/python/run_tests.rb @@ -7,7 +7,7 @@ def handle(fun, dir, args) drivers = [] browsers.each do |browser| - browser_data = SeleniumRake::Browsers::BROWSERS[browser][:python] + browser_data = SeleniumRake::Browsers::BROWSERS[browser] deps += browser_data[:deps] if browser_data[:deps] drivers += [browser_data[:driver]] if browser_data[:driver] end diff --git a/rake_tasks/crazy_fun/mappings/tasks.rb b/rake_tasks/crazy_fun/mappings/tasks.rb index bc8fbd9fd03d0..1734095c25ace 100644 --- a/rake_tasks/crazy_fun/mappings/tasks.rb +++ b/rake_tasks/crazy_fun/mappings/tasks.rb @@ -86,34 +86,6 @@ def copy_resources(dir, to_copy, out_dir) end end - def copy_to_prebuilt(out, fun) - prebuilt = fun.find_prebuilt(out) - puts "Copying #{out} to prebuilt #{prebuilt}" - cp out, prebuilt - end - - def copy_prebuilt(fun, out) - src = fun.find_prebuilt(out) || raise("unable to find prebuilt for #{out.inspect}") - - mkdir_p File.dirname(out) - puts "Falling back to #{src}" - cp src, out - end - - def copy_all(dir, srcs, dest) - if srcs.is_a? Array - copy_array(dir, srcs, dest) - elsif srcs.is_a? String - copy_string(dir, srcs, dest) - elsif srcs.is_a? Hash - copy_hash(dir, srcs, dest) - elsif srcs.is_a? Symbol - copy_symbol(dir, srcs, dest) - else - raise StandardError, "Undetermined type: #{srcs.class}" - end - end - def zip(src, dest) out = SeleniumRake::Checks.path_for(File.expand_path(dest)) Dir.chdir(src) { @@ -124,14 +96,31 @@ def zip(src, dest) } end - def to_filelist(dir, src) - str = dir + "/" + src - FileList[str].collect do |file| - SeleniumRake::Checks.path_for(file) + private + + def find_file(file) + puts "Copying #{file}" if $DEBUG + + if Rake::Task.task_defined?(file) && Rake::Task[file].out + # Grab the "out" of the task represented by this symbol + file = Rake::Task[file].out.to_s end - end - private + if File.exist?(file) + file + elsif File.exist?("build/#{file}") + "build/#{file}" + else + fl = FileList.new(file).existing! + return fl unless fl.empty? + + fl = FileList.new("build/#{file}").existing! + return fl unless fl.empty? + + puts "Unable to locate #{file}" + exit -1 + end + end def copy_string(dir, src, dest) if Rake::Task.task_defined? src @@ -180,13 +169,24 @@ def copy_hash(dir, src, dest) cp_r from, to end end + end + def copy_all(dir, srcs, dest) + if srcs.is_a? Array + copy_array(dir, srcs, dest) + elsif srcs.is_a? String + copy_string(dir, srcs, dest) + elsif srcs.is_a? Hash + copy_hash(dir, srcs, dest) + elsif srcs.is_a? Symbol + copy_symbol(dir, srcs, dest) + else + raise StandardError, "Undetermined type: #{srcs.class}" + end end def to_dir(name) - unless File.exists? name - mkdir_p name - end + mkdir_p name unless File.exists?(name) name end @@ -199,9 +199,7 @@ def dep_type(dir, dep) end end - if dep.is_a? Symbol - return [task_name(dir, dep)] - end + return [task_name(dir, dep)] if dep.is_a? Symbol if dep.is_a? Hash all_deps = [] @@ -215,9 +213,16 @@ def dep_type(dir, dep) raise "Unmatched dependency type: #{dep.class}" end + def to_filelist(dir, src) + str = dir + "/" + src + FileList[str].collect do |file| + SeleniumRake::Checks.path_for(file) + end + end + def halt_on_error? [nil, 'true'].include?(ENV['haltonerror']) && - [nil, 'true'].include?(ENV['haltonfailure']) + [nil, 'true'].include?(ENV['haltonfailure']) end def halt_on_failure? diff --git a/rake_tasks/files.rb b/rake_tasks/files.rb deleted file mode 100644 index a50f06c04878e..0000000000000 --- a/rake_tasks/files.rb +++ /dev/null @@ -1,98 +0,0 @@ -def find_file(file) - puts "Copying #{file}" if $DEBUG - - if Rake::Task.task_defined?(file) && Rake::Task[file].out - # Grab the "out" of the task represented by this symbol - file = Rake::Task[file].out.to_s - end - - if File.exist?(file) - file - elsif File.exist?("build/#{file}") - "build/#{file}" - else - fl = FileList.new(file).existing! - return fl unless fl.empty? - - fl = FileList.new("build/#{file}").existing! - return fl unless fl.empty? - - puts "Unable to locate #{file}" - exit -1 - end -end - -def copy_prebuilt(prebuilt, out) - dir = out.split('/')[0..-2].join('/') - - if prebuilt.nil? - mkdir_p dir - File.open(out, 'w') { |f| f.write('') } - elsif File.directory? prebuilt - from = "#{prebuilt}/#{out}".sub(/\/build\//, '/') - - if File.exist?(from) - puts "Falling back to copy of: #{from}" - mkdir_p dir - if File.directory? from - cp_r "#{from}/.", out - else - cp_r from, out - end - else - puts "Unable to locate prebuilt copy of #{out}" - end - elsif File.exist?(prebuilt) - puts "Falling back to copy of: #{prebuilt}" - mkdir_p dir - cp prebuilt, out - else - puts "Unable to locate prebuilt copy of #{out}" - end -end - -def copy_to_prebuilt(src, prebuilt) - dest = "#{prebuilt}/#{src}".sub(/\/build\//, '/') - - if File.directory?(src) - cp_r "#{src}/.", dest - else - if File.exist?(prebuilt) - cp src, prebuilt - else - cp src, dest - end - end -end - -private - -def copy_resource_(from, to) - return if from.nil? - - if from.is_a? Hash - from.each do |key, value| - copy_single_resource_ key, "#{to}/#{value}" - end - elsif from.is_a? Array - from.each do |res| - copy_resource_ res, to - end - else - copy_single_resource_ from, to - end -end - -def copy_single_resource_(from, to) - dir = to.sub(/(.*)\/.*?$/, '\1') - mkdir_p dir.to_s - - from = find_file(from) - if from.is_a? FileList - from.each do |f| - cp_r f, to.to_s, remove_destination: true - end - else - cp_r from, to.to_s, remove_destination: true - end -end \ No newline at end of file diff --git a/rake_tasks/selenium_rake/base_generator.rb b/rake_tasks/selenium_rake/base_generator.rb deleted file mode 100644 index 9f1c0025c5314..0000000000000 --- a/rake_tasks/selenium_rake/base_generator.rb +++ /dev/null @@ -1,36 +0,0 @@ -# frozen_string_literal: true - -module SeleniumRake - class BaseGenerator - def create_deps_(out, args) - file out => FileList[args[:srcs]] unless args[:srcs].nil? - - add_deps_(out, args[:srcs]) - add_deps_(out, args[:deps]) - add_deps_(out, args[:resources]) - - task args[:name].to_sym => out unless args[:name] == out - - t = Rake::Task[args[:name].to_sym] - t.deps = args[:deps] - t.out = out - end - - private - - def add_deps_(task_name, srcs) - return if srcs.nil? - - srcs.each do |src| - if src.is_a? Symbol - file task_name.to_sym => [src] - elsif src.is_a? Hash - add_deps_(task_name, src.keys) - else - # Fine. Assume we're dealing with a string, and create a FileList - file task_name.to_sym => FileList[src] - end - end - end - end -end diff --git a/rake_tasks/selenium_rake/browsers.rb b/rake_tasks/selenium_rake/browsers.rb index 873b7999db325..0d1c30d4978b5 100644 --- a/rake_tasks/selenium_rake/browsers.rb +++ b/rake_tasks/selenium_rake/browsers.rb @@ -1,43 +1,39 @@ # frozen_string_literal: true -require 'rake_tasks/selenium_rake/checks' - module SeleniumRake class Browsers BROWSERS = { 'ff' => { - python: { driver: 'Marionette' }, + driver: 'Marionette', }, 'marionette' => { - python: { driver: 'Marionette' }, + driver: 'Marionette', }, 'ie' => { - python: { driver: 'Ie' }, + driver: 'Ie', }, 'edge' => { - python: { driver: 'Edge' }, + driver: 'Edge', }, 'chrome' => { - python: { driver: 'Chrome' }, + driver: 'Chrome', }, 'chromiumedge' => { - python: { driver: 'ChromiumEdge' }, + driver: 'ChromiumEdge', }, 'blackberry' => { - python: { driver: 'BlackBerry' }, + driver: 'BlackBerry', }, 'remote_firefox' => { - python: { - driver: 'Remote', - deps: [ - :remote_client, - :'selenium-server-standalone', - '//java/server/test/org/openqa/selenium/remote/server/auth:server' - ] - } + driver: 'Remote', + deps: [ + :remote_client, + :'selenium-server-standalone', + '//java/server/test/org/openqa/selenium/remote/server/auth:server' + ] }, 'safari' => { - python: { driver: 'Safari' }, + driver: 'Safari', } }.freeze end diff --git a/rake_tasks/selenium_rake/ie_code_generator.rb b/rake_tasks/selenium_rake/ie_generator.rb similarity index 95% rename from rake_tasks/selenium_rake/ie_code_generator.rb rename to rake_tasks/selenium_rake/ie_generator.rb index ac21e78c46ea0..62657b9a0fce1 100644 --- a/rake_tasks/selenium_rake/ie_code_generator.rb +++ b/rake_tasks/selenium_rake/ie_generator.rb @@ -6,7 +6,7 @@ # string identifier. module SeleniumRake class IEGenerator - def ie_generate_type_mapping(args) + def generate_type_mapping(args) types_mapping_file = args[:src] generated_file = args[:out].to_s