dassets 0.14.2 → 0.15.1

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 (43) 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 -27
  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 +15 -9
  15. data/lib/dassets/source_file.rb +103 -82
  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/{public/nested/file3-d41d8cd98f00b204e9800998ecf8427e.txt → 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 +69 -61
  27. data/test/unit/cache_tests.rb +15 -34
  28. data/test/unit/config_tests.rb +59 -52
  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 +44 -31
  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 +80 -73
  36. data/test/unit/source_proxy_tests.rb +84 -90
  37. data/test/unit/source_tests.rb +66 -50
  38. data/tmp/.gitkeep +0 -0
  39. metadata +92 -72
  40. data/.gitignore +0 -19
  41. data/test/support/public/file2-9bbe1047cffbb590f59e0e5aeff46ae4.txt +0 -1
  42. data/test/support/public/grumpy_cat-b0d1f399a916f7a25c4c0f693c619013.jpg +0 -0
  43. data/test/support/public/nested/a-thing.txt-7413d18f2eba9c695a880aff67fde135.no-use +0 -4
@@ -1,35 +1,39 @@
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
17
18
  should have_imeth :files, :filter, :engine
18
19
 
19
20
  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'])
21
+ assert_that(subject.path).equals(@source_path.to_s)
22
+ assert_that(subject.filter).is_kind_of(Proc)
23
+ assert_that(subject.filter.call(["file1", "file2"]))
24
+ .equals(["file1", "file2"])
23
25
  end
24
26
 
25
27
  should "know its files" do
26
28
  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
29
+ @source_path.join("test1.txt").to_s,
30
+ @source_path.join("_ignored.txt").to_s,
31
+ @source_path.join("nested/test2.txt").to_s,
32
+ @source_path.join("nested/_nested_ignored.txt").to_s,
33
+ @source_path.join("linked/linked_file.txt").to_s,
34
+ @source_path.join("linked_file2.txt").to_s,
31
35
  ].sort
32
- assert_equal exp_files, subject.files
36
+ assert_that(subject.files).equals(exp_files)
33
37
  end
34
38
 
35
39
  should "run the supplied source filter on the paths" do
@@ -37,30 +41,33 @@ class Dassets::Source
37
41
  paths.reject{ |path| File.basename(path) =~ /^_/ }
38
42
  end
39
43
  exp_files = [
40
- @source_path.join('test1.txt').to_s,
41
- @source_path.join('nested/test2.txt').to_s,
44
+ @source_path.join("test1.txt").to_s,
45
+ @source_path.join("nested/test2.txt").to_s,
46
+ @source_path.join("linked/linked_file.txt").to_s,
47
+ @source_path.join("linked_file2.txt").to_s,
42
48
  ].sort
43
49
 
44
- assert_equal exp_files, subject.files
50
+ assert_that(subject.files).equals(exp_files)
45
51
  end
46
52
 
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']
53
+ should "know its extension-specific engines and return an empty Array by "\
54
+ "default" do
55
+ assert_that(subject.engines).is_kind_of(::Hash)
56
+ assert_that(subject.engines["something"]).equals([])
50
57
  end
51
58
 
52
59
  should "know its response headers" do
53
- assert_equal Hash.new, subject.response_headers
60
+ assert_that(subject.response_headers).equals({})
54
61
 
55
62
  name, value = Factory.string, Factory.string
56
63
  subject.response_headers[name] = value
57
- assert_equal value, subject.response_headers[name]
64
+ assert_that(subject.response_headers[name]).equals(value)
58
65
  end
59
-
60
66
  end
61
67
 
62
68
  class EmptySourceTests < UnitTests
63
69
  desc "with no source files"
70
+
64
71
  setup do
65
72
  @empty_source_path = TEST_SUPPORT_PATH.join("empty")
66
73
  @empty_source = Dassets::Source.new(@empty_source_path)
@@ -70,8 +77,8 @@ class Dassets::Source
70
77
  end
71
78
 
72
79
  should "have no files" do
73
- assert_empty @empty_source.files
74
- assert_empty @no_exist_source.files
80
+ assert_that(@empty_source.files).is_empty
81
+ assert_that(@no_exist_source.files).is_empty
75
82
  end
76
83
 
77
84
  should "hand filters an empty path list" do
@@ -82,47 +89,56 @@ class Dassets::Source
82
89
  paths.reject{ |path| File.basename(path) =~ /^_/ }
83
90
  end
84
91
 
85
- assert_empty @empty_source.files
86
- assert_empty @no_exist_source.files
92
+ assert_that(@empty_source.files).is_empty
93
+ assert_that(@no_exist_source.files).is_empty
87
94
  end
88
-
89
95
  end
90
96
 
91
97
  class EngineRegistrationTests < UnitTests
92
98
  desc "when registering an engine"
99
+
93
100
  setup do
94
- @empty_engine = Class.new(Dassets::Engine) do
95
- def ext(input_ext); ''; end
96
- def compile(input); ''; end
97
- end
101
+ @empty_engine =
102
+ Class.new(Dassets::Engine) do
103
+ def ext(_input_ext)
104
+ ""
105
+ end
106
+
107
+ def compile(_input)
108
+ ""
109
+ end
110
+ end
98
111
  end
99
112
 
100
113
  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')
114
+ assert_that(subject.engines["empty"]).equals([])
115
+
116
+ subject.engine "empty", @empty_engine, "an" => "opt"
117
+ assert_that(subject.engines["empty"]).is_kind_of(Array)
118
+ assert_that(subject.engines["empty"].size).equals(1)
119
+ assert_that(subject.engines["empty"].first.opts["an"]).equals("opt")
120
+ assert_that(subject.engines["empty"].first.ext("empty")).equals("")
121
+ assert_that(subject.engines["empty"].first.compile("some content"))
122
+ .equals("")
107
123
  end
108
124
 
109
125
  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
126
+ subject.engine "empty", @empty_engine
127
+ exp_opts = { "source_path" => subject.path }
128
+ assert_that(subject.engines["empty"].first.opts).equals(exp_opts)
113
129
 
114
- subject.engine 'empty', @empty_engine, 'an' => 'opt'
130
+ subject.engines["empty"] = []
131
+ subject.engine "empty", @empty_engine, "an" => "opt"
115
132
  exp_opts = {
116
- 'source_path' => subject.path,
117
- 'an' => 'opt'
133
+ "source_path" => subject.path,
134
+ "an" => "opt",
118
135
  }
119
- assert_equal exp_opts, subject.engines['empty'].opts
136
+ assert_that(subject.engines["empty"].first.opts).equals(exp_opts)
120
137
 
121
- subject.engine 'empty', @empty_engine, 'source_path' => 'something'
122
- exp_opts = { 'source_path' => 'something' }
123
- assert_equal exp_opts, subject.engines['empty'].opts
138
+ subject.engines["empty"] = []
139
+ subject.engine "empty", @empty_engine, "source_path" => "something"
140
+ exp_opts = { "source_path" => "something" }
141
+ assert_that(subject.engines["empty"].first.opts).equals(exp_opts)
124
142
  end
125
-
126
143
  end
127
-
128
144
  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.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.15.1
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-05-10 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: assert
12
+ date: 2021-01-10 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.4
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,13 +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
94
- - test/support/public/file2-9bbe1047cffbb590f59e0e5aeff46ae4.txt
95
- - test/support/public/grumpy_cat-b0d1f399a916f7a25c4c0f693c619013.jpg
96
- - test/support/public/nested/a-thing.txt-7413d18f2eba9c695a880aff67fde135.no-use
97
- - test/support/public/nested/file3-d41d8cd98f00b204e9800998ecf8427e.txt
119
+ - test/support/linked_source_files/linked_file.txt
98
120
  - test/support/source_files/_ignored.txt
121
+ - test/support/source_files/linked
122
+ - test/support/source_files/linked_file2.txt
99
123
  - test/support/source_files/nested/_nested_ignored.txt
100
124
  - test/support/source_files/nested/test2.txt
101
125
  - test/support/source_files/test1.txt
@@ -114,32 +138,29 @@ files:
114
138
  - test/unit/source_tests.rb
115
139
  - tmp/.gitkeep
116
140
  homepage: http://github.com/redding/dassets
117
- licenses:
141
+ licenses:
118
142
  - MIT
119
143
  metadata: {}
120
-
121
144
  post_install_message:
122
145
  rdoc_options: []
123
-
124
- require_paths:
146
+ require_paths:
125
147
  - lib
126
- required_ruby_version: !ruby/object:Gem::Requirement
127
- requirements:
128
- - &id005
129
- - ">="
130
- - !ruby/object:Gem::Version
131
- version: "0"
132
- required_rubygems_version: !ruby/object:Gem::Requirement
133
- requirements:
134
- - *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'
135
158
  requirements: []
136
-
137
- rubyforge_project:
138
- rubygems_version: 2.6.6
159
+ rubygems_version: 3.2.4
139
160
  signing_key:
140
161
  specification_version: 4
141
162
  summary: Digested asset files
142
- test_files:
163
+ test_files:
143
164
  - test/helper.rb
144
165
  - test/support/app.rb
145
166
  - test/support/app/assets/file1.txt
@@ -147,13 +168,12 @@ test_files:
147
168
  - test/support/app/assets/grumpy_cat.jpg
148
169
  - test/support/app/assets/nested/a-thing.txt.useless.dumb
149
170
  - test/support/app/assets/nested/file3.txt
150
- - test/support/empty/.gitkeep
171
+ - test/support/empty/.keep
151
172
  - test/support/factory.rb
152
- - test/support/public/file2-9bbe1047cffbb590f59e0e5aeff46ae4.txt
153
- - test/support/public/grumpy_cat-b0d1f399a916f7a25c4c0f693c619013.jpg
154
- - test/support/public/nested/a-thing.txt-7413d18f2eba9c695a880aff67fde135.no-use
155
- - test/support/public/nested/file3-d41d8cd98f00b204e9800998ecf8427e.txt
173
+ - test/support/linked_source_files/linked_file.txt
156
174
  - test/support/source_files/_ignored.txt
175
+ - test/support/source_files/linked
176
+ - test/support/source_files/linked_file2.txt
157
177
  - test/support/source_files/nested/_nested_ignored.txt
158
178
  - test/support/source_files/nested/test2.txt
159
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