From 9942c6e6bc83fb6d0c5da3042651ca730e269c07 Mon Sep 17 00:00:00 2001 From: 0x1eef <0x1eef@protonmail.com> Date: Sun, 12 May 2024 00:53:21 -0300 Subject: [PATCH] Add ReadmeExamplesTest --- Gemfile.lock | 2 ++ bin/run-unprivileged-tests | 2 +- bsdcontrol.rb.gemspec | 1 + .../examples/1_available_features.rb | 8 ++++++++ test/readme_examples_test.rb | 18 ++++++++++++++++++ test/setup.rb | 1 + 6 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 share/bsdcontrol.rb/examples/1_available_features.rb create mode 100644 test/readme_examples_test.rb diff --git a/Gemfile.lock b/Gemfile.lock index 4570662..cdec2be 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -10,6 +10,7 @@ GEM rake (13.1.0) rake-compiler (1.2.7) rake + test-cmd.rb (0.8.0) test-unit (3.6.2) power_assert @@ -20,6 +21,7 @@ PLATFORMS DEPENDENCIES bsdcontrol.rb! rake-compiler (~> 1.2) + test-cmd.rb (~> 0.8) test-unit (~> 3.6) BUNDLED WITH diff --git a/bin/run-unprivileged-tests b/bin/run-unprivileged-tests index 852965e..c4adff2 100755 --- a/bin/run-unprivileged-tests +++ b/bin/run-unprivileged-tests @@ -2,7 +2,7 @@ set -e if [ $(id -u) -ne 0 ]; then rake clean clobber compile - for file in test/unprivileged/*_test.rb; do + for file in test/readme_examples_test.rb test/unprivileged/*_test.rb; do ruby -Ilib ${file} --no-use-color done else diff --git a/bsdcontrol.rb.gemspec b/bsdcontrol.rb.gemspec index 526a3ba..51afbe6 100644 --- a/bsdcontrol.rb.gemspec +++ b/bsdcontrol.rb.gemspec @@ -13,4 +13,5 @@ Gem::Specification.new do |gem| gem.description = gem.summary gem.add_development_dependency "rake-compiler", "~> 1.2" gem.add_development_dependency "test-unit", "~> 3.6" + gem.add_development_dependency "test-cmd.rb", "~> 0.8" end diff --git a/share/bsdcontrol.rb/examples/1_available_features.rb b/share/bsdcontrol.rb/examples/1_available_features.rb new file mode 100644 index 0000000..9bbc2d5 --- /dev/null +++ b/share/bsdcontrol.rb/examples/1_available_features.rb @@ -0,0 +1,8 @@ +#!/usr/bin/env ruby +# Required privileges: user, superuser +require "bsdcontrol" +BSD::Control + .available_features + .each do + print "The ", _1.name, " feature is available", "\n" +end diff --git a/test/readme_examples_test.rb b/test/readme_examples_test.rb new file mode 100644 index 0000000..7720d46 --- /dev/null +++ b/test/readme_examples_test.rb @@ -0,0 +1,18 @@ +require_relative "setup" + +class ReadmeExamplesTest < Test::Unit::TestCase + require "rbconfig" + require "test/cmd" + + def test_available_features + result = cmd(RbConfig.ruby, readme_example('1_available_features.rb')) + assert_equal true, result.status.success? + result.each_line { assert_match %r|The [a-zA-Z0-9_]+ feature is available|, _1 } + end + + private + + def readme_example(name) + File.join(Dir.getwd, 'share', 'bsdcontrol.rb', 'examples', name) + end +end diff --git a/test/setup.rb b/test/setup.rb index eb6ffbe..b5e7ae7 100644 --- a/test/setup.rb +++ b/test/setup.rb @@ -1,2 +1,3 @@ +require "bundler/setup" require "test/unit" require "bsdcontrol"