autoproj 1.9.7.rc9 → 1.9.7.rc10
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +6 -2
- data/bin/autoproj_bootstrap +70 -40
- data/bin/autoproj_bootstrap.in +8 -0
- data/lib/autoproj/default.osdeps +15 -6
- data/lib/autoproj/environment.rb +6 -5
- data/lib/autoproj/osdeps.rb +47 -24
- data/lib/autoproj/package_set.rb +3 -3
- data/lib/autoproj/system.rb +0 -10
- data/lib/autoproj/vcs_definition.rb +0 -2
- data/lib/autoproj/version.rb +1 -1
- data/test/data/os_release.with_complex_version_field +3 -0
- data/test/data/os_release.with_duplicate_values +3 -0
- data/test/data/os_release.with_missing_optional_fields +2 -0
- data/test/data/os_release.with_quoted_and_unquoted_fields +2 -0
- data/test/data/test_manifest/autoproj/{local → local_set}/local.autobuild +0 -0
- data/test/data/test_manifest/autoproj/local_set/source.yml +1 -0
- data/test/data/test_manifest/autoproj/manifest +2 -3
- data/test/package_managers/test_gem.rb +10 -5
- data/test/test_manifest.rb +10 -18
- data/test/test_os_dependencies.rb +32 -0
- data/test/test_package_manifest.rb +1 -1
- metadata +8 -5
- data/test/test_debian.rb +0 -16
data/Manifest.txt
CHANGED
@@ -58,7 +58,12 @@ shell/autoproj_zsh
|
|
58
58
|
test/data/empty_manifest.xml
|
59
59
|
test/data/full_manifest.xml
|
60
60
|
test/data/invalid_manifest.xml
|
61
|
-
test/data/
|
61
|
+
test/data/os_release.with_complex_version_field
|
62
|
+
test/data/os_release.with_duplicate_values
|
63
|
+
test/data/os_release.with_missing_optional_fields
|
64
|
+
test/data/os_release.with_quoted_and_unquoted_fields
|
65
|
+
test/data/test_manifest/autoproj/local_set/local.autobuild
|
66
|
+
test/data/test_manifest/autoproj/local_set/source.yml
|
62
67
|
test/data/test_manifest/autoproj/manifest
|
63
68
|
test/package_managers/apt-dpkg-status
|
64
69
|
test/package_managers/apt-dpkg-status.installed-last
|
@@ -66,7 +71,6 @@ test/package_managers/apt-dpkg-status.noninstalled-last
|
|
66
71
|
test/package_managers/test_apt_dpkg_manager.rb
|
67
72
|
test/package_managers/test_gem.rb
|
68
73
|
test/package_managers/test_pip.rb
|
69
|
-
test/test_debian.rb
|
70
74
|
test/test_manifest.rb
|
71
75
|
test/test_os_dependencies.rb
|
72
76
|
test/test_package_manifest.rb
|
data/bin/autoproj_bootstrap
CHANGED
@@ -86,6 +86,14 @@ module Autobuild
|
|
86
86
|
def self.message(str)
|
87
87
|
STDERR.puts " #{str}"
|
88
88
|
end
|
89
|
+
def self.progress(key, str)
|
90
|
+
STDERR.puts " #{str}"
|
91
|
+
end
|
92
|
+
def self.progress_done(key)
|
93
|
+
end
|
94
|
+
def self.message(str)
|
95
|
+
STDERR.puts " #{str}"
|
96
|
+
end
|
89
97
|
|
90
98
|
class << self
|
91
99
|
attr_reader :programs
|
@@ -471,15 +479,15 @@ fi
|
|
471
479
|
# of GEM_PATH
|
472
480
|
def self.initialize_environment
|
473
481
|
Autobuild::ORIGINAL_ENV['GEM_PATH'] =
|
474
|
-
(ENV['GEM_PATH'] || "").split(
|
482
|
+
(ENV['GEM_PATH'] || "").split(File::PATH_SEPARATOR).find_all do |p|
|
475
483
|
!Autoproj.in_autoproj_installation?(p)
|
476
|
-
end.join(
|
484
|
+
end.join(File::PATH_SEPARATOR)
|
477
485
|
Autobuild.env_inherit 'GEM_PATH'
|
478
486
|
Autobuild.env_init_from_env 'GEM_PATH'
|
479
487
|
|
480
|
-
orig_gem_path = Autobuild::ORIGINAL_ENV['GEM_PATH'].split(
|
488
|
+
orig_gem_path = Autobuild::ORIGINAL_ENV['GEM_PATH'].split(File::PATH_SEPARATOR)
|
481
489
|
Autobuild::SYSTEM_ENV['GEM_PATH'] = Gem.default_path
|
482
|
-
Autobuild::ORIGINAL_ENV['GEM_PATH'] = orig_gem_path.join(
|
490
|
+
Autobuild::ORIGINAL_ENV['GEM_PATH'] = orig_gem_path.join(File::PATH_SEPARATOR)
|
483
491
|
|
484
492
|
Autoproj.manifest.each_reused_autoproj_installation do |p|
|
485
493
|
p_gems = File.join(Autoproj.root_dir, '.gems')
|
@@ -668,7 +676,7 @@ fi
|
|
668
676
|
|
669
677
|
#{cmdlines.map { |c| c.join(" ") }.join("\n ")}
|
670
678
|
|
671
|
-
Autoproj expects these Gems to be installed in #{
|
679
|
+
Autoproj expects these Gems to be installed in #{GemManager.gem_home} This can
|
672
680
|
be overridden by setting the AUTOPROJ_GEM_HOME environment variable manually
|
673
681
|
|
674
682
|
EOMSG
|
@@ -752,7 +760,7 @@ fi
|
|
752
760
|
|
753
761
|
#{cmdlines.map { |c| c.join(" ") }.join("\n ")}
|
754
762
|
|
755
|
-
Autoproj expects these Python packages to be installed in #{
|
763
|
+
Autoproj expects these Python packages to be installed in #{PipManager.pip_home} This can
|
756
764
|
be overridden by setting the AUTOPROJ_PYTHONUSERBASE environment variable manually
|
757
765
|
|
758
766
|
EOMSG
|
@@ -1052,18 +1060,26 @@ fi
|
|
1052
1060
|
end
|
1053
1061
|
else
|
1054
1062
|
Autobuild.progress :operating_system_autodetection, "autodetecting the operating system"
|
1055
|
-
|
1056
|
-
|
1057
|
-
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
1061
|
-
|
1062
|
-
|
1063
|
-
|
1064
|
-
|
1065
|
-
|
1066
|
-
|
1063
|
+
names, versions = os_from_os_release
|
1064
|
+
# Don't use the os-release information on Debian, since they
|
1065
|
+
# refuse to put enough information to detect 'unstable'
|
1066
|
+
# reliably. So, we use Debian's heuristic detection method below
|
1067
|
+
if names && names[0] != 'debian'
|
1068
|
+
@operating_system = [names, versions]
|
1069
|
+
else
|
1070
|
+
lsb_name, lsb_versions = os_from_lsb
|
1071
|
+
if lsb_name
|
1072
|
+
if lsb_name != 'debian' && File.exists?("/etc/debian_version")
|
1073
|
+
@operating_system = [[lsb_name, "debian"], lsb_versions]
|
1074
|
+
elsif lsb_name != 'arch' && File.exists?("/etc/arch-release")
|
1075
|
+
@operating_system = [[lsb_name, "arch"], lsb_versions]
|
1076
|
+
elsif lsb_name != 'opensuse' && File.exists?("/etc/SuSE-release")
|
1077
|
+
@operating_system = [[lsb_name, "opensuse"], lsb_versions]
|
1078
|
+
elsif lsb_name != 'debian'
|
1079
|
+
# Debian unstable cannot be detected with lsb_release,
|
1080
|
+
# so debian has its own detection logic
|
1081
|
+
@operating_system = [[lsb_name], lsb_versions]
|
1082
|
+
end
|
1067
1083
|
end
|
1068
1084
|
end
|
1069
1085
|
end
|
@@ -1125,13 +1141,28 @@ fi
|
|
1125
1141
|
Autobuild.progress_done :operating_system_autodetection
|
1126
1142
|
end
|
1127
1143
|
|
1144
|
+
def self.os_from_os_release(filename = '/etc/os-release')
|
1145
|
+
return if !File.exists?(filename)
|
1146
|
+
|
1147
|
+
fields = Hash.new
|
1148
|
+
File.readlines(filename).each do |line|
|
1149
|
+
if line.strip =~ /^(\w+)=(?:["'])?([^"']+)(?:["'])?$/
|
1150
|
+
fields[$1] = $2
|
1151
|
+
else Autoproj.warn "error parsing /etc/os-release, line: #{line.inspect}"
|
1152
|
+
end
|
1153
|
+
end
|
1154
|
+
|
1155
|
+
names = []
|
1156
|
+
versions = []
|
1157
|
+
names << fields['ID'] << fields['ID_LIKE']
|
1158
|
+
versions << fields['VERSION_ID']
|
1159
|
+
version = fields['VERSION'] || ''
|
1160
|
+
versions.concat(version.gsub(/[^\w.]/, ' ').split(' '))
|
1161
|
+
return names.compact.uniq, versions.compact.uniq
|
1162
|
+
end
|
1163
|
+
|
1128
1164
|
def self.os_from_lsb
|
1129
|
-
|
1130
|
-
begin
|
1131
|
-
has_lsb_release = `which lsb_release`
|
1132
|
-
return unless $?.success?
|
1133
|
-
rescue Exception => e
|
1134
|
-
#seems which is not installes (e.g. on windows)
|
1165
|
+
if !Autobuild.find_in_path('lsb_release')
|
1135
1166
|
return
|
1136
1167
|
end
|
1137
1168
|
|
@@ -2128,16 +2159,6 @@ module Autoproj
|
|
2128
2159
|
Autobuild.env_inherit(*names)
|
2129
2160
|
end
|
2130
2161
|
|
2131
|
-
# Find the given program in PATH. It raises ArgumentError if the program
|
2132
|
-
# can't be found
|
2133
|
-
def self.find_in_path(name)
|
2134
|
-
result = ENV['PATH'].split(':').find { |dir| File.file?(File.join(dir, name)) }
|
2135
|
-
if !result
|
2136
|
-
raise ArgumentError, "#{name} can not be found in PATH (#{ENV['PATH']})"
|
2137
|
-
end
|
2138
|
-
File.join(result, name)
|
2139
|
-
end
|
2140
|
-
|
2141
2162
|
# @deprecated use isolate_environment instead
|
2142
2163
|
def self.set_initial_env
|
2143
2164
|
isolate_environment
|
@@ -2293,12 +2314,21 @@ ruby19:
|
|
2293
2314
|
- rake
|
2294
2315
|
- rubygems-integration
|
2295
2316
|
ubuntu:
|
2296
|
-
|
2297
|
-
|
2298
|
-
|
2299
|
-
|
2300
|
-
|
2301
|
-
|
2317
|
+
'12.04':
|
2318
|
+
- ruby1.9.1
|
2319
|
+
- ruby1.9.1-dev
|
2320
|
+
- rubygems1.9.1
|
2321
|
+
- ri1.9.1
|
2322
|
+
- libopenssl-ruby1.9.1
|
2323
|
+
- rake
|
2324
|
+
default:
|
2325
|
+
- ruby1.9.1
|
2326
|
+
- ruby1.9.1-dev
|
2327
|
+
- rubygems1.9.1
|
2328
|
+
- ri1.9.1
|
2329
|
+
- libopenssl-ruby1.9.1
|
2330
|
+
- rake
|
2331
|
+
- rubygems-integration
|
2302
2332
|
gentoo:
|
2303
2333
|
- dev-lang/ruby:1.9
|
2304
2334
|
- rake
|
data/bin/autoproj_bootstrap.in
CHANGED
@@ -86,6 +86,14 @@ module Autobuild
|
|
86
86
|
def self.message(str)
|
87
87
|
STDERR.puts " #{str}"
|
88
88
|
end
|
89
|
+
def self.progress(key, str)
|
90
|
+
STDERR.puts " #{str}"
|
91
|
+
end
|
92
|
+
def self.progress_done(key)
|
93
|
+
end
|
94
|
+
def self.message(str)
|
95
|
+
STDERR.puts " #{str}"
|
96
|
+
end
|
89
97
|
|
90
98
|
class << self
|
91
99
|
attr_reader :programs
|
data/lib/autoproj/default.osdeps
CHANGED
@@ -31,12 +31,21 @@ ruby19:
|
|
31
31
|
- rubygems-integration
|
32
32
|
|
33
33
|
ubuntu:
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
34
|
+
'12.04':
|
35
|
+
- ruby1.9.1
|
36
|
+
- ruby1.9.1-dev
|
37
|
+
- rubygems1.9.1
|
38
|
+
- ri1.9.1
|
39
|
+
- libopenssl-ruby1.9.1
|
40
|
+
- rake
|
41
|
+
default:
|
42
|
+
- ruby1.9.1
|
43
|
+
- ruby1.9.1-dev
|
44
|
+
- rubygems1.9.1
|
45
|
+
- ri1.9.1
|
46
|
+
- libopenssl-ruby1.9.1
|
47
|
+
- rake
|
48
|
+
- rubygems-integration
|
40
49
|
gentoo:
|
41
50
|
- dev-lang/ruby:1.9
|
42
51
|
- rake
|
data/lib/autoproj/environment.rb
CHANGED
@@ -2,7 +2,7 @@ module Autoproj
|
|
2
2
|
# Sets an environment variable
|
3
3
|
#
|
4
4
|
# This sets (or resets) the environment variable +name+ to the given value.
|
5
|
-
# If multiple values are given, they are joined with
|
5
|
+
# If multiple values are given, they are joined with File::PATH_SEPARATOR
|
6
6
|
#
|
7
7
|
# The values can contain configuration parameters using the
|
8
8
|
# $CONF_VARIABLE_NAME syntax.
|
@@ -14,7 +14,7 @@ module Autoproj
|
|
14
14
|
# Adds new values to a given environment variable
|
15
15
|
#
|
16
16
|
# Adds the given value(s) to the environment variable named +name+. The
|
17
|
-
# values are added using the
|
17
|
+
# values are added using the File::PATH_SEPARATOR marker
|
18
18
|
#
|
19
19
|
# The values can contain configuration parameters using the
|
20
20
|
# $CONF_VARIABLE_NAME syntax.
|
@@ -27,8 +27,8 @@ module Autoproj
|
|
27
27
|
# PATH, RUBYLIB, PYTHONPATH)
|
28
28
|
#
|
29
29
|
# This sets (or resets) the environment variable +name+ to the given value.
|
30
|
-
# If multiple values are given, they are joined with
|
31
|
-
# duplicate values will be removed.
|
30
|
+
# If multiple values are given, they are joined with File::PATH_SEPARATOR.
|
31
|
+
# Unlike env_set, duplicate values will be removed.
|
32
32
|
#
|
33
33
|
# The values can contain configuration parameters using the
|
34
34
|
# $CONF_VARIABLE_NAME syntax.
|
@@ -41,7 +41,8 @@ module Autoproj
|
|
41
41
|
# variable (such as PATH, RUBYLIB, PYTHONPATH)
|
42
42
|
#
|
43
43
|
# Adds the given value(s) to the environment variable named +name+. The
|
44
|
-
# values are added using the
|
44
|
+
# values are added using the File::PATH_SEPARATOR marker. Unlike env_set,
|
45
|
+
# duplicate values
|
45
46
|
# will be removed.
|
46
47
|
#
|
47
48
|
# The values can contain configuration parameters using the
|
data/lib/autoproj/osdeps.rb
CHANGED
@@ -355,15 +355,15 @@ fi
|
|
355
355
|
# of GEM_PATH
|
356
356
|
def self.initialize_environment
|
357
357
|
Autobuild::ORIGINAL_ENV['GEM_PATH'] =
|
358
|
-
(ENV['GEM_PATH'] || "").split(
|
358
|
+
(ENV['GEM_PATH'] || "").split(File::PATH_SEPARATOR).find_all do |p|
|
359
359
|
!Autoproj.in_autoproj_installation?(p)
|
360
|
-
end.join(
|
360
|
+
end.join(File::PATH_SEPARATOR)
|
361
361
|
Autobuild.env_inherit 'GEM_PATH'
|
362
362
|
Autobuild.env_init_from_env 'GEM_PATH'
|
363
363
|
|
364
|
-
orig_gem_path = Autobuild::ORIGINAL_ENV['GEM_PATH'].split(
|
364
|
+
orig_gem_path = Autobuild::ORIGINAL_ENV['GEM_PATH'].split(File::PATH_SEPARATOR)
|
365
365
|
Autobuild::SYSTEM_ENV['GEM_PATH'] = Gem.default_path
|
366
|
-
Autobuild::ORIGINAL_ENV['GEM_PATH'] = orig_gem_path.join(
|
366
|
+
Autobuild::ORIGINAL_ENV['GEM_PATH'] = orig_gem_path.join(File::PATH_SEPARATOR)
|
367
367
|
|
368
368
|
Autoproj.manifest.each_reused_autoproj_installation do |p|
|
369
369
|
p_gems = File.join(Autoproj.root_dir, '.gems')
|
@@ -552,7 +552,7 @@ fi
|
|
552
552
|
|
553
553
|
#{cmdlines.map { |c| c.join(" ") }.join("\n ")}
|
554
554
|
|
555
|
-
Autoproj expects these Gems to be installed in #{
|
555
|
+
Autoproj expects these Gems to be installed in #{GemManager.gem_home} This can
|
556
556
|
be overridden by setting the AUTOPROJ_GEM_HOME environment variable manually
|
557
557
|
|
558
558
|
EOMSG
|
@@ -636,7 +636,7 @@ fi
|
|
636
636
|
|
637
637
|
#{cmdlines.map { |c| c.join(" ") }.join("\n ")}
|
638
638
|
|
639
|
-
Autoproj expects these Python packages to be installed in #{
|
639
|
+
Autoproj expects these Python packages to be installed in #{PipManager.pip_home} This can
|
640
640
|
be overridden by setting the AUTOPROJ_PYTHONUSERBASE environment variable manually
|
641
641
|
|
642
642
|
EOMSG
|
@@ -936,18 +936,26 @@ fi
|
|
936
936
|
end
|
937
937
|
else
|
938
938
|
Autobuild.progress :operating_system_autodetection, "autodetecting the operating system"
|
939
|
-
|
940
|
-
|
941
|
-
|
942
|
-
|
943
|
-
|
944
|
-
|
945
|
-
|
946
|
-
|
947
|
-
|
948
|
-
|
949
|
-
|
950
|
-
|
939
|
+
names, versions = os_from_os_release
|
940
|
+
# Don't use the os-release information on Debian, since they
|
941
|
+
# refuse to put enough information to detect 'unstable'
|
942
|
+
# reliably. So, we use Debian's heuristic detection method below
|
943
|
+
if names && names[0] != 'debian'
|
944
|
+
@operating_system = [names, versions]
|
945
|
+
else
|
946
|
+
lsb_name, lsb_versions = os_from_lsb
|
947
|
+
if lsb_name
|
948
|
+
if lsb_name != 'debian' && File.exists?("/etc/debian_version")
|
949
|
+
@operating_system = [[lsb_name, "debian"], lsb_versions]
|
950
|
+
elsif lsb_name != 'arch' && File.exists?("/etc/arch-release")
|
951
|
+
@operating_system = [[lsb_name, "arch"], lsb_versions]
|
952
|
+
elsif lsb_name != 'opensuse' && File.exists?("/etc/SuSE-release")
|
953
|
+
@operating_system = [[lsb_name, "opensuse"], lsb_versions]
|
954
|
+
elsif lsb_name != 'debian'
|
955
|
+
# Debian unstable cannot be detected with lsb_release,
|
956
|
+
# so debian has its own detection logic
|
957
|
+
@operating_system = [[lsb_name], lsb_versions]
|
958
|
+
end
|
951
959
|
end
|
952
960
|
end
|
953
961
|
end
|
@@ -1009,13 +1017,28 @@ fi
|
|
1009
1017
|
Autobuild.progress_done :operating_system_autodetection
|
1010
1018
|
end
|
1011
1019
|
|
1020
|
+
def self.os_from_os_release(filename = '/etc/os-release')
|
1021
|
+
return if !File.exists?(filename)
|
1022
|
+
|
1023
|
+
fields = Hash.new
|
1024
|
+
File.readlines(filename).each do |line|
|
1025
|
+
if line.strip =~ /^(\w+)=(?:["'])?([^"']+)(?:["'])?$/
|
1026
|
+
fields[$1] = $2
|
1027
|
+
else Autoproj.warn "error parsing /etc/os-release, line: #{line.inspect}"
|
1028
|
+
end
|
1029
|
+
end
|
1030
|
+
|
1031
|
+
names = []
|
1032
|
+
versions = []
|
1033
|
+
names << fields['ID'] << fields['ID_LIKE']
|
1034
|
+
versions << fields['VERSION_ID']
|
1035
|
+
version = fields['VERSION'] || ''
|
1036
|
+
versions.concat(version.gsub(/[^\w.]/, ' ').split(' '))
|
1037
|
+
return names.compact.uniq, versions.compact.uniq
|
1038
|
+
end
|
1039
|
+
|
1012
1040
|
def self.os_from_lsb
|
1013
|
-
|
1014
|
-
begin
|
1015
|
-
has_lsb_release = `which lsb_release`
|
1016
|
-
return unless $?.success?
|
1017
|
-
rescue Exception => e
|
1018
|
-
#seems which is not installes (e.g. on windows)
|
1041
|
+
if !Autobuild.find_in_path('lsb_release')
|
1019
1042
|
return
|
1020
1043
|
end
|
1021
1044
|
|
data/lib/autoproj/package_set.rb
CHANGED
@@ -236,7 +236,7 @@ module Autoproj
|
|
236
236
|
definition = @source_definition || raw_description_file
|
237
237
|
@name = definition['name']
|
238
238
|
|
239
|
-
if @name !~ /^[\
|
239
|
+
if @name !~ /^[\w\.-]+$/
|
240
240
|
raise ConfigError.new(source_file),
|
241
241
|
"in #{source_file}: invalid source name '#{@name}': source names can only contain alphanumeric characters, and .-_"
|
242
242
|
elsif @name == "local"
|
@@ -373,7 +373,7 @@ module Autoproj
|
|
373
373
|
end
|
374
374
|
|
375
375
|
name_match = name
|
376
|
-
if name_match =~ /[^\w
|
376
|
+
if name_match =~ /[^\w\/-]/
|
377
377
|
name_match = Regexp.new("^" + name_match)
|
378
378
|
end
|
379
379
|
if name_match === package_name
|
@@ -435,7 +435,7 @@ module Autoproj
|
|
435
435
|
return enum_for(:each_package)
|
436
436
|
end
|
437
437
|
|
438
|
-
|
438
|
+
manifest.packages.each_value do |pkg|
|
439
439
|
if pkg.package_set.name == name
|
440
440
|
yield(pkg.autobuild)
|
441
441
|
end
|
data/lib/autoproj/system.rb
CHANGED
@@ -121,16 +121,6 @@ module Autoproj
|
|
121
121
|
Autobuild.env_inherit(*names)
|
122
122
|
end
|
123
123
|
|
124
|
-
# Find the given program in PATH. It raises ArgumentError if the program
|
125
|
-
# can't be found
|
126
|
-
def self.find_in_path(name)
|
127
|
-
result = ENV['PATH'].split(':').find { |dir| File.file?(File.join(dir, name)) }
|
128
|
-
if !result
|
129
|
-
raise ArgumentError, "#{name} can not be found in PATH (#{ENV['PATH']})"
|
130
|
-
end
|
131
|
-
File.join(result, name)
|
132
|
-
end
|
133
|
-
|
134
124
|
# @deprecated use isolate_environment instead
|
135
125
|
def self.set_initial_env
|
136
126
|
isolate_environment
|
data/lib/autoproj/version.rb
CHANGED
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
name: local_set
|
@@ -87,6 +87,11 @@ class TC_OSDependencies_Gem < Test::Unit::TestCase
|
|
87
87
|
assert_equal [], gem_manager.filter_uptodate_packages([['pkg0', '>= 0.9']])
|
88
88
|
end
|
89
89
|
|
90
|
+
# Helper to have a shortcut for the default install options
|
91
|
+
def default_install_options
|
92
|
+
Autoproj::PackageManagers::GemManager.default_install_options
|
93
|
+
end
|
94
|
+
|
90
95
|
def test_install_packages
|
91
96
|
PackageManagers::GemManager.with_prerelease = false
|
92
97
|
PackageManagers::GemManager.with_doc = false
|
@@ -94,11 +99,11 @@ class TC_OSDependencies_Gem < Test::Unit::TestCase
|
|
94
99
|
|
95
100
|
packages = [['pkg0'], ['pkg1', '>= 0.5'], ['pkg2'], ['pkg3', '>= 0.9']]
|
96
101
|
subprocess.should_receive(:run).
|
97
|
-
with(any, any, 'mygem', 'install', '--no-rdoc', '--no-ri', 'pkg0', 'pkg2').once
|
102
|
+
with(any, any, any, any, 'mygem', 'install', *default_install_options, '--no-rdoc', '--no-ri', 'pkg0', 'pkg2').once
|
98
103
|
subprocess.should_receive(:run).
|
99
|
-
with(any, any, 'mygem', 'install', '--no-rdoc', '--no-ri', 'pkg1', '-v', '>= 0.5').once
|
104
|
+
with(any, any, any, any, 'mygem', 'install', *default_install_options, '--no-rdoc', '--no-ri', 'pkg1', '-v', '>= 0.5').once
|
100
105
|
subprocess.should_receive(:run).
|
101
|
-
with(any, any, 'mygem', 'install', '--no-rdoc', '--no-ri', 'pkg3', '-v', '>= 0.9').once
|
106
|
+
with(any, any, any, any, 'mygem', 'install', *default_install_options, '--no-rdoc', '--no-ri', 'pkg3', '-v', '>= 0.9').once
|
102
107
|
gem_manager.install(packages)
|
103
108
|
end
|
104
109
|
|
@@ -109,7 +114,7 @@ class TC_OSDependencies_Gem < Test::Unit::TestCase
|
|
109
114
|
|
110
115
|
packages = [['pkg0']]
|
111
116
|
subprocess.should_receive(:run).
|
112
|
-
with(any, any, 'mygem', 'install', 'pkg0').once
|
117
|
+
with(any, any, any, any, 'mygem', 'install', *default_install_options, 'pkg0').once
|
113
118
|
gem_manager.install([['pkg0']])
|
114
119
|
end
|
115
120
|
|
@@ -119,7 +124,7 @@ class TC_OSDependencies_Gem < Test::Unit::TestCase
|
|
119
124
|
subprocess = flexmock(Autobuild::Subprocess)
|
120
125
|
|
121
126
|
subprocess.should_receive(:run).
|
122
|
-
with(any, any, 'mygem', 'install', '--prerelease', 'pkg0').once
|
127
|
+
with(any, any, any, any, 'mygem', 'install', *default_install_options, '--prerelease', 'pkg0').once
|
123
128
|
gem_manager.install([['pkg0']])
|
124
129
|
end
|
125
130
|
|
data/test/test_manifest.rb
CHANGED
@@ -8,30 +8,22 @@ class TC_Manifest < Test::Unit::TestCase
|
|
8
8
|
DATA_DIR = File.expand_path('data', File.dirname(__FILE__))
|
9
9
|
include Autoproj
|
10
10
|
|
11
|
-
def
|
11
|
+
def test_each_package_set
|
12
12
|
Dir.chdir(File.join(DATA_DIR, 'test_manifest', 'autoproj')) do
|
13
13
|
manifest = Manifest.load(File.join(DATA_DIR, 'test_manifest', 'autoproj', 'manifest'))
|
14
|
-
sources = manifest.
|
14
|
+
sources = manifest.each_package_set(false).to_set
|
15
15
|
|
16
16
|
test_data = "#{DATA_DIR}/test_manifest"
|
17
17
|
test_data_name = test_data.gsub '/', '_'
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
{}],
|
28
|
-
["#{test_data_name}_remote2_git", "git",
|
29
|
-
"#{test_data}/remote2.git",
|
30
|
-
"#{test_data}/autoproj/remotes/_home_doudou_src_autoproj_test_data_test_manifest_remote2_git",
|
31
|
-
{:branch=>"next"}]
|
32
|
-
]
|
33
|
-
|
34
|
-
assert_equal(expected.to_set, sources)
|
19
|
+
local_set = sources.find { |pkg_set| pkg_set.name == 'local_set' }
|
20
|
+
assert local_set
|
21
|
+
assert_equal "#{test_data}/autoproj/local_set", local_set.raw_local_dir
|
22
|
+
assert local_set.local?
|
23
|
+
|
24
|
+
remote_set = sources.find { |pkg_set| pkg_set.name == "git:remote2.git branch=next"}
|
25
|
+
assert remote_set, "available package sets: #{sources.map(&:name)}"
|
26
|
+
assert_equal "#{test_data}/.remotes/git__home_doudou_dev_rock_master_tools_autoproj_test_data_test_manifest_remote2_git", remote_set.raw_local_dir
|
35
27
|
end
|
36
28
|
end
|
37
29
|
|
@@ -516,5 +516,37 @@ class TC_OSDependencies < Test::Unit::TestCase
|
|
516
516
|
flexmock(OSDependencies).should_receive(:supported_operating_system?).and_return(false)
|
517
517
|
assert_equal [[osdeps.os_package_handler, ['a_package']]], osdeps.resolve_os_dependencies(['a_package'])
|
518
518
|
end
|
519
|
+
|
520
|
+
DATA_DIR = File.expand_path('data', File.dirname(__FILE__))
|
521
|
+
def test_os_from_os_release_returns_nil_if_the_os_release_file_is_not_found
|
522
|
+
assert !Autoproj::OSDependencies.os_from_os_release('does_not_exist')
|
523
|
+
end
|
524
|
+
def test_os_from_os_release_handles_quoted_and_unquoted_fields
|
525
|
+
names, versions = Autoproj::OSDependencies.os_from_os_release(
|
526
|
+
File.join(DATA_DIR, 'os_release.with_missing_optional_fields'))
|
527
|
+
assert_equal ['name'], names
|
528
|
+
assert_equal ['version_id'], versions
|
529
|
+
end
|
530
|
+
def test_os_from_os_release_handles_optional_fields
|
531
|
+
names, versions = Autoproj::OSDependencies.os_from_os_release(
|
532
|
+
File.join(DATA_DIR, 'os_release.with_missing_optional_fields'))
|
533
|
+
assert_equal ['name'], names
|
534
|
+
assert_equal ['version_id'], versions
|
535
|
+
end
|
536
|
+
def test_os_from_os_release_parses_the_version_field
|
537
|
+
_, versions = Autoproj::OSDependencies.os_from_os_release(
|
538
|
+
File.join(DATA_DIR, 'os_release.with_complex_version_field'))
|
539
|
+
assert_equal ['version_id', 'version', 'codename', 'codename_bis'], versions
|
540
|
+
end
|
541
|
+
def test_os_from_os_release_removes_duplicate_values
|
542
|
+
names, versions = Autoproj::OSDependencies.os_from_os_release(
|
543
|
+
File.join(DATA_DIR, 'os_release.with_duplicate_values'))
|
544
|
+
assert_equal ['id'], names
|
545
|
+
assert_equal ['version_id', 'codename'], versions
|
546
|
+
end
|
547
|
+
def test_os_from_lsb_returns_nil_if_lsb_release_is_not_found_in_path
|
548
|
+
flexmock(ENV).should_receive('[]').with('PATH').and_return('')
|
549
|
+
assert !Autoproj::OSDependencies.os_from_lsb
|
550
|
+
end
|
519
551
|
end
|
520
552
|
|
@@ -59,7 +59,7 @@ class TC_PackageManifest < Test::Unit::TestCase
|
|
59
59
|
|
60
60
|
def test_failure_on_wrong_document
|
61
61
|
data = File.join(DATA_DIR, 'invalid_manifest.xml')
|
62
|
-
assert_raises(
|
62
|
+
assert_raises(Autobuild::PackageException) { Autoproj::PackageManifest.load(pkg, data) }
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: autoproj
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.9.7.
|
4
|
+
version: 1.9.7.rc10
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-05-
|
12
|
+
date: 2014-05-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: autobuild
|
@@ -183,7 +183,12 @@ files:
|
|
183
183
|
- test/data/empty_manifest.xml
|
184
184
|
- test/data/full_manifest.xml
|
185
185
|
- test/data/invalid_manifest.xml
|
186
|
-
- test/data/
|
186
|
+
- test/data/os_release.with_complex_version_field
|
187
|
+
- test/data/os_release.with_duplicate_values
|
188
|
+
- test/data/os_release.with_missing_optional_fields
|
189
|
+
- test/data/os_release.with_quoted_and_unquoted_fields
|
190
|
+
- test/data/test_manifest/autoproj/local_set/local.autobuild
|
191
|
+
- test/data/test_manifest/autoproj/local_set/source.yml
|
187
192
|
- test/data/test_manifest/autoproj/manifest
|
188
193
|
- test/package_managers/apt-dpkg-status
|
189
194
|
- test/package_managers/apt-dpkg-status.installed-last
|
@@ -191,7 +196,6 @@ files:
|
|
191
196
|
- test/package_managers/test_apt_dpkg_manager.rb
|
192
197
|
- test/package_managers/test_gem.rb
|
193
198
|
- test/package_managers/test_pip.rb
|
194
|
-
- test/test_debian.rb
|
195
199
|
- test/test_manifest.rb
|
196
200
|
- test/test_os_dependencies.rb
|
197
201
|
- test/test_package_manifest.rb
|
@@ -225,7 +229,6 @@ specification_version: 3
|
|
225
229
|
summary: Easy installation and management of sets of software packages
|
226
230
|
test_files:
|
227
231
|
- test/test_os_dependencies.rb
|
228
|
-
- test/test_debian.rb
|
229
232
|
- test/test_manifest.rb
|
230
233
|
- test/package_managers/test_apt_dpkg_manager.rb
|
231
234
|
- test/package_managers/test_gem.rb
|
data/test/test_debian.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift File.expand_path('../lib', File.dirname(__FILE__))
|
2
|
-
require 'test/unit'
|
3
|
-
require 'autoproj/system'
|
4
|
-
|
5
|
-
class TC_Debian < Test::Unit::TestCase
|
6
|
-
def test_debian_detection
|
7
|
-
assert Autoproj.on_debian?
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_apt_version
|
11
|
-
apt_version = Autoproj.apt_version
|
12
|
-
version_string = apt_version.join(".")
|
13
|
-
assert `apt-get -v` =~ /#{Regexp.quote(version_string)}/
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|