dassets 0.14.3 → 0.15.2

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 (40) hide show
  1. checksums.yaml +7 -7
  2. data/Gemfile +5 -1
  3. data/README.md +15 -17
  4. data/dassets.gemspec +14 -9
  5. data/lib/dassets.rb +51 -13
  6. data/lib/dassets/asset_file.rb +27 -24
  7. data/lib/dassets/cache.rb +27 -33
  8. data/lib/dassets/config.rb +55 -50
  9. data/lib/dassets/engine.rb +11 -23
  10. data/lib/dassets/file_store.rb +27 -28
  11. data/lib/dassets/server.rb +27 -27
  12. data/lib/dassets/server/request.rb +44 -41
  13. data/lib/dassets/server/response.rb +101 -80
  14. data/lib/dassets/source.rb +24 -9
  15. data/lib/dassets/source_file.rb +110 -81
  16. data/lib/dassets/source_proxy.rb +36 -20
  17. data/lib/dassets/version.rb +3 -1
  18. data/test/helper.rb +31 -25
  19. data/test/support/app.rb +5 -5
  20. data/test/support/empty/{.gitkeep → .keep} +0 -0
  21. data/test/support/factory.rb +3 -2
  22. data/test/support/linked_source_files/linked_file.txt +0 -0
  23. data/test/support/source_files/linked +1 -0
  24. data/test/support/source_files/linked_file2.txt +1 -0
  25. data/test/system/rack_tests.rb +65 -61
  26. data/test/unit/asset_file_tests.rb +68 -60
  27. data/test/unit/cache_tests.rb +15 -34
  28. data/test/unit/config_tests.rb +58 -51
  29. data/test/unit/dassets_tests.rb +31 -24
  30. data/test/unit/engine_tests.rb +9 -43
  31. data/test/unit/file_store_tests.rb +34 -24
  32. data/test/unit/server/request_tests.rb +57 -59
  33. data/test/unit/server/response_tests.rb +82 -82
  34. data/test/unit/server_tests.rb +5 -9
  35. data/test/unit/source_file_tests.rb +86 -74
  36. data/test/unit/source_proxy_tests.rb +84 -90
  37. data/test/unit/source_tests.rb +89 -50
  38. data/tmp/.gitkeep +0 -0
  39. metadata +92 -64
  40. data/.gitignore +0 -19
@@ -1,35 +1,62 @@
1
- require 'assert'
2
- require 'dassets/source'
1
+ # frozen_string_literal: true
3
2
 
4
- require 'dassets/engine'
3
+ require "assert"
4
+ require "dassets/source"
5
5
 
6
- class Dassets::Source
6
+ require "dassets/engine"
7
7
 
8
+ class Dassets::Source
8
9
  class UnitTests < Assert::Context
9
10
  desc "Dassets::Source"
11
+ subject{ Dassets::Source.new(@source_path) }
12
+
10
13
  setup do
11
14
  @source_path = TEST_SUPPORT_PATH.join("source_files")
12
- @source = Dassets::Source.new(@source_path)
13
15
  end
14
- subject{ @source }
15
16
 
16
17
  should have_reader :path, :engines, :response_headers
18
+ should have_imeths :base_path, :set_base_path
17
19
  should have_imeth :files, :filter, :engine
18
20
 
19
21
  should "know its path and default filter" do
20
- assert_equal @source_path.to_s, subject.path
21
- assert_kind_of Proc, subject.filter
22
- assert_equal ['file1', 'file2'], subject.filter.call(['file1', 'file2'])
22
+ assert_that(subject.path).equals(@source_path.to_s)
23
+ assert_that(subject.filter).is_kind_of(Proc)
24
+ assert_that(subject.filter.call(["file1", "file2"]))
25
+ .equals(["file1", "file2"])
26
+ end
27
+
28
+ should "have no base path by default" do
29
+ assert_that(subject.base_path).is_nil
30
+ end
31
+
32
+ should "set non-nil base paths" do
33
+ path = Factory.path
34
+ subject.base_path path
35
+ assert_that(subject.base_path).equals(path)
36
+
37
+ subject.base_path(nil)
38
+ assert_that(subject.base_path).equals(path)
39
+ end
40
+
41
+ should "force set any base paths" do
42
+ path = Factory.path
43
+ subject.set_base_path path
44
+ assert_that(subject.base_path).equals(path)
45
+
46
+ subject.set_base_path(nil)
47
+ assert_that(subject.base_path).is_nil
23
48
  end
24
49
 
25
50
  should "know its files" do
26
51
  exp_files = [
27
- @source_path.join('test1.txt').to_s,
28
- @source_path.join('_ignored.txt').to_s,
29
- @source_path.join('nested/test2.txt').to_s,
30
- @source_path.join('nested/_nested_ignored.txt').to_s
52
+ @source_path.join("test1.txt").to_s,
53
+ @source_path.join("_ignored.txt").to_s,
54
+ @source_path.join("nested/test2.txt").to_s,
55
+ @source_path.join("nested/_nested_ignored.txt").to_s,
56
+ @source_path.join("linked/linked_file.txt").to_s,
57
+ @source_path.join("linked_file2.txt").to_s,
31
58
  ].sort
32
- assert_equal exp_files, subject.files
59
+ assert_that(subject.files).equals(exp_files)
33
60
  end
34
61
 
35
62
  should "run the supplied source filter on the paths" do
@@ -37,30 +64,33 @@ class Dassets::Source
37
64
  paths.reject{ |path| File.basename(path) =~ /^_/ }
38
65
  end
39
66
  exp_files = [
40
- @source_path.join('test1.txt').to_s,
41
- @source_path.join('nested/test2.txt').to_s,
67
+ @source_path.join("test1.txt").to_s,
68
+ @source_path.join("nested/test2.txt").to_s,
69
+ @source_path.join("linked/linked_file.txt").to_s,
70
+ @source_path.join("linked_file2.txt").to_s,
42
71
  ].sort
43
72
 
44
- assert_equal exp_files, subject.files
73
+ assert_that(subject.files).equals(exp_files)
45
74
  end
46
75
 
47
- should "know its engines and return a NullEngine by default" do
48
- assert_kind_of ::Hash, subject.engines
49
- assert_kind_of Dassets::NullEngine, subject.engines['something']
76
+ should "know its extension-specific engines and return an empty Array by "\
77
+ "default" do
78
+ assert_that(subject.engines).is_kind_of(::Hash)
79
+ assert_that(subject.engines["something"]).equals([])
50
80
  end
51
81
 
52
82
  should "know its response headers" do
53
- assert_equal Hash.new, subject.response_headers
83
+ assert_that(subject.response_headers).equals({})
54
84
 
55
85
  name, value = Factory.string, Factory.string
56
86
  subject.response_headers[name] = value
57
- assert_equal value, subject.response_headers[name]
87
+ assert_that(subject.response_headers[name]).equals(value)
58
88
  end
59
-
60
89
  end
61
90
 
62
91
  class EmptySourceTests < UnitTests
63
92
  desc "with no source files"
93
+
64
94
  setup do
65
95
  @empty_source_path = TEST_SUPPORT_PATH.join("empty")
66
96
  @empty_source = Dassets::Source.new(@empty_source_path)
@@ -70,8 +100,8 @@ class Dassets::Source
70
100
  end
71
101
 
72
102
  should "have no files" do
73
- assert_empty @empty_source.files
74
- assert_empty @no_exist_source.files
103
+ assert_that(@empty_source.files).is_empty
104
+ assert_that(@no_exist_source.files).is_empty
75
105
  end
76
106
 
77
107
  should "hand filters an empty path list" do
@@ -82,47 +112,56 @@ class Dassets::Source
82
112
  paths.reject{ |path| File.basename(path) =~ /^_/ }
83
113
  end
84
114
 
85
- assert_empty @empty_source.files
86
- assert_empty @no_exist_source.files
115
+ assert_that(@empty_source.files).is_empty
116
+ assert_that(@no_exist_source.files).is_empty
87
117
  end
88
-
89
118
  end
90
119
 
91
120
  class EngineRegistrationTests < UnitTests
92
121
  desc "when registering an engine"
122
+
93
123
  setup do
94
- @empty_engine = Class.new(Dassets::Engine) do
95
- def ext(input_ext); ''; end
96
- def compile(input); ''; end
97
- end
124
+ @empty_engine =
125
+ Class.new(Dassets::Engine) do
126
+ def ext(_input_ext)
127
+ ""
128
+ end
129
+
130
+ def compile(_input)
131
+ ""
132
+ end
133
+ end
98
134
  end
99
135
 
100
136
  should "allow registering new engines" do
101
- assert_kind_of Dassets::NullEngine, subject.engines['empty']
102
- subject.engine 'empty', @empty_engine, 'an' => 'opt'
103
- assert_kind_of @empty_engine, subject.engines['empty']
104
- assert_equal 'opt', subject.engines['empty'].opts['an']
105
- assert_equal '', subject.engines['empty'].ext('empty')
106
- assert_equal '', subject.engines['empty'].compile('some content')
137
+ assert_that(subject.engines["empty"]).equals([])
138
+
139
+ subject.engine "empty", @empty_engine, "an" => "opt"
140
+ assert_that(subject.engines["empty"]).is_kind_of(Array)
141
+ assert_that(subject.engines["empty"].size).equals(1)
142
+ assert_that(subject.engines["empty"].first.opts["an"]).equals("opt")
143
+ assert_that(subject.engines["empty"].first.ext("empty")).equals("")
144
+ assert_that(subject.engines["empty"].first.compile("some content"))
145
+ .equals("")
107
146
  end
108
147
 
109
148
  should "register with the source path as a default option" do
110
- subject.engine 'empty', @empty_engine
111
- exp_opts = { 'source_path' => subject.path }
112
- assert_equal exp_opts, subject.engines['empty'].opts
149
+ subject.engine "empty", @empty_engine
150
+ exp_opts = { "source_path" => subject.path }
151
+ assert_that(subject.engines["empty"].first.opts).equals(exp_opts)
113
152
 
114
- subject.engine 'empty', @empty_engine, 'an' => 'opt'
153
+ subject.engines["empty"] = []
154
+ subject.engine "empty", @empty_engine, "an" => "opt"
115
155
  exp_opts = {
116
- 'source_path' => subject.path,
117
- 'an' => 'opt'
156
+ "source_path" => subject.path,
157
+ "an" => "opt",
118
158
  }
119
- assert_equal exp_opts, subject.engines['empty'].opts
159
+ assert_that(subject.engines["empty"].first.opts).equals(exp_opts)
120
160
 
121
- subject.engine 'empty', @empty_engine, 'source_path' => 'something'
122
- exp_opts = { 'source_path' => 'something' }
123
- assert_equal exp_opts, subject.engines['empty'].opts
161
+ subject.engines["empty"] = []
162
+ subject.engine "empty", @empty_engine, "source_path" => "something"
163
+ exp_opts = { "source_path" => "something" }
164
+ assert_that(subject.engines["empty"].first.opts).equals(exp_opts)
124
165
  end
125
-
126
166
  end
127
-
128
167
  end
File without changes
metadata CHANGED
@@ -1,69 +1,94 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: dassets
3
- version: !ruby/object:Gem::Version
4
- version: 0.14.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.15.2
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Kelly Redding
8
8
  - Collin Redding
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2017-07-26 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: assert
12
+ date: 2021-02-01 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: much-style-guide
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: 0.6.0
21
+ type: :development
17
22
  prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
19
- requirements:
20
- - - ~>
21
- - !ruby/object:Gem::Version
22
- version: 2.16.3
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: 0.6.0
28
+ - !ruby/object:Gem::Dependency
29
+ name: assert
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: 2.19.3
23
35
  type: :development
24
- version_requirements: *id001
25
- - !ruby/object:Gem::Dependency
26
- name: assert-rack-test
27
36
  prerelease: false
28
- requirement: &id002 !ruby/object:Gem::Requirement
29
- requirements:
30
- - - ~>
31
- - !ruby/object:Gem::Version
32
- version: 1.0.5
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: 2.19.3
42
+ - !ruby/object:Gem::Dependency
43
+ name: assert-rack-test
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: 1.1.1
33
49
  type: :development
34
- version_requirements: *id002
35
- - !ruby/object:Gem::Dependency
36
- name: sinatra
37
50
  prerelease: false
38
- requirement: &id003 !ruby/object:Gem::Requirement
39
- requirements:
40
- - - ~>
41
- - !ruby/object:Gem::Version
42
- version: "1.4"
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: 1.1.1
56
+ - !ruby/object:Gem::Dependency
57
+ name: sinatra
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '2.1'
43
63
  type: :development
44
- version_requirements: *id003
45
- - !ruby/object:Gem::Dependency
46
- name: rack
47
64
  prerelease: false
48
- requirement: &id004 !ruby/object:Gem::Requirement
49
- requirements:
50
- - - ~>
51
- - !ruby/object:Gem::Version
52
- version: "1.0"
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '2.1'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rack
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '2.1'
53
77
  type: :runtime
54
- version_requirements: *id004
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '2.1'
55
84
  description: Digest and serve HTML asset files
56
- email:
85
+ email:
57
86
  - kelly@kellyredding.com
58
87
  - collin.redding@me.com
59
88
  executables: []
60
-
61
89
  extensions: []
62
-
63
90
  extra_rdoc_files: []
64
-
65
- files:
66
- - .gitignore
91
+ files:
67
92
  - Gemfile
68
93
  - LICENSE
69
94
  - README.md
@@ -89,9 +114,12 @@ files:
89
114
  - test/support/app/assets/grumpy_cat.jpg
90
115
  - test/support/app/assets/nested/a-thing.txt.useless.dumb
91
116
  - test/support/app/assets/nested/file3.txt
92
- - test/support/empty/.gitkeep
117
+ - test/support/empty/.keep
93
118
  - test/support/factory.rb
119
+ - test/support/linked_source_files/linked_file.txt
94
120
  - test/support/source_files/_ignored.txt
121
+ - test/support/source_files/linked
122
+ - test/support/source_files/linked_file2.txt
95
123
  - test/support/source_files/nested/_nested_ignored.txt
96
124
  - test/support/source_files/nested/test2.txt
97
125
  - test/support/source_files/test1.txt
@@ -110,32 +138,29 @@ files:
110
138
  - test/unit/source_tests.rb
111
139
  - tmp/.gitkeep
112
140
  homepage: http://github.com/redding/dassets
113
- licenses:
141
+ licenses:
114
142
  - MIT
115
143
  metadata: {}
116
-
117
144
  post_install_message:
118
145
  rdoc_options: []
119
-
120
- require_paths:
146
+ require_paths:
121
147
  - lib
122
- required_ruby_version: !ruby/object:Gem::Requirement
123
- requirements:
124
- - &id005
125
- - ">="
126
- - !ruby/object:Gem::Version
127
- version: "0"
128
- required_rubygems_version: !ruby/object:Gem::Requirement
129
- requirements:
130
- - *id005
148
+ required_ruby_version: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '2.5'
153
+ required_rubygems_version: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
131
158
  requirements: []
132
-
133
- rubyforge_project:
134
- rubygems_version: 2.6.6
159
+ rubygems_version: 3.2.4
135
160
  signing_key:
136
161
  specification_version: 4
137
162
  summary: Digested asset files
138
- test_files:
163
+ test_files:
139
164
  - test/helper.rb
140
165
  - test/support/app.rb
141
166
  - test/support/app/assets/file1.txt
@@ -143,9 +168,12 @@ test_files:
143
168
  - test/support/app/assets/grumpy_cat.jpg
144
169
  - test/support/app/assets/nested/a-thing.txt.useless.dumb
145
170
  - test/support/app/assets/nested/file3.txt
146
- - test/support/empty/.gitkeep
171
+ - test/support/empty/.keep
147
172
  - test/support/factory.rb
173
+ - test/support/linked_source_files/linked_file.txt
148
174
  - test/support/source_files/_ignored.txt
175
+ - test/support/source_files/linked
176
+ - test/support/source_files/linked_file2.txt
149
177
  - test/support/source_files/nested/_nested_ignored.txt
150
178
  - test/support/source_files/nested/test2.txt
151
179
  - test/support/source_files/test1.txt
data/.gitignore DELETED
@@ -1,19 +0,0 @@
1
- *.gem
2
- *.log
3
- *.rbc
4
- .rbx/
5
- .bundle
6
- .config
7
- .yardoc
8
- Gemfile.lock
9
- InstalledFiles
10
- _yardoc
11
- coverage
12
- doc/
13
- lib/bundler/man
14
- pkg
15
- rdoc
16
- spec/reports
17
- test/tmp
18
- test/version_tmp
19
- tmp