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