s4t-utils 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. data/LICENSE.txt +34 -0
  2. data/Manifest.txt +52 -0
  3. data/NOTES.txt +7 -0
  4. data/README.txt +2 -0
  5. data/Rakefile +13 -0
  6. data/Rakefile.hoe +22 -0
  7. data/bin/make-s4t-project.rb +159 -0
  8. data/bin/s4t-script-location-file +1 -0
  9. data/data/make-s4t-project/README-skeleton +30 -0
  10. data/data/make-s4t-project/Rakefile.example +32 -0
  11. data/data/make-s4t-project/bin-skeleton +23 -0
  12. data/data/make-s4t-project/main-lib-skeleton +14 -0
  13. data/data/make-s4t-project/set-standalone-test-paths.rb +5 -0
  14. data/data/make-s4t-project/setup.rb +1585 -0
  15. data/data/make-s4t-project/sub-lib-skeleton +3 -0
  16. data/data/make-s4t-project/test-skeleton +28 -0
  17. data/data/make-s4t-project/version-skeleton +3 -0
  18. data/lib/s4t-utils.rb +23 -0
  19. data/lib/s4t-utils/capturing-globals.rb +93 -0
  20. data/lib/s4t-utils/claims.rb +20 -0
  21. data/lib/s4t-utils/command-line.rb +18 -0
  22. data/lib/s4t-utils/error-handling.rb +26 -0
  23. data/lib/s4t-utils/friendly-format.rb +35 -0
  24. data/lib/s4t-utils/hacks.rb +55 -0
  25. data/lib/s4t-utils/load-path-auto-adjuster.rb +120 -0
  26. data/lib/s4t-utils/more-assertions.rb +35 -0
  27. data/lib/s4t-utils/os.rb +28 -0
  28. data/lib/s4t-utils/rake-task-helpers.rb +75 -0
  29. data/lib/s4t-utils/rakefile-common.rb +112 -0
  30. data/lib/s4t-utils/svn-file-movement.rb +104 -0
  31. data/lib/s4t-utils/test-util.rb +19 -0
  32. data/lib/s4t-utils/version.rb +3 -0
  33. data/setup.rb +1585 -0
  34. data/test/capturing-globals-tests.rb +42 -0
  35. data/test/data/make-s4t-project/README-skeleton +30 -0
  36. data/test/data/make-s4t-project/Rakefile.example +32 -0
  37. data/test/data/make-s4t-project/bin-skeleton +23 -0
  38. data/test/data/make-s4t-project/main-lib-skeleton +14 -0
  39. data/test/data/make-s4t-project/set-standalone-test-paths.rb +5 -0
  40. data/test/data/make-s4t-project/setup.rb +1585 -0
  41. data/test/data/make-s4t-project/sub-lib-skeleton +3 -0
  42. data/test/data/make-s4t-project/test-skeleton +28 -0
  43. data/test/data/make-s4t-project/version-skeleton +3 -0
  44. data/test/data/test-data-location-file +1 -0
  45. data/test/error-handling-tests.rb +43 -0
  46. data/test/friendly-format-tests.rb +15 -0
  47. data/test/hacks-tests.rb +42 -0
  48. data/test/load-path-auto-adjuster-tests.rb +88 -0
  49. data/test/rake-task-helper-tests.rb +62 -0
  50. data/test/set-standalone-test-paths.rb +5 -0
  51. data/test/test-location-file +1 -0
  52. data/test/test-util-tests.rb +45 -0
  53. metadata +116 -0
@@ -0,0 +1,3 @@
1
+ module !REPLACE_ME_MODULE!
2
+ # Your code here
3
+ end
@@ -0,0 +1,28 @@
1
+ # This file should be copied into a test ending in 'tests.rb' so that
2
+ # the Rakefile knows it's a test.
3
+
4
+ require "set-standalone-test-paths.rb" unless $started_from_rakefile
5
+ require 'test/unit'
6
+ require 's4t-utils'
7
+ include S4tUtils
8
+
9
+ ## Require either the particular file under test like this:
10
+ # require '!REPLACE_ME_FILE!/my-file'
11
+ ## or the entire package:
12
+ # require '!REPLACE_ME_FILE!'
13
+
14
+ class TestName < Test::Unit::TestCase
15
+ ## You probably want to include your library so that you don't have
16
+ ## to tack !REPLACE_ME_MODULE!:: onto every name, but I won't assume
17
+ ## that.
18
+ # include !REPLACE_ME_MODULE!
19
+
20
+ def setup
21
+ end
22
+
23
+ def teardown
24
+ end
25
+
26
+ def test_something
27
+ end
28
+ end
@@ -0,0 +1,3 @@
1
+ module !REPLACE_ME_MODULE!
2
+ Version = '0.1.0'
3
+ end
@@ -0,0 +1 @@
1
+ test_data found me
@@ -0,0 +1,43 @@
1
+ $:.unshift("../lib")
2
+ require 'test/unit'
3
+ require 's4t-utils'
4
+
5
+
6
+ class ErrorHandlingTests < Test::Unit::TestCase
7
+ include S4tUtils
8
+
9
+ def test_with_pleasant_exceptions_and_no_error
10
+ result = with_pleasant_exceptions {
11
+ "result"
12
+ }
13
+ assert_equal("result", result)
14
+ end
15
+
16
+ def test_with_pleasant_exceptions_prints_errors_to_stderr
17
+ result = capturing_stderr {
18
+ with_pleasant_exceptions {
19
+ raise Exception.new("this is the message")
20
+ }
21
+ }
22
+ assert_equal("this is the message\n", result)
23
+ end
24
+
25
+ def test_with_pleasant_exceptions_does_not_interfere_with_exit
26
+ assert_wants_to_exit {
27
+ with_pleasant_exceptions {
28
+ exit
29
+ }
30
+ }
31
+ end
32
+
33
+
34
+ def test_without_pleasant_exceptions_prints_warning
35
+ warning = capturing_stderr {
36
+ assert_raises(Exception) {
37
+ without_pleasant_exceptions { raise Exception.new }
38
+ }
39
+ }
40
+ assert_match(/Note: exception handling turned off/, warning)
41
+ end
42
+
43
+ end
@@ -0,0 +1,15 @@
1
+ $:.unshift("../lib")
2
+ require 'test/unit'
3
+ require 's4t-utils'
4
+
5
+
6
+ class FriendlyFormatTests < Test::Unit::TestCase
7
+ include S4tUtils
8
+
9
+ def test_friendly_list
10
+ assert_equal('', friendly_list('and', []))
11
+ assert_equal("'a'", friendly_list('and', ['a']))
12
+ assert_equal("'zed' + 'alpha'", friendly_list('+', [:zed, :alpha]))
13
+ assert_equal("'1', '2', or '20'", friendly_list('or', [1, 2, 20]))
14
+ end
15
+ end
@@ -0,0 +1,42 @@
1
+ $:.unshift("../lib")
2
+ require 'test/unit'
3
+ require 's4t-utils'
4
+
5
+
6
+ class ClaimsTests < Test::Unit::TestCase
7
+ include S4tUtils
8
+
9
+ # The name 'prog1' comes from Lisp. Couldn't think of a better one.
10
+ def test_prog1_returns_argument_after_executing_block
11
+ block_result = nil
12
+ prog1_result = prog1(1) {
13
+ block_result = 2
14
+ }
15
+ assert_equal(1, prog1_result)
16
+ assert_equal(2, block_result)
17
+ end
18
+
19
+ def test_prog1_is_also_a_module_method
20
+ block_result = nil
21
+ prog1_result = S4tUtils.prog1(1) {
22
+ block_result = 2
23
+ }
24
+ assert_equal(1, prog1_result)
25
+ assert_equal(2, block_result)
26
+ end
27
+
28
+ def test_arg_forwarder_forwards_one_arg
29
+ array = []
30
+ forwarder = ArgForwarder.new(array, 5)
31
+ forwarder.push
32
+ assert_equal([5], array)
33
+ end
34
+
35
+ def test_arg_forwarder_forwards_multiple_args
36
+ hash = { 1 => 'one', 2 => 'two', 3 => 'three' }
37
+ forwarder = ArgForwarder.new(hash, 1, 2)
38
+ forwarder.values_at
39
+ assert_equal(["one", "two", "three"], forwarder.values_at(3))
40
+ end
41
+
42
+ end
@@ -0,0 +1,88 @@
1
+ $:.unshift("../lib")
2
+ require 'test/unit'
3
+
4
+
5
+ class AutoAdjusterTests < Test::Unit::TestCase
6
+ class FakePath
7
+ attr_reader :parent
8
+ def initialize(name, parent=nil)
9
+ @name = name
10
+ @parent = parent
11
+ end
12
+
13
+ def +(string)
14
+ FakePath.new(self.to_s + '/' + string, self)
15
+ end
16
+
17
+ def to_s; @name; end
18
+
19
+ def self.ordinary_structure_returning_third_party
20
+ root = FakePath.new('root')
21
+ lib = FakePath.new('lib', root)
22
+ project = FakePath.new('project', lib)
23
+ FakePath.new('third-party', project)
24
+ end
25
+ end
26
+
27
+ module PathHandling
28
+ module_function
29
+ def replace_path(path)
30
+ $:.clear
31
+ path.each { | element |
32
+ $: << element
33
+ }
34
+ end
35
+
36
+ def with_path(path)
37
+ old = $:.dup
38
+ replace_path(path)
39
+ yield
40
+ ensure
41
+ replace_path(old)
42
+ end
43
+ end
44
+
45
+ include PathHandling
46
+ PathHandling.with_path($:.dup) {
47
+ require 's4t-utils/load-path-auto-adjuster'
48
+ }
49
+ include S4tUtils
50
+
51
+ def setup
52
+ @std_third_party = FakePath.ordinary_structure_returning_third_party
53
+ end
54
+
55
+ def test_notices_when_library_already_in_path
56
+ with_path(%w{ root lib project third-party}) {
57
+ assert(Hidden::Arranger.new(@std_third_party).project_lib_already_in_path?)
58
+ }
59
+ end
60
+
61
+ # The checks that the Gem path is correct are commented out below
62
+ # because checking the Gem path causes subdirectories to be created,
63
+ # thus leaving little "/gem/" droppings all over the test directory
64
+ # or wherever the test is run from.
65
+
66
+ def test_adds_third_party_if_lib_already_in_path
67
+ with_path(%w{ local lib something-later}) {
68
+ Hidden::Arranger.new(@std_third_party).arrange
69
+ assert_equal(%w{local lib third-party something-later},
70
+ $:)
71
+ }
72
+
73
+ # assert(Gem.path.include?("#{@std_third_party.to_s}/gems"))
74
+ end
75
+
76
+
77
+ def test_adds_everything_if_lib_not_already_in_path
78
+ with_path(%w{ /bin /usr/local/bin }) {
79
+ Hidden::Arranger.new(@std_third_party).arrange
80
+ assert_equal(%w{lib third-party root /bin /usr/local/bin},
81
+ $:)
82
+ }
83
+
84
+ # assert(Gem.path.include?("#{@std_third_party.to_s}/gems"))
85
+ end
86
+
87
+
88
+ end
@@ -0,0 +1,62 @@
1
+ $:.unshift("../lib")
2
+ require 'test/unit'
3
+ require 's4t-utils'
4
+
5
+
6
+ class RakeHelperTests < Test::Unit::TestCase
7
+ include S4tUtils
8
+
9
+ def test_generated_taskname
10
+ assert_equal('__generated__foo', generated_taskname('foo'))
11
+ assert_equal('__generated__foo', generated_taskname(:foo))
12
+ assert_equal('__generated__foo_barness',
13
+ generated_taskname("! foo_bar-ness"))
14
+ assert_equal('prefix_orp', generated_taskname('orp', 'prefix_'))
15
+ end
16
+
17
+ def test_update_peer_subtask_name
18
+ assert_equal('__update_peers_s4tutils',
19
+ update_peer_subtask_name('s4t-utils'))
20
+ end
21
+
22
+ def test_singular_test_targets_allow_plurals
23
+ assert_equal("{dbtest,dbtests}", broaden_test_name('dbtest'))
24
+ end
25
+
26
+ def test_plural_test_targets_allow_singular
27
+ assert_equal("{dbtest,dbtests}", broaden_test_name('dbtests'))
28
+ end
29
+
30
+ def test_desired_subset_can_include_pending_tests
31
+ local_pending_test = "pending.test.rb"
32
+ local_finished_test = "finished.test.html"
33
+ remote_pending_test = "dir/pending.x.rb"
34
+ remote_finished_test = "dir/fini.rb"
35
+
36
+ assert_true(pending?(local_pending_test))
37
+ assert_true(pending?(remote_pending_test))
38
+ assert_false(pending?(local_finished_test))
39
+ assert_false(pending?(remote_finished_test))
40
+
41
+ tests = [
42
+ local_pending_test, local_finished_test,
43
+ remote_pending_test, remote_finished_test
44
+ ]
45
+ assert_equal([local_finished_test, remote_finished_test],
46
+ desired_subset(tests, false))
47
+ assert_equal(tests,
48
+ desired_subset(tests, true))
49
+ end
50
+
51
+ def test_pending_has_an_exact_boundary
52
+ assert_false(pending?('pendingx.rb'))
53
+ assert_false(pending?('xpending.rb'))
54
+ end
55
+
56
+ def test_pending_can_use_dashes_or_dots
57
+ assert_true(pending?('pending-test.rb'))
58
+ assert_true(pending?('pending.test.rb'))
59
+ end
60
+
61
+
62
+ end
@@ -0,0 +1,5 @@
1
+ require 'pathname'
2
+
3
+ PACKAGE_ROOT = Pathname.new(__FILE__).parent.parent.to_s
4
+ $:.unshift("#{PACKAGE_ROOT}/lib")
5
+ require 's4t-utils/load-path-auto-adjuster'
@@ -0,0 +1 @@
1
+ test found me
@@ -0,0 +1,45 @@
1
+ # This file should be copied into a test ending in 'tests.rb' so that
2
+ # the Rakefile knows it's a test.
3
+
4
+ require "set-standalone-test-paths.rb" unless $started_from_rakefile
5
+ require 'test/unit'
6
+ require 's4t-utils'
7
+ include S4tUtils
8
+
9
+
10
+ class TestUtilTestsNoInclude < Test::Unit::TestCase
11
+
12
+ def test_test_method_finds_test_directory
13
+ assert_equal(["test found me\n"],
14
+ IO.readlines(TestUtil.test("test-location-file")))
15
+ end
16
+
17
+ def test_test_data_method_finds_test_data_directory
18
+ assert_equal(["test_data found me\n"],
19
+ IO.readlines(TestUtil.test_data("test-data-location-file")))
20
+ end
21
+
22
+ def test_script_method_finds_test_data_directory
23
+ assert_equal("script found me\n",
24
+ `ruby #{TestUtil.script("s4t-script-location-file")}`)
25
+ end
26
+ end
27
+
28
+ class TestUtilTestsWithInclude < Test::Unit::TestCase
29
+ include S4tUtils::TestUtil
30
+
31
+ def test_test_method_finds_test_directory
32
+ assert_equal(["test found me\n"],
33
+ IO.readlines(test("test-location-file")))
34
+ end
35
+
36
+ def test_test_data_method_finds_test_data_directory
37
+ assert_equal(["test_data found me\n"],
38
+ IO.readlines(test_data("test-data-location-file")))
39
+ end
40
+
41
+ def test_script_method_finds_test_data_directory
42
+ assert_equal("script found me\n",
43
+ `ruby #{script("s4t-script-location-file")}`)
44
+ end
45
+ end
metadata ADDED
@@ -0,0 +1,116 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.0
3
+ specification_version: 1
4
+ name: s4t-utils
5
+ version: !ruby/object:Gem::Version
6
+ version: 1.0.0
7
+ date: 2007-07-11 00:00:00 -05:00
8
+ summary: _Everyday Scripting with Ruby_ utilities.
9
+ require_paths:
10
+ - lib
11
+ email: marick@exampler.com
12
+ homepage: http://s4t-utils.rubyforge.org
13
+ rubyforge_project: s4t-utils
14
+ description: _Everyday Scripting with Ruby_ utilities.
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - Brian Marick
31
+ files:
32
+ - LICENSE.txt
33
+ - Manifest.txt
34
+ - NOTES.txt
35
+ - README.txt
36
+ - Rakefile
37
+ - Rakefile.hoe
38
+ - bin/make-s4t-project.rb
39
+ - bin/s4t-script-location-file
40
+ - data/make-s4t-project/README-skeleton
41
+ - data/make-s4t-project/Rakefile.example
42
+ - data/make-s4t-project/bin-skeleton
43
+ - data/make-s4t-project/main-lib-skeleton
44
+ - data/make-s4t-project/set-standalone-test-paths.rb
45
+ - data/make-s4t-project/setup.rb
46
+ - data/make-s4t-project/sub-lib-skeleton
47
+ - data/make-s4t-project/test-skeleton
48
+ - data/make-s4t-project/version-skeleton
49
+ - lib/s4t-utils.rb
50
+ - lib/s4t-utils/capturing-globals.rb
51
+ - lib/s4t-utils/claims.rb
52
+ - lib/s4t-utils/command-line.rb
53
+ - lib/s4t-utils/error-handling.rb
54
+ - lib/s4t-utils/friendly-format.rb
55
+ - lib/s4t-utils/hacks.rb
56
+ - lib/s4t-utils/load-path-auto-adjuster.rb
57
+ - lib/s4t-utils/more-assertions.rb
58
+ - lib/s4t-utils/os.rb
59
+ - lib/s4t-utils/rake-task-helpers.rb
60
+ - lib/s4t-utils/rakefile-common.rb
61
+ - lib/s4t-utils/svn-file-movement.rb
62
+ - lib/s4t-utils/test-util.rb
63
+ - lib/s4t-utils/version.rb
64
+ - setup.rb
65
+ - test/capturing-globals-tests.rb
66
+ - test/data/make-s4t-project/README-skeleton
67
+ - test/data/make-s4t-project/Rakefile.example
68
+ - test/data/make-s4t-project/bin-skeleton
69
+ - test/data/make-s4t-project/main-lib-skeleton
70
+ - test/data/make-s4t-project/set-standalone-test-paths.rb
71
+ - test/data/make-s4t-project/setup.rb
72
+ - test/data/make-s4t-project/sub-lib-skeleton
73
+ - test/data/make-s4t-project/test-skeleton
74
+ - test/data/make-s4t-project/version-skeleton
75
+ - test/data/test-data-location-file
76
+ - test/error-handling-tests.rb
77
+ - test/friendly-format-tests.rb
78
+ - test/hacks-tests.rb
79
+ - test/load-path-auto-adjuster-tests.rb
80
+ - test/rake-task-helper-tests.rb
81
+ - test/set-standalone-test-paths.rb
82
+ - test/test-location-file
83
+ - test/test-util-tests.rb
84
+ test_files:
85
+ - test/capturing-globals-tests.rb
86
+ - test/error-handling-tests.rb
87
+ - test/friendly-format-tests.rb
88
+ - test/hacks-tests.rb
89
+ - test/load-path-auto-adjuster-tests.rb
90
+ - test/rake-task-helper-tests.rb
91
+ - test/test-util-tests.rb
92
+ rdoc_options:
93
+ - --main
94
+ - README.txt
95
+ extra_rdoc_files:
96
+ - LICENSE.txt
97
+ - Manifest.txt
98
+ - NOTES.txt
99
+ - README.txt
100
+ executables:
101
+ - make-s4t-project.rb
102
+ - s4t-script-location-file
103
+ extensions: []
104
+
105
+ requirements: []
106
+
107
+ dependencies:
108
+ - !ruby/object:Gem::Dependency
109
+ name: hoe
110
+ version_requirement:
111
+ version_requirements: !ruby/object:Gem::Version::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: 1.2.1
116
+ version: