@@ -7,6 +7,7 @@ require 'rake_tasks/files'
7
7
require 'net/telnet'
8
8
require 'stringio'
9
9
require 'fileutils'
10
+ require 'open-uri'
10
11
11
12
include Rake ::DSL
12
13
@@ -33,6 +34,13 @@ require 'rake_tasks/selenium_rake/java_formatter'
33
34
require 'rake_tasks/selenium_rake/cpp_formatter'
34
35
require 'rake_tasks/selenium_rake/type_definitions_generator'
35
36
37
+ # Require the migrated rake files, which need to be tidied up further
38
+ # These are the final items mixed into the global NS
39
+ require 'rake_tasks/bazel'
40
+ require 'rake_tasks/copyright'
41
+ require 'rake_tasks/files'
42
+ require 'rake_tasks/python'
43
+
36
44
# Our modifications to the Rake library
37
45
require 'rake_tasks/rake/task'
38
46
@@ -81,7 +89,7 @@ crazy_fun.create_tasks(Dir["rb/**/build.desc"])
81
89
82
90
# If it looks like a bazel target, build it with bazel
83
91
rule /\/ \/ .*/ do |task |
84
- task . out = Bazel :: execute ( "build" , [ "--workspace_status_command" , "scripts/build-info.py" ] , task . name )
92
+ task . out = Bazel . execute ( "build" , [ "--workspace_status_command" , "scripts/build-info.py" ] , task . name )
85
93
end
86
94
87
95
# Spoof tasks to get CI working with bazel
@@ -449,6 +457,182 @@ task :authors do
449
457
sh "(git log --use-mailmap --format='%aN <%aE>' ; cat .OLD_AUTHORS) | sort -uf > AUTHORS"
450
458
end
451
459
460
+ namespace :copyright do
461
+ task :update do
462
+ Copyright . update (
463
+ FileList [ 'javascript/**/*.js' ] . exclude (
464
+ 'javascript/atoms/test/jquery.min.js' ,
465
+ 'javascript/jsunit/**/*.js' ,
466
+ 'javascript/node/selenium-webdriver/node_modules/**/*.js' ,
467
+ 'javascript/selenium-core/lib/**/*.js' ,
468
+ 'javascript/selenium-core/scripts/ui-element.js' ,
469
+ 'javascript/selenium-core/scripts/ui-map-sample.js' ,
470
+ 'javascript/selenium-core/scripts/user-extensions.js' ,
471
+ 'javascript/selenium-core/scripts/xmlextras.js' ,
472
+ 'javascript/selenium-core/xpath/**/*.js'
473
+ )
474
+ )
475
+ Copyright . update ( FileList [ 'py/**/*.py' ] , style : '#' )
476
+ Copyright . update (
477
+ FileList [ 'rb/**/*.rb' ] ,
478
+ style : '#' ,
479
+ prefix : [ "# frozen_string_literal: true\n " , "\n " ]
480
+ )
481
+ Copyright . update ( FileList [ 'java/**/*.java' ] )
482
+ end
483
+ end
484
+
485
+ namespace :side do
486
+ task atoms : [
487
+ '//javascript/atoms/fragments:find-element'
488
+ ] do
489
+ # TODO: move directly to IDE's directory once the repositories are merged
490
+ baseDir = 'build/javascript/atoms'
491
+ mkdir_p baseDir
492
+
493
+ [
494
+ Rake ::Task [ '//javascript/atoms/fragments:find-element' ] . out
495
+ ] . each do |atom |
496
+ name = File . basename ( atom )
497
+
498
+ puts "Generating #{ atom } as #{ name } "
499
+ File . open ( File . join ( baseDir , name ) , 'w' ) do |f |
500
+ f << "// GENERATED CODE - DO NOT EDIT\n "
501
+ f << 'module.exports = '
502
+ f << IO . read ( atom ) . strip
503
+ f << ";\n "
504
+ end
505
+ end
506
+ end
507
+ end
508
+
509
+ namespace :jruby do
510
+ desc 'Update jruby version'
511
+ task :update do
512
+ jruby_version = '9.2.8.0'
513
+ jruby_gems = { 'inifile' => '3.0.0' }
514
+ jar_name = "jruby-complete-#{ jruby_version } .jar"
515
+ url = "https://repo1.maven.org/maven2/org/jruby/jruby-complete/#{ jruby_version } /#{ jar_name } "
516
+
517
+ Dir . chdir ( 'third_party/jruby' ) do
518
+ puts "Downloading #{ jar_name } from #{ url } ..."
519
+ File . open ( jar_name , 'wb' ) do |write_file |
520
+ open ( url , 'rb' ) do |read_file |
521
+ write_file . write ( read_file . read )
522
+ end
523
+ end
524
+
525
+ puts 'Installing gems...'
526
+ jruby_gems . each do |gem_name , gem_version |
527
+ sh 'java' , '-jar' , jar_name , '-S' , 'gem' , 'install' , '-i' , "./#{ gem_name } " , gem_name , '-v' , gem_version
528
+ sh 'jar' , 'uf' , jar_name , '-C' , gem_name , '.'
529
+ rm_rf gem_name
530
+ end
531
+
532
+ puts 'Bumping VERSION...'
533
+ version = `java -jar #{ jar_name } -v` . split ( "\n " ) . first
534
+ File . write ( 'VERSION' , "#{ version } \n " )
535
+
536
+ mv jar_name , 'jruby-complete.jar'
537
+ puts 'Done!'
538
+ end
539
+ end
540
+ end
541
+
542
+ namespace :node do
543
+ task atoms : %w(
544
+ //javascript/atoms/fragments:is-displayed
545
+ //javascript/webdriver/atoms:get-attribute
546
+ ) do
547
+ baseDir = 'javascript/node/selenium-webdriver/lib/atoms'
548
+ mkdir_p baseDir
549
+
550
+ [
551
+ Rake ::Task [ '//javascript/atoms/fragments:is-displayed' ] . out ,
552
+ Rake ::Task [ '//javascript/webdriver/atoms:get-attribute' ] . out
553
+ ] . each do |atom |
554
+ name = File . basename ( atom )
555
+
556
+ puts "Generating #{ atom } as #{ name } "
557
+ File . open ( File . join ( baseDir , name ) , 'w' ) do |f |
558
+ f << "// GENERATED CODE - DO NOT EDIT\n "
559
+ f << 'module.exports = '
560
+ f << IO . read ( atom ) . strip
561
+ f << ";\n "
562
+ end
563
+ end
564
+ end
565
+
566
+ task :build do
567
+ sh 'bazel build //javascript/node/selenium-webdriver'
568
+ end
569
+
570
+ task 'dry-run' : [
571
+ 'node:build'
572
+ ] do
573
+ sh 'bazel run javascript/node/selenium-webdriver:selenium-webdriver.pack'
574
+ end
575
+
576
+ task deploy : [
577
+ 'node:build'
578
+ ] do
579
+ sh 'bazel run javascript/node/selenium-webdriver:selenium-webdriver.publish'
580
+ end
581
+
582
+ task :docs do
583
+ sh 'node javascript/node/gendocs.js'
584
+ end
585
+ end
586
+
587
+ namespace :py do
588
+ task prep : [
589
+ '//javascript/atoms/fragments:is-displayed' ,
590
+ '//javascript/webdriver/atoms:get-attribute' ,
591
+ '//third_party/js/selenium:webdriver_xpi'
592
+ ] do
593
+ py_home = 'py/'
594
+ remote_py_home = py_home + 'selenium/webdriver/remote/'
595
+ firefox_py_home = py_home + 'selenium/webdriver/firefox/'
596
+
597
+ if SeleniumRake ::Checks . windows?
598
+ remote_py_home = remote_py_home . gsub ( /\/ / , '\\' )
599
+ firefox_py_home = firefox_py_home . gsub ( /\/ / , '\\' )
600
+ end
601
+
602
+ cp Rake ::Task [ '//javascript/atoms/fragments:is-displayed' ] . out , remote_py_home + "isDisplayed.js" , verbose : true
603
+ cp Rake ::Task [ '//javascript/webdriver/atoms:get-attribute' ] . out , remote_py_home + "getAttribute.js" , verbose : true
604
+
605
+ cp Rake ::Task [ '//third_party/js/selenium:webdriver_xpi' ] . out , firefox_py_home , verbose : true
606
+ cp 'third_party/js/selenium/webdriver.json' , firefox_py_home + 'webdriver_prefs.json' , verbose : true
607
+ cp 'LICENSE' , py_home + 'LICENSE' , verbose : true
608
+ end
609
+
610
+ bazel :unit do
611
+ Bazel . execute ( 'test' , [ ] , '//py:unit' )
612
+ end
613
+
614
+ task docs : :prep do
615
+ sh 'tox -c py/tox.ini -e docs' , verbose : true
616
+ end
617
+
618
+ task install : :prep do
619
+ Dir . chdir ( 'py' ) do
620
+ sh py_exe + ' setup.py install' , verbose : true
621
+ end
622
+ end
623
+
624
+ %w[ chrome ff marionette ie edge blackberry remote_firefox safari ] . each do |browser |
625
+ browser_data = SeleniumRake ::Browsers ::BROWSERS [ browser ] [ :python ]
626
+ deps = browser_data [ :deps ] || [ ]
627
+ deps += [ :prep ]
628
+ driver = browser_data [ :driver ]
629
+
630
+ task "#{ browser } _test" => deps do
631
+ tox_test driver
632
+ end
633
+ end
634
+ end
635
+
452
636
at_exit do
453
637
if File . exist? ( ".git" ) && !SeleniumRake ::Checks . windows?
454
638
system "sh" , ".git-fixfiles"
0 commit comments