testautoi 0.9.127
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/CHANGES.txt +1 -0
- data/Gemfile +4 -0
- data/LICENSE +8 -0
- data/Rakefile +2 -0
- data/bin/CalabashSetup +0 -0
- data/bin/cal.xcconfig +3 -0
- data/bin/calabash-ios +79 -0
- data/bin/calabash-ios-build.rb +110 -0
- data/bin/calabash-ios-generate.rb +26 -0
- data/bin/calabash-ios-helpers.rb +130 -0
- data/bin/calabash-ios-setup.rb +334 -0
- data/bin/calabash-ios-sim.rb +149 -0
- data/calabash-cucumber.gemspec +29 -0
- data/doc/calabash-ios-help.txt +73 -0
- data/epl-v10.html +261 -0
- data/features-skeleton/.irbrc +23 -0
- data/features-skeleton/irb_ios4.sh +2 -0
- data/features-skeleton/irb_ios5.sh +2 -0
- data/features-skeleton/my_first.feature +12 -0
- data/features-skeleton/step_definitions/calabash_steps.rb +1 -0
- data/features-skeleton/step_definitions/my_first_steps.rb +4 -0
- data/features-skeleton/support/env.rb +1 -0
- data/features-skeleton/support/hooks.rb +0 -0
- data/features-skeleton/support/launch.rb +77 -0
- data/features/step_definitions/calabash_steps.rb +439 -0
- data/lib/calabash-cucumber.rb +7 -0
- data/lib/calabash-cucumber/calabash_steps.rb +1 -0
- data/lib/calabash-cucumber/core.rb +553 -0
- data/lib/calabash-cucumber/cucumber.rb +8 -0
- data/lib/calabash-cucumber/ibase.rb +45 -0
- data/lib/calabash-cucumber/keyboard_helpers.rb +124 -0
- data/lib/calabash-cucumber/launch/simulator_helper.rb +297 -0
- data/lib/calabash-cucumber/location.rb +26 -0
- data/lib/calabash-cucumber/operations.rb +162 -0
- data/lib/calabash-cucumber/resources/cell_swipe_ios4_ipad.base64 +51 -0
- data/lib/calabash-cucumber/resources/cell_swipe_ios4_iphone.base64 +51 -0
- data/lib/calabash-cucumber/resources/cell_swipe_ios5_ipad.base64 +74 -0
- data/lib/calabash-cucumber/resources/cell_swipe_ios5_iphone.base64 +74 -0
- data/lib/calabash-cucumber/resources/pinch_in_ios4_ipad.base64 +104 -0
- data/lib/calabash-cucumber/resources/pinch_in_ios4_iphone.base64 +104 -0
- data/lib/calabash-cucumber/resources/pinch_in_ios5_ipad.base64 +144 -0
- data/lib/calabash-cucumber/resources/pinch_in_ios5_iphone.base64 +144 -0
- data/lib/calabash-cucumber/resources/pinch_in_ios6_ipad.base64 +70 -0
- data/lib/calabash-cucumber/resources/pinch_in_ios6_iphone.base64 +70 -0
- data/lib/calabash-cucumber/resources/pinch_out_ios5_ipad.base64 +207 -0
- data/lib/calabash-cucumber/resources/pinch_out_ios5_iphone.base64 +207 -0
- data/lib/calabash-cucumber/resources/pinch_out_ios6_ipad.base64 +96 -0
- data/lib/calabash-cucumber/resources/pinch_out_ios6_iphone.base64 +96 -0
- data/lib/calabash-cucumber/resources/rotate_left_home_down_ios4_ipad.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_left_home_down_ios4_iphone.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_left_home_down_ios5_ipad.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_left_home_down_ios5_iphone.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_left_home_left_ios4_ipad.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_left_home_left_ios4_iphone.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_left_home_left_ios5_ipad.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_left_home_left_ios5_iphone.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_left_home_right_ios4_ipad.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_left_home_right_ios4_iphone.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_left_home_right_ios5_ipad.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_left_home_right_ios5_iphone.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_left_home_up_ios4_ipad.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_left_home_up_ios4_iphone.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_left_home_up_ios5_ipad.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_left_home_up_ios5_iphone.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_right_home_down_ios4_ipad.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_right_home_down_ios4_iphone.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_right_home_down_ios5_ipad.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_right_home_down_ios5_iphone.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_right_home_left_ios4_ipad.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_right_home_left_ios4_iphone.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_right_home_left_ios5_ipad.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_right_home_left_ios5_iphone.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_right_home_right_ios4_ipad.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_right_home_right_ios4_iphone.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_right_home_right_ios5_ipad.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_right_home_right_ios5_iphone.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_right_home_up_ios4_ipad.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_right_home_up_ios4_iphone.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_right_home_up_ios5_ipad.base64 +2 -0
- data/lib/calabash-cucumber/resources/rotate_right_home_up_ios5_iphone.base64 +2 -0
- data/lib/calabash-cucumber/resources/swipe_down_ios5_ipad.base64 +18 -0
- data/lib/calabash-cucumber/resources/swipe_down_ios5_iphone.base64 +18 -0
- data/lib/calabash-cucumber/resources/swipe_left_hard_ios4_ipad.base64 +15 -0
- data/lib/calabash-cucumber/resources/swipe_left_hard_ios4_iphone.base64 +15 -0
- data/lib/calabash-cucumber/resources/swipe_left_ios4_ipad.base64 +18 -0
- data/lib/calabash-cucumber/resources/swipe_left_ios4_iphone.base64 +18 -0
- data/lib/calabash-cucumber/resources/swipe_left_ios5_ipad.base64 +17 -0
- data/lib/calabash-cucumber/resources/swipe_left_ios5_iphone.base64 +17 -0
- data/lib/calabash-cucumber/resources/swipe_right_hard_ios4_ipad.base64 +17 -0
- data/lib/calabash-cucumber/resources/swipe_right_hard_ios4_iphone.base64 +17 -0
- data/lib/calabash-cucumber/resources/swipe_right_ios4_ipad.base64 +13 -0
- data/lib/calabash-cucumber/resources/swipe_right_ios4_iphone.base64 +13 -0
- data/lib/calabash-cucumber/resources/swipe_right_ios5_ipad.base64 +17 -0
- data/lib/calabash-cucumber/resources/swipe_right_ios5_iphone.base64 +17 -0
- data/lib/calabash-cucumber/resources/swipe_up_ios5_ipad.base64 +34 -0
- data/lib/calabash-cucumber/resources/swipe_up_ios5_iphone.base64 +34 -0
- data/lib/calabash-cucumber/resources/touch_done_ios4_ipad.base64 +7 -0
- data/lib/calabash-cucumber/resources/touch_done_ios4_iphone.base64 +9 -0
- data/lib/calabash-cucumber/resources/touch_done_ios5_ipad.base64 +7 -0
- data/lib/calabash-cucumber/resources/touch_done_ios5_iphone.base64 +9 -0
- data/lib/calabash-cucumber/resources/touch_ios4_ipad.base64 +9 -0
- data/lib/calabash-cucumber/resources/touch_ios4_iphone.base64 +9 -0
- data/lib/calabash-cucumber/resources/touch_ios5_ipad.base64 +9 -0
- data/lib/calabash-cucumber/resources/touch_ios5_iphone.base64 +9 -0
- data/lib/calabash-cucumber/resources/wheel_down_ios4_ipad.base64 +159 -0
- data/lib/calabash-cucumber/resources/wheel_down_ios4_iphone.base64 +159 -0
- data/lib/calabash-cucumber/resources/wheel_down_ios5_ipad.base64 +156 -0
- data/lib/calabash-cucumber/resources/wheel_down_ios5_iphone.base64 +156 -0
- data/lib/calabash-cucumber/resources/wheel_up_ios4_ipad.base64 +166 -0
- data/lib/calabash-cucumber/resources/wheel_up_ios4_iphone.base64 +166 -0
- data/lib/calabash-cucumber/resources/wheel_up_ios5_ipad.base64 +156 -0
- data/lib/calabash-cucumber/resources/wheel_up_ios5_iphone.base64 +156 -0
- data/lib/calabash-cucumber/tests_helpers.rb +136 -0
- data/lib/calabash-cucumber/version.rb +6 -0
- data/lib/calabash-cucumber/wait_helpers.rb +149 -0
- data/scripts/data/.GlobalPreferences.plist +0 -0
- data/scripts/data/clients.plist +0 -0
- data/scripts/data/com.apple.Accessibility.plist +0 -0
- data/scripts/reset_simulator.scpt +0 -0
- metadata +319 -0
@@ -0,0 +1,149 @@
|
|
1
|
+
require 'sim_launcher'
|
2
|
+
require 'calabash-cucumber/launch/simulator_helper'
|
3
|
+
|
4
|
+
def quit_sim
|
5
|
+
`echo 'application "iPhone Simulator" quit' | osascript`
|
6
|
+
end
|
7
|
+
|
8
|
+
def calabash_sim_reset
|
9
|
+
reset_script = File.expand_path("#{@script_dir}/reset_simulator.scpt")
|
10
|
+
launcher = SimLauncher::Simulator.new
|
11
|
+
|
12
|
+
sdks = ENV['SDK_VERSIONS']
|
13
|
+
if sdks
|
14
|
+
sdks = sdks.split(",")
|
15
|
+
else
|
16
|
+
sdks = SimLauncher::SdkDetector.new(launcher).available_sdk_versions
|
17
|
+
end
|
18
|
+
|
19
|
+
launcher.reset(sdks)
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
def calabash_sim_accessibility
|
24
|
+
dirs = Dir.glob(File.join(File.expand_path("~/Library"), "Application Support", "iPhone Simulator", "*.*", "Library", "Preferences"))
|
25
|
+
dirs.each do |sim_pref_dir|
|
26
|
+
fp = File.expand_path("#{@script_dir}/data/")
|
27
|
+
FileUtils.cp("#{fp}/com.apple.Accessibility.plist", sim_pref_dir)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
def calabash_sim_location(args)
|
33
|
+
|
34
|
+
if args.length == 0
|
35
|
+
print_usage
|
36
|
+
exit 0
|
37
|
+
end
|
38
|
+
on_off = args.shift
|
39
|
+
if args.length == 0
|
40
|
+
print_usage
|
41
|
+
exit 0
|
42
|
+
end
|
43
|
+
bundle_id = args.shift
|
44
|
+
|
45
|
+
|
46
|
+
dirs = Dir.glob(File.join(File.expand_path("~/Library"), "Application Support", "iPhone Simulator", "*.*", "Library", "Caches", "locationd"))
|
47
|
+
dirs.each do |sim_dir|
|
48
|
+
existing_path = "#{sim_dir}/clients.plist"
|
49
|
+
if File.exist?(existing_path)
|
50
|
+
plist_path = existing_path
|
51
|
+
else
|
52
|
+
plist_path = File.expand_path("#{@script_dir}/data/clients.plist")
|
53
|
+
end
|
54
|
+
|
55
|
+
plist = CFPropertyList::List.new(:file => plist_path)
|
56
|
+
hash = CFPropertyList.native_types(plist.value)
|
57
|
+
|
58
|
+
app_hash = hash[bundle_id]
|
59
|
+
if not app_hash
|
60
|
+
app_hash = hash[bundle_id] = {}
|
61
|
+
end
|
62
|
+
app_hash["BundleId"] = bundle_id
|
63
|
+
app_hash["Authorized"] = on_off == "on" ? true : false
|
64
|
+
app_hash["LocationTimeStarted"] = 0
|
65
|
+
|
66
|
+
##Plist edit the template
|
67
|
+
res_plist = CFPropertyList::List.new
|
68
|
+
res_plist.value = CFPropertyList.guess(hash)
|
69
|
+
res_plist.save(existing_path, CFPropertyList::List::FORMAT_BINARY)
|
70
|
+
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
def calabash_sim_locale(args)
|
76
|
+
|
77
|
+
prefs_path = File.expand_path("#{@script_dir}/data/.GlobalPreferences.plist")
|
78
|
+
plist = CFPropertyList::List.new(:file => prefs_path)
|
79
|
+
hash = CFPropertyList.native_types(plist.value)
|
80
|
+
|
81
|
+
|
82
|
+
if args.length == 0
|
83
|
+
print_usage
|
84
|
+
puts "Options: \n"
|
85
|
+
puts hash['AppleLanguages'].join("\n")
|
86
|
+
exit 0
|
87
|
+
end
|
88
|
+
lang = args.shift
|
89
|
+
reg = nil
|
90
|
+
if args.length == 1
|
91
|
+
reg = args.shift
|
92
|
+
end
|
93
|
+
|
94
|
+
langs = hash['AppleLanguages']
|
95
|
+
lang_index = langs.find_index { |l| l == lang }
|
96
|
+
|
97
|
+
if lang_index.nil?
|
98
|
+
puts "Unable to find #{lang}..."
|
99
|
+
puts "Options:\n#{langs.join("\n")}"
|
100
|
+
exit 0
|
101
|
+
end
|
102
|
+
|
103
|
+
langs[0], langs[lang_index] = langs[lang_index], langs[0]
|
104
|
+
|
105
|
+
|
106
|
+
if reg
|
107
|
+
hash['AppleLocale'] = reg
|
108
|
+
end
|
109
|
+
res_plist = CFPropertyList::List.new
|
110
|
+
res_plist.value = CFPropertyList.guess(hash)
|
111
|
+
dirs = Dir.glob(File.join(File.expand_path("~/Library"), "Application Support", "iPhone Simulator", "*.*", "Library", "Preferences"))
|
112
|
+
dirs.each do |sim_pref_dir|
|
113
|
+
res_plist.save("#{sim_pref_dir}/.GlobalPreferences.plist", CFPropertyList::List::FORMAT_BINARY)
|
114
|
+
end
|
115
|
+
|
116
|
+
|
117
|
+
end
|
118
|
+
|
119
|
+
|
120
|
+
def calabash_sim_device(args)
|
121
|
+
quit_sim
|
122
|
+
options = ["iPad","iPad_Retina", "iPhone", "iPhone_Retina", "iPhone_Retina_4inch"]
|
123
|
+
if args.length != 1 or not options.find { |x| x == args[0] }
|
124
|
+
print_usage
|
125
|
+
puts "Unrecognized args: #{args}"
|
126
|
+
puts "should be one of #{options.inspect}"
|
127
|
+
exit(0)
|
128
|
+
end
|
129
|
+
path =File.join(File.expand_path("~/Library"), "Preferences", "com.apple.iphonesimulator.plist")
|
130
|
+
plist = CFPropertyList::List.new(:file => path)
|
131
|
+
hash = CFPropertyList.native_types(plist.value)
|
132
|
+
|
133
|
+
device = case args[0]
|
134
|
+
when "iPad_Retina"
|
135
|
+
"iPad (Retina)"
|
136
|
+
when "iPhone_Retina"
|
137
|
+
"iPhone (Retina 3.5-inch)"
|
138
|
+
when "iPhone_Retina_4inch"
|
139
|
+
"iPhone (Retina 4-inch)"
|
140
|
+
else
|
141
|
+
args[0]
|
142
|
+
end
|
143
|
+
if device
|
144
|
+
hash['SimulateDevice'] = device
|
145
|
+
plist.value = CFPropertyList.guess(hash)
|
146
|
+
plist.save(path, CFPropertyList::List::FORMAT_BINARY)
|
147
|
+
end
|
148
|
+
|
149
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "calabash-cucumber/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "calabash-cucumber"
|
7
|
+
s.version = Calabash::Cucumber::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Karl Krukow"]
|
10
|
+
s.email = ["karl@lesspainful.com"]
|
11
|
+
s.homepage = "http://calaba.sh"
|
12
|
+
s.summary = %q{Client for calabash-ios-server for automated functional testing on iOS}
|
13
|
+
s.description = %q{calabash-cucumber drives tests for native iOS apps. You must link your app with calabash-ios-server framework to execute tests.}
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
+
s.executables = "calabash-ios"
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
|
19
|
+
s.add_dependency( "cucumber" )
|
20
|
+
s.add_dependency( "json" )
|
21
|
+
s.add_dependency( "CFPropertyList" )
|
22
|
+
s.add_dependency( "sim_launcher", "0.4.6")
|
23
|
+
s.add_dependency( "slowhandcuke" )
|
24
|
+
s.add_dependency( "location-one", "~>0.0.8")
|
25
|
+
s.add_dependency( "httpclient","2.2.7")
|
26
|
+
s.add_dependency( "bundler", "~> 1.1")
|
27
|
+
s.add_dependency( "run_loop", "~>0.0.3" )
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
Usage: calabash-ios <command-name> [parameters]
|
2
|
+
<command-name> can be one of
|
3
|
+
help
|
4
|
+
gen
|
5
|
+
setup (EXPERIMENTAL) [opt path]?
|
6
|
+
download [opt path]?
|
7
|
+
check (EXPERIMENTAL) [opt path to .ipa/.app]?
|
8
|
+
sim locale [lang] [regional]?
|
9
|
+
sim reset
|
10
|
+
sim acc
|
11
|
+
sim device [iPad_Retina, iPhone, iPhone_Retina, iPhone_Retina_4inch]
|
12
|
+
|
13
|
+
Commands:
|
14
|
+
gen creates a skeleton features dir. This is usually used once when
|
15
|
+
setting up calabash to ensure that the features folder contains
|
16
|
+
the right step definitions and environment to run with cucumber.
|
17
|
+
console
|
18
|
+
starts an interactive console to interact with your app via Calabash.
|
19
|
+
Copies the irb_ios5.sh and irb_ios4.sh scripts and the .irbrc file
|
20
|
+
then launches irb_ios5.sh.
|
21
|
+
setup [path]? (EXPERIMENTAL) Automates setting up your iOS Xcode project
|
22
|
+
with calabash-ios-server. It is your responsibility to ensure
|
23
|
+
that your production build does not link with calabash.framework.
|
24
|
+
setup will try to ensure this, but you should check manually.
|
25
|
+
|
26
|
+
setup will download calabash.framework and modify you Xcode project
|
27
|
+
file. The parameter [path] is optional (default is the current dir).
|
28
|
+
If specified [path] should be the path to your iOS Xcode project
|
29
|
+
(i.e., the folder which contains projectname.xcodeproj).
|
30
|
+
|
31
|
+
The following modifications are made
|
32
|
+
- duplicate an existing target of your choice
|
33
|
+
- add the calabash.framework to your Frameworks folder
|
34
|
+
- add $(SRCROOT) to framework search path
|
35
|
+
- link with calabash.framework in duped target
|
36
|
+
- link with Apple's CFNetwork.framework in duped target
|
37
|
+
- setup special linker options to ensure calabash is loaded
|
38
|
+
|
39
|
+
Your Xcode project file will be backed up as project.pbxproj.bak.
|
40
|
+
The backup is placed in the .xcodeproj folder for your project.
|
41
|
+
If something goes wrong. Close Xcode and copy project.pbxproj.bak
|
42
|
+
to project.pbxproj inside your .xcodeproj folder.
|
43
|
+
|
44
|
+
download [opt_path]?
|
45
|
+
downloads latest compatible version of calabash.framework.
|
46
|
+
It should be run from a directory containing an Xcode project,
|
47
|
+
or optionally opt_path should be supplied and pointing to a
|
48
|
+
directory containing an Xcode project.
|
49
|
+
Download will download the latest version that matches the
|
50
|
+
currently installed calabash-cucumber gem.
|
51
|
+
To update Calabash for your project run
|
52
|
+
|
53
|
+
gem update calabash-cucumber
|
54
|
+
calabash-ios download
|
55
|
+
|
56
|
+
check (EXPERIMENTAL) [.app or .ipa]?
|
57
|
+
check whether an app or ipa is linked with calabash.framework
|
58
|
+
if called without parameter [.app or .ipa] then pwd should be
|
59
|
+
a directory containing an xcodeproj. In this case we'll check
|
60
|
+
the default Xcode simulator build path for a Debug and Calabash
|
61
|
+
build configurations. We check that Debug doesn't link with
|
62
|
+
calabash.framework but Calabash does.
|
63
|
+
|
64
|
+
sim locale [lang] [regional]? Changes the regional settings
|
65
|
+
for the iOS Simulators. You must ensure the correct format
|
66
|
+
for the optional regional parameter, for example,
|
67
|
+
da_DK, en_US.
|
68
|
+
|
69
|
+
sim reset (EXPERIMENTAL) Will select "Reset Content and Settings"
|
70
|
+
in the iOS Simulators using AppleScript.
|
71
|
+
|
72
|
+
sim device [device] Will set the default iOS Simulator device.
|
73
|
+
[device] can be one of iPad, iPhone, iPhone_Retina.
|
data/epl-v10.html
ADDED
@@ -0,0 +1,261 @@
|
|
1
|
+
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
4
|
+
|
5
|
+
<head>
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
|
7
|
+
<title>Eclipse Public License - Version 1.0</title>
|
8
|
+
<style type="text/css">
|
9
|
+
body {
|
10
|
+
size: 8.5in 11.0in;
|
11
|
+
margin: 0.25in 0.5in 0.25in 0.5in;
|
12
|
+
tab-interval: 0.5in;
|
13
|
+
}
|
14
|
+
p {
|
15
|
+
margin-left: auto;
|
16
|
+
margin-top: 0.5em;
|
17
|
+
margin-bottom: 0.5em;
|
18
|
+
}
|
19
|
+
p.list {
|
20
|
+
margin-left: 0.5in;
|
21
|
+
margin-top: 0.05em;
|
22
|
+
margin-bottom: 0.05em;
|
23
|
+
}
|
24
|
+
</style>
|
25
|
+
|
26
|
+
</head>
|
27
|
+
|
28
|
+
<body lang="EN-US">
|
29
|
+
|
30
|
+
<p align=center><b>Eclipse Public License - v 1.0</b></p>
|
31
|
+
|
32
|
+
<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
|
33
|
+
PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
|
34
|
+
DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
|
35
|
+
AGREEMENT.</p>
|
36
|
+
|
37
|
+
<p><b>1. DEFINITIONS</b></p>
|
38
|
+
|
39
|
+
<p>"Contribution" means:</p>
|
40
|
+
|
41
|
+
<p class="list">a) in the case of the initial Contributor, the initial
|
42
|
+
code and documentation distributed under this Agreement, and</p>
|
43
|
+
<p class="list">b) in the case of each subsequent Contributor:</p>
|
44
|
+
<p class="list">i) changes to the Program, and</p>
|
45
|
+
<p class="list">ii) additions to the Program;</p>
|
46
|
+
<p class="list">where such changes and/or additions to the Program
|
47
|
+
originate from and are distributed by that particular Contributor. A
|
48
|
+
Contribution 'originates' from a Contributor if it was added to the
|
49
|
+
Program by such Contributor itself or anyone acting on such
|
50
|
+
Contributor's behalf. Contributions do not include additions to the
|
51
|
+
Program which: (i) are separate modules of software distributed in
|
52
|
+
conjunction with the Program under their own license agreement, and (ii)
|
53
|
+
are not derivative works of the Program.</p>
|
54
|
+
|
55
|
+
<p>"Contributor" means any person or entity that distributes
|
56
|
+
the Program.</p>
|
57
|
+
|
58
|
+
<p>"Licensed Patents" mean patent claims licensable by a
|
59
|
+
Contributor which are necessarily infringed by the use or sale of its
|
60
|
+
Contribution alone or when combined with the Program.</p>
|
61
|
+
|
62
|
+
<p>"Program" means the Contributions distributed in accordance
|
63
|
+
with this Agreement.</p>
|
64
|
+
|
65
|
+
<p>"Recipient" means anyone who receives the Program under
|
66
|
+
this Agreement, including all Contributors.</p>
|
67
|
+
|
68
|
+
<p><b>2. GRANT OF RIGHTS</b></p>
|
69
|
+
|
70
|
+
<p class="list">a) Subject to the terms of this Agreement, each
|
71
|
+
Contributor hereby grants Recipient a non-exclusive, worldwide,
|
72
|
+
royalty-free copyright license to reproduce, prepare derivative works
|
73
|
+
of, publicly display, publicly perform, distribute and sublicense the
|
74
|
+
Contribution of such Contributor, if any, and such derivative works, in
|
75
|
+
source code and object code form.</p>
|
76
|
+
|
77
|
+
<p class="list">b) Subject to the terms of this Agreement, each
|
78
|
+
Contributor hereby grants Recipient a non-exclusive, worldwide,
|
79
|
+
royalty-free patent license under Licensed Patents to make, use, sell,
|
80
|
+
offer to sell, import and otherwise transfer the Contribution of such
|
81
|
+
Contributor, if any, in source code and object code form. This patent
|
82
|
+
license shall apply to the combination of the Contribution and the
|
83
|
+
Program if, at the time the Contribution is added by the Contributor,
|
84
|
+
such addition of the Contribution causes such combination to be covered
|
85
|
+
by the Licensed Patents. The patent license shall not apply to any other
|
86
|
+
combinations which include the Contribution. No hardware per se is
|
87
|
+
licensed hereunder.</p>
|
88
|
+
|
89
|
+
<p class="list">c) Recipient understands that although each Contributor
|
90
|
+
grants the licenses to its Contributions set forth herein, no assurances
|
91
|
+
are provided by any Contributor that the Program does not infringe the
|
92
|
+
patent or other intellectual property rights of any other entity. Each
|
93
|
+
Contributor disclaims any liability to Recipient for claims brought by
|
94
|
+
any other entity based on infringement of intellectual property rights
|
95
|
+
or otherwise. As a condition to exercising the rights and licenses
|
96
|
+
granted hereunder, each Recipient hereby assumes sole responsibility to
|
97
|
+
secure any other intellectual property rights needed, if any. For
|
98
|
+
example, if a third party patent license is required to allow Recipient
|
99
|
+
to distribute the Program, it is Recipient's responsibility to acquire
|
100
|
+
that license before distributing the Program.</p>
|
101
|
+
|
102
|
+
<p class="list">d) Each Contributor represents that to its knowledge it
|
103
|
+
has sufficient copyright rights in its Contribution, if any, to grant
|
104
|
+
the copyright license set forth in this Agreement.</p>
|
105
|
+
|
106
|
+
<p><b>3. REQUIREMENTS</b></p>
|
107
|
+
|
108
|
+
<p>A Contributor may choose to distribute the Program in object code
|
109
|
+
form under its own license agreement, provided that:</p>
|
110
|
+
|
111
|
+
<p class="list">a) it complies with the terms and conditions of this
|
112
|
+
Agreement; and</p>
|
113
|
+
|
114
|
+
<p class="list">b) its license agreement:</p>
|
115
|
+
|
116
|
+
<p class="list">i) effectively disclaims on behalf of all Contributors
|
117
|
+
all warranties and conditions, express and implied, including warranties
|
118
|
+
or conditions of title and non-infringement, and implied warranties or
|
119
|
+
conditions of merchantability and fitness for a particular purpose;</p>
|
120
|
+
|
121
|
+
<p class="list">ii) effectively excludes on behalf of all Contributors
|
122
|
+
all liability for damages, including direct, indirect, special,
|
123
|
+
incidental and consequential damages, such as lost profits;</p>
|
124
|
+
|
125
|
+
<p class="list">iii) states that any provisions which differ from this
|
126
|
+
Agreement are offered by that Contributor alone and not by any other
|
127
|
+
party; and</p>
|
128
|
+
|
129
|
+
<p class="list">iv) states that source code for the Program is available
|
130
|
+
from such Contributor, and informs licensees how to obtain it in a
|
131
|
+
reasonable manner on or through a medium customarily used for software
|
132
|
+
exchange.</p>
|
133
|
+
|
134
|
+
<p>When the Program is made available in source code form:</p>
|
135
|
+
|
136
|
+
<p class="list">a) it must be made available under this Agreement; and</p>
|
137
|
+
|
138
|
+
<p class="list">b) a copy of this Agreement must be included with each
|
139
|
+
copy of the Program.</p>
|
140
|
+
|
141
|
+
<p>Contributors may not remove or alter any copyright notices contained
|
142
|
+
within the Program.</p>
|
143
|
+
|
144
|
+
<p>Each Contributor must identify itself as the originator of its
|
145
|
+
Contribution, if any, in a manner that reasonably allows subsequent
|
146
|
+
Recipients to identify the originator of the Contribution.</p>
|
147
|
+
|
148
|
+
<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
|
149
|
+
|
150
|
+
<p>Commercial distributors of software may accept certain
|
151
|
+
responsibilities with respect to end users, business partners and the
|
152
|
+
like. While this license is intended to facilitate the commercial use of
|
153
|
+
the Program, the Contributor who includes the Program in a commercial
|
154
|
+
product offering should do so in a manner which does not create
|
155
|
+
potential liability for other Contributors. Therefore, if a Contributor
|
156
|
+
includes the Program in a commercial product offering, such Contributor
|
157
|
+
("Commercial Contributor") hereby agrees to defend and
|
158
|
+
indemnify every other Contributor ("Indemnified Contributor")
|
159
|
+
against any losses, damages and costs (collectively "Losses")
|
160
|
+
arising from claims, lawsuits and other legal actions brought by a third
|
161
|
+
party against the Indemnified Contributor to the extent caused by the
|
162
|
+
acts or omissions of such Commercial Contributor in connection with its
|
163
|
+
distribution of the Program in a commercial product offering. The
|
164
|
+
obligations in this section do not apply to any claims or Losses
|
165
|
+
relating to any actual or alleged intellectual property infringement. In
|
166
|
+
order to qualify, an Indemnified Contributor must: a) promptly notify
|
167
|
+
the Commercial Contributor in writing of such claim, and b) allow the
|
168
|
+
Commercial Contributor to control, and cooperate with the Commercial
|
169
|
+
Contributor in, the defense and any related settlement negotiations. The
|
170
|
+
Indemnified Contributor may participate in any such claim at its own
|
171
|
+
expense.</p>
|
172
|
+
|
173
|
+
<p>For example, a Contributor might include the Program in a commercial
|
174
|
+
product offering, Product X. That Contributor is then a Commercial
|
175
|
+
Contributor. If that Commercial Contributor then makes performance
|
176
|
+
claims, or offers warranties related to Product X, those performance
|
177
|
+
claims and warranties are such Commercial Contributor's responsibility
|
178
|
+
alone. Under this section, the Commercial Contributor would have to
|
179
|
+
defend claims against the other Contributors related to those
|
180
|
+
performance claims and warranties, and if a court requires any other
|
181
|
+
Contributor to pay any damages as a result, the Commercial Contributor
|
182
|
+
must pay those damages.</p>
|
183
|
+
|
184
|
+
<p><b>5. NO WARRANTY</b></p>
|
185
|
+
|
186
|
+
<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
|
187
|
+
PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
188
|
+
OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
|
189
|
+
ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
|
190
|
+
OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
|
191
|
+
responsible for determining the appropriateness of using and
|
192
|
+
distributing the Program and assumes all risks associated with its
|
193
|
+
exercise of rights under this Agreement , including but not limited to
|
194
|
+
the risks and costs of program errors, compliance with applicable laws,
|
195
|
+
damage to or loss of data, programs or equipment, and unavailability or
|
196
|
+
interruption of operations.</p>
|
197
|
+
|
198
|
+
<p><b>6. DISCLAIMER OF LIABILITY</b></p>
|
199
|
+
|
200
|
+
<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
|
201
|
+
NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
|
202
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
|
203
|
+
WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
|
204
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
205
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
|
206
|
+
DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
|
207
|
+
HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
|
208
|
+
|
209
|
+
<p><b>7. GENERAL</b></p>
|
210
|
+
|
211
|
+
<p>If any provision of this Agreement is invalid or unenforceable under
|
212
|
+
applicable law, it shall not affect the validity or enforceability of
|
213
|
+
the remainder of the terms of this Agreement, and without further action
|
214
|
+
by the parties hereto, such provision shall be reformed to the minimum
|
215
|
+
extent necessary to make such provision valid and enforceable.</p>
|
216
|
+
|
217
|
+
<p>If Recipient institutes patent litigation against any entity
|
218
|
+
(including a cross-claim or counterclaim in a lawsuit) alleging that the
|
219
|
+
Program itself (excluding combinations of the Program with other
|
220
|
+
software or hardware) infringes such Recipient's patent(s), then such
|
221
|
+
Recipient's rights granted under Section 2(b) shall terminate as of the
|
222
|
+
date such litigation is filed.</p>
|
223
|
+
|
224
|
+
<p>All Recipient's rights under this Agreement shall terminate if it
|
225
|
+
fails to comply with any of the material terms or conditions of this
|
226
|
+
Agreement and does not cure such failure in a reasonable period of time
|
227
|
+
after becoming aware of such noncompliance. If all Recipient's rights
|
228
|
+
under this Agreement terminate, Recipient agrees to cease use and
|
229
|
+
distribution of the Program as soon as reasonably practicable. However,
|
230
|
+
Recipient's obligations under this Agreement and any licenses granted by
|
231
|
+
Recipient relating to the Program shall continue and survive.</p>
|
232
|
+
|
233
|
+
<p>Everyone is permitted to copy and distribute copies of this
|
234
|
+
Agreement, but in order to avoid inconsistency the Agreement is
|
235
|
+
copyrighted and may only be modified in the following manner. The
|
236
|
+
Agreement Steward reserves the right to publish new versions (including
|
237
|
+
revisions) of this Agreement from time to time. No one other than the
|
238
|
+
Agreement Steward has the right to modify this Agreement. The Eclipse
|
239
|
+
Foundation is the initial Agreement Steward. The Eclipse Foundation may
|
240
|
+
assign the responsibility to serve as the Agreement Steward to a
|
241
|
+
suitable separate entity. Each new version of the Agreement will be
|
242
|
+
given a distinguishing version number. The Program (including
|
243
|
+
Contributions) may always be distributed subject to the version of the
|
244
|
+
Agreement under which it was received. In addition, after a new version
|
245
|
+
of the Agreement is published, Contributor may elect to distribute the
|
246
|
+
Program (including its Contributions) under the new version. Except as
|
247
|
+
expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
|
248
|
+
rights or licenses to the intellectual property of any Contributor under
|
249
|
+
this Agreement, whether expressly, by implication, estoppel or
|
250
|
+
otherwise. All rights in the Program not expressly granted under this
|
251
|
+
Agreement are reserved.</p>
|
252
|
+
|
253
|
+
<p>This Agreement is governed by the laws of the State of New York and
|
254
|
+
the intellectual property laws of the United States of America. No party
|
255
|
+
to this Agreement will bring a legal action under this Agreement more
|
256
|
+
than one year after the cause of action arose. Each party waives its
|
257
|
+
rights to a jury trial in any resulting litigation.</p>
|
258
|
+
|
259
|
+
</body>
|
260
|
+
|
261
|
+
</html>
|