canoe 0.3.3.1 → 0.3.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f306cd1daca6a05e5ed98b6bac0d638ee6c8b3deb8f033573254b40e0e111f04
4
- data.tar.gz: 20025070fa9b8880e7702fa1560458c6c02f3bd6ef544f0c105c04c4eabbb08b
3
+ metadata.gz: 74d6ddb337f4f8d2b52f18e5f6d3f2925211481dd5ad139ba555675bf434d356
4
+ data.tar.gz: 9828b9850dc35c90ba98a93f3b63a53df1ac102ba0c3c5ae41716f1f670e702d
5
5
  SHA512:
6
- metadata.gz: 57d280fbde673916e1abc93a027cb9be3eda421a9bf9e65ece2c5415d9c0be19236070575b464b09d934aad7729343afcbd9e105424105417e1ea14db50e300c
7
- data.tar.gz: b0724750762fe724958ec732e7f701d13f8b0d7c2cfaf80f8e32c01e959b982e682594cc543cc45115e0aef0a70bfd93c0ca53cd48aa8278b905d87904f52ad7
6
+ metadata.gz: bbd6271cff5a4a5c6342918b9b9c1420216016d185a8979d7d177ce78a3e01e26d4984dc69c90aec0706824fd14e6be0dd9cfb1fb612988bad9412241e16326f
7
+ data.tar.gz: 0e39977c7d620b0cc5b8fc55ab9e6b79049c9ca01534e75ef2f856d5fd2005e56102337aeb19e34800d948058e83c6e74af54e51bf6f646fe61edbd002e14c40
@@ -135,7 +135,7 @@ module Canoe
135
135
  puts "#{'[BUILDING TARGET]'.magenta}..."
136
136
  target = "#{@target}/#{@name}"
137
137
  build_time = File.exist?(target) ? File.mtime(target) : Time.new(0)
138
- files = DepAnalyzer.compiling_filter target_deps, build_time, @source_suffix, @header_suffix
138
+ files = DepAnalyzer.compiling_filter(target_deps, build_time, @source_suffix, @header_suffix)
139
139
 
140
140
  if files.empty? && File.exist?(target)
141
141
  puts "nothing to do, all up to date"
@@ -8,7 +8,7 @@ module Canoe
8
8
  # we don't handle spaces
9
9
  test_single(args[0], args[1..].join(" "))
10
10
  end
11
-
11
+
12
12
  # extract one test file's dependency
13
13
  def extract_one_file(file, deps)
14
14
  ret = deps[file].map { |f| f.gsub(".#{@header_suffix}", ".#{@source_suffix}") }
@@ -42,10 +42,11 @@ module Canoe
42
42
  bin = "#{@target_short}/test_#{name}"
43
43
 
44
44
  rebuild ||= !File.exist?(bin)
45
-
45
+
46
46
  file = "#{@tests_short}/test_#{name}.#{@source_suffix}"
47
+ abort_on_err "No test file exists for #{name}" unless File.exist?(file)
47
48
  rebuild ||= File.mtime(bin) < File.mtime(file)
48
-
49
+
49
50
  deps = fetch_all_deps
50
51
  extract_one_file(file, deps).each do |f|
51
52
  rebuild ||= File.mtime(bin) < File.mtime(f) || File.mtime(bin) < File.mtime(hdr_of_src(f))
@@ -77,26 +78,22 @@ module Canoe
77
78
  end.min
78
79
  end
79
80
 
80
- # @deps is the dependency hash for tests
81
- # cyclic dependency is not handled
82
- # compiler should first be built
83
- def compile_one_test(test_file, deps)
84
- extract_one_file(test_file, deps).each do |f|
85
- o = file_to_obj(f)
86
- next if File.exist?(o) && File.mtime(o) > File.mtime(f) && File.mtime(o) > File.mtime(hdr_of_src(f))
87
-
88
- compile(f, o)
89
- end
90
- compile(test_file, file_to_obj(test_file))
91
- end
92
-
93
81
  def link_one_test(test_file, deps)
94
82
  target = "#{@target_short}/#{File.basename(test_file, '.*')}"
95
83
  @compiler.link_executable target, extract_one_file_obj(test_file, deps) + [file_to_obj(test_file)]
96
84
  end
97
85
 
98
86
  def build_one_test(test_file, deps)
99
- compile_one_test(test_file, deps)
87
+ files = DepAnalyzer.compiling_filter(target_deps, Time.new(0), @source_suffix, @header_suffix)
88
+ flag = true
89
+ files << test_file
90
+
91
+ files.each do |f|
92
+ o = file_to_obj(f)
93
+ flag = false unless compile f, o
94
+ end
95
+
96
+ abort_on_err("Compiling errors encountered") unless flag;
100
97
  link_one_test(test_file, deps)
101
98
  end
102
99
 
@@ -109,7 +106,7 @@ module Canoe
109
106
 
110
107
  files.each do |f|
111
108
  printf "#{stepper.progress_as_str.green} compiling #{f} "
112
- compile_one_test(f, deps)
109
+ build_one_test(f, deps)
113
110
  stepper.step
114
111
  end
115
112
  end
@@ -126,6 +123,7 @@ module Canoe
126
123
  end
127
124
 
128
125
  def build_test
126
+ build_compiler_from_config
129
127
  puts "#{'[COMPILING TESTS]'.magenta}..."
130
128
  return unless test_build_time
131
129
 
@@ -2,7 +2,7 @@ module Canoe
2
2
  class WorkSpace
3
3
  def self.version
4
4
  puts <<~VER
5
- canoe v0.3.3.1
5
+ canoe v0.3.3.2
6
6
  For features in this version, please visit https://github.com/Dicridon/canoe
7
7
  Currently, canoe can do below:
8
8
  - project creation
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canoe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3.1
4
+ version: 0.3.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - XIONG Ziwei
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-18 00:00:00.000000000 Z
11
+ date: 2021-12-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |+
14
14
  Canoe offers project management and building facilities to C/C++ projects.