facter 3.11.6.cfacter.20181031 → 3.12.0.cfacter.20180918

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +5 -5
  2. data/ext/facter/cpp-hocon/CMakeLists.txt +1 -1
  3. data/ext/facter/cpp-hocon/lib/inc/hocon/types.hpp +6 -0
  4. data/ext/facter/cpp-hocon/lib/src/parseable.cc +3 -0
  5. data/ext/facter/facter/CMakeLists.txt +1 -1
  6. data/ext/facter/facter/acceptance/lib/facter/acceptance/base_fact_utils.rb +1 -3
  7. data/ext/facter/facter/acceptance/tests/facts/dmi.rb +1 -1
  8. data/ext/facter/facter/appveyor.yml +17 -14
  9. data/ext/facter/facter/exe/facter.cc +1 -2
  10. data/ext/facter/facter/lib/CMakeLists.txt +17 -1
  11. data/ext/facter/facter/lib/Doxyfile +1 -1
  12. data/ext/facter/facter/lib/inc/facter/facts/os.hpp +8 -0
  13. data/ext/facter/facter/lib/inc/facter/ruby/ruby.hpp +0 -11
  14. data/ext/facter/facter/lib/inc/internal/facts/freebsd/disk_resolver.hpp +25 -0
  15. data/ext/facter/facter/lib/inc/internal/facts/freebsd/filesystem_resolver.hpp +25 -0
  16. data/ext/facter/facter/lib/inc/internal/util/freebsd/geom.hpp +149 -0
  17. data/ext/facter/facter/lib/src/facts/collection.cc +0 -2
  18. data/ext/facter/facter/lib/src/facts/freebsd/collection.cc +4 -2
  19. data/ext/facter/facter/lib/src/facts/freebsd/disk_resolver.cc +34 -0
  20. data/ext/facter/facter/lib/src/facts/freebsd/filesystem_resolver.cc +37 -0
  21. data/ext/facter/facter/lib/src/facts/linux/os_linux.cc +4 -0
  22. data/ext/facter/facter/lib/src/facts/windows/dmi_resolver.cc +2 -3
  23. data/ext/facter/facter/lib/src/facts/windows/operating_system_resolver.cc +1 -23
  24. data/ext/facter/facter/lib/src/ruby/fact.cc +41 -57
  25. data/ext/facter/facter/lib/src/ruby/ruby.cc +3 -35
  26. data/ext/facter/facter/lib/src/util/freebsd/geom.cc +130 -0
  27. data/ext/facter/facter/lib/tests/CMakeLists.txt +25 -9
  28. data/ext/facter/facter/lib/tests/facts/collection.cc +1 -1
  29. data/ext/facter/facter/lib/tests/fixtures.cc +1 -0
  30. data/ext/facter/facter/locales/FACTER.pot +18 -18
  31. data/ext/facter/leatherman/CMakeLists.txt +1 -1
  32. data/ext/facter/leatherman/cmake/cflags.cmake +2 -2
  33. data/ext/facter/leatherman/dynamic_library/CMakeLists.txt +1 -1
  34. data/ext/facter/leatherman/locale/src/locale.cc +1 -0
  35. data/ext/facter/leatherman/ruby/inc/leatherman/ruby/api.hpp +0 -4
  36. data/ext/facter/leatherman/ruby/src/api.cc +0 -1
  37. data/ext/facter/leatherman/util/inc/leatherman/util/strings.hpp +3 -0
  38. data/ext/facter/leatherman/windows/CMakeLists.txt +1 -1
  39. data/ext/facter/leatherman/windows/inc/leatherman/windows/wmi.hpp +0 -5
  40. metadata +9 -4
  41. data/ext/facter/facter/acceptance/tests/custom_facts/conflicts_with_builtin_fact.rb +0 -106
@@ -40,7 +40,6 @@ set(LIBFACTER_TESTS_COMMON_SOURCES
40
40
  "logging/logging.cc"
41
41
  "log_capture.cc"
42
42
  "main.cc"
43
- "mock_server.cc"
44
43
  "util/string.cc"
45
44
  "fixtures.cc"
46
45
  "collection_fixture.cc"
@@ -128,20 +127,37 @@ include_directories(
128
127
  ${CPPHOCON_INCLUDE_DIRS}
129
128
  )
130
129
 
130
+ # On EL 4, we run into a linking error when trying to create libraries or
131
+ # executables that link in a static library with code using threads. As I
132
+ # described in https://gcc.gnu.org/ml/gcc-help/2015-08/msg00035.html, we get
133
+ # the error undefined reference to symbol '__tls_get_addr@@GLIBC_2.3'.
134
+ # Build mock_server as a separate shared library to avoid this error.
131
135
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations")
132
- if (WIN32)
133
- # On Windows with GCC 5.2, Boost.System emits warnings that aren't correctly
134
- # suppressed by pragmas. Explicitly skip them.
135
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable")
136
- endif()
136
+ add_library(mock-server SHARED mock_server.cc)
137
+ target_link_libraries(mock-server PRIVATE
138
+ ${Boost_THREAD_LIBRARY}
139
+ ${Boost_SYSTEM_LIBRARY}
140
+ ${LIBFACTER_TESTS_PLATFORM_LIBRARIES})
137
141
 
138
142
  add_executable(libfacter_test $<TARGET_OBJECTS:libfactersrc>
139
143
  ${LIBFACTER_TESTS_COMMON_SOURCES}
140
144
  ${LIBFACTER_TESTS_PLATFORM_SOURCES}
141
145
  ${LIBFACTER_TESTS_CATEGORY_SOURCES})
142
- target_link_libraries(libfacter_test
143
- ${LIBS}
144
- ${LIBFACTER_TESTS_PLATFORM_LIBRARIES})
146
+ # On Windows, mock-server comes after Boost libraries to avoid double
147
+ # definition of boost::system::system_category() on Windows. On Linux, it
148
+ # comes before to avoid picking up incomplete Boost.Asio symbols included
149
+ # by Boost.Log in Leatherman logging.
150
+ if (WIN32)
151
+ target_link_libraries(libfacter_test
152
+ ${LIBS}
153
+ ${LIBFACTER_TESTS_PLATFORM_LIBRARIES}
154
+ mock-server)
155
+ else()
156
+ target_link_libraries(libfacter_test
157
+ mock-server
158
+ ${LIBS}
159
+ ${LIBFACTER_TESTS_PLATFORM_LIBRARIES})
160
+ endif()
145
161
 
146
162
  if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND BOOST_STATIC AND LEATHERMAN_USE_LOCALES)
147
163
  target_link_libraries(libfacter_test iconv)
@@ -67,7 +67,7 @@ struct multi_resolver : facter::facts::resolver
67
67
 
68
68
  struct temp_variable
69
69
  {
70
- temp_variable(string&& name, string const& value) :
70
+ temp_variable(string name, string const& value) :
71
71
  _name(move(name))
72
72
  {
73
73
  environment::set(_name, value);
@@ -6,6 +6,7 @@
6
6
 
7
7
  #pragma GCC diagnostic push
8
8
  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
9
+ #pragma GCC diagnostic ignored "-Wunused-variable"
9
10
  #include <boost/thread/thread.hpp>
10
11
  #include <boost/chrono/duration.hpp>
11
12
  #pragma GCC diagnostic pop
@@ -6,7 +6,7 @@
6
6
  #, fuzzy
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: FACTER 3.11.5\n"
9
+ "Project-Id-Version: FACTER 3.12.0\n"
10
10
  "Report-Msgid-Bugs-To: docs@puppet.com\n"
11
11
  "POT-Creation-Date: \n"
12
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
@@ -1225,6 +1225,11 @@ msgstr ""
1225
1225
  msgid "failed adding platform facts that require WMI: {1}"
1226
1226
  msgstr ""
1227
1227
 
1228
+ #. debug
1229
+ #: lib/src/facts/windows/dmi_resolver.cc
1230
+ msgid "WMI query returned no results for {1} with value {2}."
1231
+ msgstr ""
1232
+
1228
1233
  #. debug
1229
1234
  #: lib/src/facts/windows/dmi_resolver.cc
1230
1235
  msgid "WMI query returned no results for {1} with values {2} and {3}."
@@ -1289,13 +1294,6 @@ msgstr ""
1289
1294
  msgid "error finding SYSTEMROOT: {1}"
1290
1295
  msgstr ""
1291
1296
 
1292
- #. debug
1293
- #: lib/src/facts/windows/operating_system_resolver.cc
1294
- msgid ""
1295
- "Could not resolve the OS release and OS major version facts from the kernel "
1296
- "version fact"
1297
- msgstr ""
1298
-
1299
1297
  #. debug
1300
1298
  #: lib/src/facts/windows/processor_resolver.cc
1301
1299
  msgid "WMI processor Name, Architecture query returned no results."
@@ -1531,16 +1529,6 @@ msgstr ""
1531
1529
  msgid "timeout= is not supported for custom facts and will be ignored."
1532
1530
  msgstr ""
1533
1531
 
1534
- #. debug
1535
- #: lib/src/ruby/ruby.cc
1536
- msgid "Redirecting ruby's stdout to stderr"
1537
- msgstr ""
1538
-
1539
- #. debug
1540
- #: lib/src/ruby/ruby.cc
1541
- msgid "Restoring Ruby's stdout"
1542
- msgstr ""
1543
-
1544
1532
  #. warning
1545
1533
  #: lib/src/ruby/ruby.cc
1546
1534
  msgid "Could not load puppet; some facts may be unavailable: {1}"
@@ -1559,6 +1547,18 @@ msgstr ""
1559
1547
  msgid "a block is unexpected when passing a String"
1560
1548
  msgstr ""
1561
1549
 
1550
+ #: lib/src/util/freebsd/geom.cc
1551
+ msgid "Skipping config {1} because it has a null value"
1552
+ msgstr ""
1553
+
1554
+ #: lib/src/util/freebsd/geom.cc
1555
+ msgid "Unable to get GEOM tree"
1556
+ msgstr ""
1557
+
1558
+ #: lib/src/util/freebsd/geom.cc
1559
+ msgid "The GEOM class \"{1}\" was not found"
1560
+ msgstr ""
1561
+
1562
1562
  #: lib/src/util/posix/utmpx_file.cc
1563
1563
  msgid "only one utmpx_file instance can exist at a time!"
1564
1564
  msgstr ""
@@ -1,5 +1,5 @@
1
1
  cmake_minimum_required(VERSION 3.2.2)
2
- project(leatherman VERSION 1.4.4)
2
+ project(leatherman VERSION 1.5.0)
3
3
 
4
4
  if (WIN32)
5
5
  link_libraries("-Wl,--nxcompat -Wl,--dynamicbase")
@@ -70,9 +70,9 @@ endif()
70
70
  if (WIN32)
71
71
  # Update standard link libraries to explicitly exclude kernel32. It isn't necessary, and when compiling with
72
72
  # MinGW makes the executable unusable on Microsoft Nano Server due to including __C_specific_handler.
73
- SET(CMAKE_C_STANDARD_LIBRARIES "-luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32"
73
+ SET(CMAKE_C_STANDARD_LIBRARIES "-luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 -lbcrypt"
74
74
  CACHE STRING "Standard C link libraries." FORCE)
75
- SET(CMAKE_CXX_STANDARD_LIBRARIES "-luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32"
75
+ SET(CMAKE_CXX_STANDARD_LIBRARIES "-luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 -lbcrypt"
76
76
  CACHE STRING "Standard C++ link libraries." FORCE)
77
77
 
78
78
  # We currently support Windows Vista and later APIs, see
@@ -1,4 +1,4 @@
1
- find_package(Boost 1.54 REQUIRED COMPONENTS regex)
1
+ find_package(Boost 1.54 REQUIRED COMPONENTS regex system)
2
2
 
3
3
  add_leatherman_deps("${Boost_LIBRARIES}")
4
4
  add_leatherman_includes("${Boost_INCLUDE_DIRS}")
@@ -5,6 +5,7 @@
5
5
  // boost includes are not always warning-clean. Disable warnings that
6
6
  // cause problems before including the headers, then re-enable the warnings.
7
7
  #pragma GCC diagnostic push
8
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
8
9
  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
9
10
  #include <boost/locale.hpp>
10
11
  #pragma GCC diagnostic pop
@@ -207,10 +207,6 @@ namespace leatherman { namespace ruby {
207
207
  * See MRI documentation.
208
208
  */
209
209
  VALUE (* const rb_gv_get)(char const*);
210
- /**
211
- * See MRI documentation.
212
- */
213
- VALUE (* const rb_gv_set)(char const*, VALUE);
214
210
  /**
215
211
  * See MRI documentation.
216
212
  */
@@ -51,7 +51,6 @@ namespace leatherman { namespace ruby {
51
51
  LOAD_SYMBOL(rb_define_singleton_method),
52
52
  LOAD_SYMBOL(rb_class_new_instance),
53
53
  LOAD_SYMBOL(rb_gv_get),
54
- LOAD_SYMBOL(rb_gv_set),
55
54
  LOAD_SYMBOL(rb_eval_string),
56
55
  LOAD_SYMBOL(rb_funcall),
57
56
  LOAD_ALIASED_SYMBOL(rb_funcallv, rb_funcall2),
@@ -4,8 +4,11 @@
4
4
  */
5
5
  #pragma once
6
6
 
7
+ #pragma GCC diagnostic push
8
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
7
9
  #include <boost/algorithm/string/predicate.hpp>
8
10
  #include <boost/algorithm/string/compare.hpp>
11
+ #pragma GCC diagnostic pop
9
12
  #include <functional>
10
13
  #include <string>
11
14
  #include <vector>
@@ -1,4 +1,4 @@
1
- find_package(Boost 1.54 REQUIRED COMPONENTS filesystem)
1
+ find_package(Boost 1.54 REQUIRED COMPONENTS filesystem regex system)
2
2
 
3
3
  add_leatherman_deps(Wbemuuid.lib userenv.lib "${Boost_LIBRARIES}")
4
4
  add_leatherman_includes("${Boost_INCLUDE_DIRS}")
@@ -43,11 +43,6 @@ namespace leatherman { namespace windows {
43
43
  */
44
44
  constexpr static char const* computersystemproduct = "Win32_ComputerSystemProduct";
45
45
 
46
- /**
47
- * Identifier for the WMI property UUID
48
- */
49
- constexpr static char const* uuid = "UUID";
50
-
51
46
  /**
52
47
  * Identifier for the WMI class Win32_OperatingSystem
53
48
  */
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facter
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.11.6.cfacter.20181031
4
+ version: 3.12.0.cfacter.20180918
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-10-31 00:00:00.000000000 Z
12
+ date: 2018-09-18 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description:
15
15
  email: info@puppet.com
@@ -203,7 +203,6 @@ files:
203
203
  - ext/facter/facter/acceptance/lib/puppet/acceptance/common_utils.rb
204
204
  - ext/facter/facter/acceptance/lib/puppet/acceptance/git_utils.rb
205
205
  - ext/facter/facter/acceptance/lib/puppet/acceptance/install_utils.rb
206
- - ext/facter/facter/acceptance/tests/custom_facts/conflicts_with_builtin_fact.rb
207
206
  - ext/facter/facter/acceptance/tests/custom_facts/custom_fact_with_10001_weight_overrides_external_fact.rb
208
207
  - ext/facter/facter/acceptance/tests/custom_facts/having_multiple_facts_in_one_file.rb
209
208
  - ext/facter/facter/acceptance/tests/custom_facts/using_win32ole_should_not_hang.rb
@@ -377,7 +376,9 @@ files:
377
376
  - ext/facter/facter/lib/inc/internal/facts/external/text_resolver.hpp
378
377
  - ext/facter/facter/lib/inc/internal/facts/external/windows/powershell_resolver.hpp
379
378
  - ext/facter/facter/lib/inc/internal/facts/external/yaml_resolver.hpp
379
+ - ext/facter/facter/lib/inc/internal/facts/freebsd/disk_resolver.hpp
380
380
  - ext/facter/facter/lib/inc/internal/facts/freebsd/dmi_resolver.hpp
381
+ - ext/facter/facter/lib/inc/internal/facts/freebsd/filesystem_resolver.hpp
381
382
  - ext/facter/facter/lib/inc/internal/facts/freebsd/memory_resolver.hpp
382
383
  - ext/facter/facter/lib/inc/internal/facts/freebsd/networking_resolver.hpp
383
384
  - ext/facter/facter/lib/inc/internal/facts/freebsd/operating_system_resolver.hpp
@@ -484,6 +485,7 @@ files:
484
485
  - ext/facter/facter/lib/inc/internal/util/aix/odm.hpp
485
486
  - ext/facter/facter/lib/inc/internal/util/aix/vmount.hpp
486
487
  - ext/facter/facter/lib/inc/internal/util/bsd/scoped_ifaddrs.hpp
488
+ - ext/facter/facter/lib/inc/internal/util/freebsd/geom.hpp
487
489
  - ext/facter/facter/lib/inc/internal/util/posix/scoped_addrinfo.hpp
488
490
  - ext/facter/facter/lib/inc/internal/util/posix/scoped_bio.hpp
489
491
  - ext/facter/facter/lib/inc/internal/util/posix/scoped_descriptor.hpp
@@ -524,7 +526,9 @@ files:
524
526
  - ext/facter/facter/lib/src/facts/external/windows/powershell_resolver.cc
525
527
  - ext/facter/facter/lib/src/facts/external/yaml_resolver.cc
526
528
  - ext/facter/facter/lib/src/facts/freebsd/collection.cc
529
+ - ext/facter/facter/lib/src/facts/freebsd/disk_resolver.cc
527
530
  - ext/facter/facter/lib/src/facts/freebsd/dmi_resolver.cc
531
+ - ext/facter/facter/lib/src/facts/freebsd/filesystem_resolver.cc
528
532
  - ext/facter/facter/lib/src/facts/freebsd/memory_resolver.cc
529
533
  - ext/facter/facter/lib/src/facts/freebsd/networking_resolver.cc
530
534
  - ext/facter/facter/lib/src/facts/freebsd/operating_system_resolver.cc
@@ -642,6 +646,7 @@ files:
642
646
  - ext/facter/facter/lib/src/util/config/config.cc
643
647
  - ext/facter/facter/lib/src/util/config/posix/config.cc
644
648
  - ext/facter/facter/lib/src/util/config/windows/config.cc
649
+ - ext/facter/facter/lib/src/util/freebsd/geom.cc
645
650
  - ext/facter/facter/lib/src/util/posix/scoped_addrinfo.cc
646
651
  - ext/facter/facter/lib/src/util/posix/scoped_bio.cc
647
652
  - ext/facter/facter/lib/src/util/posix/scoped_descriptor.cc
@@ -1081,7 +1086,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1081
1086
  version: 1.3.1
1082
1087
  requirements: []
1083
1088
  rubyforge_project:
1084
- rubygems_version: 2.6.14.1
1089
+ rubygems_version: 2.7.6
1085
1090
  signing_key:
1086
1091
  specification_version: 4
1087
1092
  summary: Facter gem wrapper
@@ -1,106 +0,0 @@
1
- test_name 'Facter should appropriately resolve a custom fact when it conflicts with a builtin fact' do
2
- tag 'risk:medium'
3
-
4
- def create_custom_fact_on(host, custom_fact_dir, fact_file_name, fact)
5
- fact_file_contents = <<-CUSTOM_FACT
6
- Facter.add(:#{fact[:name]}) do
7
- has_weight #{fact[:weight]}
8
- setcode do
9
- #{fact[:value]}
10
- end
11
- end
12
- CUSTOM_FACT
13
-
14
- fact_file_path = File.join(custom_fact_dir, fact_file_name)
15
- create_remote_file(host, fact_file_path, fact_file_contents)
16
- end
17
-
18
- def clear_custom_facts_on(host, custom_fact_dir)
19
- step "Clean-up the previous test's custom facts" do
20
- on(agent, "rm -f #{custom_fact_dir}/*")
21
- end
22
- end
23
-
24
- agents.each do |agent|
25
- custom_fact_dir = agent.tmpdir('facter')
26
- teardown do
27
- on(agent, "rm -rf '#{custom_fact_dir}'")
28
- end
29
-
30
- fact_name = 'timezone'
31
- builtin_value = on(agent, facter('timezone')).stdout.chomp
32
-
33
- step "Verify that Facter uses the custom fact's value when its weight is > 0" do
34
- custom_fact_value = "custom_timezone"
35
- create_custom_fact_on(
36
- agent,
37
- custom_fact_dir,
38
- 'custom_timezone.rb',
39
- name: fact_name,
40
- weight: 10,
41
- value: "'#{custom_fact_value}'"
42
- )
43
-
44
- on(agent, facter("--custom-dir=#{custom_fact_dir} timezone")) do |result|
45
- assert_match(/#{custom_fact_value}/, result.stdout.chomp, "Facter does not use the custom fact's value when its weight is > 0")
46
- end
47
- end
48
-
49
- clear_custom_facts_on(agent, custom_fact_dir)
50
-
51
- step "Verify that Facter uses the builtin fact's value when all conflicting custom facts fail to resolve" do
52
- [ 'timezone_one.rb', 'timezone_two.rb'].each do |fact_file|
53
- create_custom_fact_on(
54
- agent,
55
- custom_fact_dir,
56
- fact_file,
57
- { name: fact_name, weight: 10, value: nil }
58
- )
59
- end
60
-
61
- on(agent, facter("--custom-dir=#{custom_fact_dir} timezone")) do |result|
62
- assert_match(/#{builtin_value}/, result.stdout.chomp, "Facter does not use the builtin fact's value when all conflicting custom facts fail to resolve")
63
- end
64
- end
65
-
66
- step "Verify that Facter gives precedence to the builtin fact over zero weight custom facts" do
67
- step "when all custom facts have zero weight" do
68
- {
69
- 'timezone_one.rb' => "'timezone_one'",
70
- 'timezone_two.rb' => "'timezone_two'"
71
- }.each do |fact_file, fact_value|
72
- create_custom_fact_on(
73
- agent,
74
- custom_fact_dir,
75
- fact_file,
76
- { name: fact_name, weight: 0, value: fact_value }
77
- )
78
- end
79
-
80
- on(agent, facter("--custom-dir=#{custom_fact_dir} timezone")) do |result|
81
- assert_match(/#{builtin_value}/, result.stdout.chomp, "Facter does not give precedence to the builtin fact when all custom facts have zero weight")
82
- end
83
- end
84
-
85
- clear_custom_facts_on(agent, custom_fact_dir)
86
-
87
- step "when some custom facts have zero weight" do
88
- {
89
- 'timezone_one.rb' => { weight: 10, value: nil },
90
- 'timezone_two.rb' => { weight: 0, value: "'timezone_two'" }
91
- }.each do |fact_file, fact|
92
- create_custom_fact_on(
93
- agent,
94
- custom_fact_dir,
95
- fact_file,
96
- fact.merge(name: fact_name)
97
- )
98
- end
99
-
100
- on(agent, facter("--custom-dir=#{custom_fact_dir} timezone")) do |result|
101
- assert_match(/#{builtin_value}/, result.stdout.chomp, "Facter does not give precedence to the builtin fact when only some custom facts have zero weight")
102
- end
103
- end
104
- end
105
- end
106
- end