malachite 0.2.0 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ff11dd59ffe0df5b7eae8be219e16a80cb1b9cb9
4
- data.tar.gz: 2144f93b6a19ccf95aee1ed03fb7eaf5ea8ef695
3
+ metadata.gz: 5052dfabfaf3ab568017e5dca181503e42aa32ef
4
+ data.tar.gz: 3e54fe1a9525ff6568127cfe0d94ee86daf31851
5
5
  SHA512:
6
- metadata.gz: fe530d87de0f816e1521b9bd1f88fec25b365718ac6d245699d920ff1daebb191258001855919bcc2d3ccc548723cb6ead49c585f37f4706d34edb1840b666ba
7
- data.tar.gz: fc702af8ebe46dc39be318d12edee7b00aacbd57b106df2e911c00179924651b1826709dea6a287500b3c6d8f4fea001a76e4e54f6578b063b66d96e2c1885f0
6
+ metadata.gz: a43b53c157f009ef74ae837dd005be597c8c292eaa1c4d7fbb95d1748fb157f4a259fd01b93be2e27806ad81d07939dab3e6fc73401aee403248339840d3c72e
7
+ data.tar.gz: 5034fd9f28ad91b68d74fe1e9438644c111d03bcf14591814b4ab7859874f6a7f8978491210b04290249cd763ff4c2789e83bbf68356755646684db8742e3734
data/.gitignore CHANGED
@@ -6,7 +6,7 @@ tags
6
6
  *.gem
7
7
  dump.db
8
8
  .rbx
9
- coverage/
10
- vendor/
11
9
  .bundle/
12
- tmp/
10
+ test/dummy/tmp/*.go
11
+ test/dummy/tmp/*.so
12
+ test/dummy/tmp/*.h
data/Rakefile CHANGED
@@ -1 +1,8 @@
1
1
  require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+ Rake::TestTask.new do |t|
4
+ t.libs << 'test'
5
+ t.pattern = 'test/*_test.rb'
6
+ end
7
+
8
+ task default: :test
@@ -1,3 +1,4 @@
1
+
1
2
  //export callXXXXXX
2
3
  func callXXXXXX(data *C.char) C.VALUE {
3
4
  things := YYYYYY
@@ -25,8 +25,7 @@ module Malachite
25
25
  end
26
26
 
27
27
  def source_file(f)
28
- source = File.read(f)
29
- source.gsub(/package main/, '')
28
+ File.readlines(f).drop(1)
30
29
  end
31
30
 
32
31
  def exporter_boilerplate(file)
@@ -38,7 +37,7 @@ module Malachite
38
37
  def file_has_handle_function?(f)
39
38
  source = File.read(f)
40
39
  match = /^func Handle(.*?)\(\w+ (.*?)\)/.match(source)
41
- match.present?
40
+ match != nil
42
41
  end
43
42
 
44
43
  def extract_method_and_type(source_file_path)
@@ -9,7 +9,7 @@ module Malachite
9
9
 
10
10
  def self.from_function_cache(method_name)
11
11
  existing_function = Malachite.function_cache[method_name]
12
- return existing_function if existing_function.present?
12
+ return existing_function if existing_function != nil
13
13
  Malachite.add_to_function_cache(method_name)
14
14
  end
15
15
 
@@ -1,3 +1,3 @@
1
1
  module Malachite
2
- VERSION = '0.2.0'
2
+ VERSION = '0.2.1'
3
3
  end
data/lib/malachite.rb CHANGED
@@ -3,6 +3,7 @@ fail "Malachite #{Malachite::VERSION} does not support Ruby < 2.0.0" if RUBY_VER
3
3
 
4
4
  require 'json'
5
5
  require 'fiddle'
6
+ require 'active_support/all'
6
7
 
7
8
  require 'malachite/errors'
8
9
  require 'malachite/function_cache'
data/malachite.gemspec CHANGED
@@ -18,4 +18,6 @@ Gem::Specification.new do |spec|
18
18
  spec.add_dependency 'json', '~> 1.0'
19
19
  spec.add_development_dependency 'bundler', '~> 1.9'
20
20
  spec.add_development_dependency 'rake', '~> 10.0'
21
+ spec.add_development_dependency 'minitest', '~> 5'
22
+ spec.add_development_dependency 'activesupport', '~> 4'
21
23
  end
@@ -0,0 +1,11 @@
1
+ require 'test_helper'
2
+
3
+ class ClientTest < MiniTest::Unit::TestCase
4
+ def setup
5
+ @client = Malachite::Client.new('upcase', ['foo'])
6
+ end
7
+
8
+ def test_confirm_compilation_matches_fixture
9
+ assert_equal @client.call, ['FOO']
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ package main
2
+
3
+ import (
4
+ "strings"
5
+ )
6
+
7
+ func HandleUpcase(things []string) (upperCased []string) {
8
+ for _, thing := range things {
9
+ upperCased = append(upperCased, strings.ToUpper(thing))
10
+ }
11
+ return
12
+ }
@@ -0,0 +1,13 @@
1
+ require 'test_helper'
2
+
3
+ class FileCompilerTest < MiniTest::Unit::TestCase
4
+ def setup
5
+ @source = Malachite::FileCompiler.new(Rails.root.join('app', 'go', 'upcase.go')).compile
6
+ end
7
+
8
+ def test_confirm_compilation_matches_fixture
9
+ compiled = File.read(Rails.root.join('tmp', 'upcase.go')).to_s
10
+ valid = File.read(File.expand_path('../fixtures/valid_upcase.go', __FILE__)).gsub(/HEADER/, RbConfig::CONFIG['rubyhdrdir']).gsub(/ARCH/, RbConfig::CONFIG['rubyarchhdrdir'])
11
+ assert_equal compiled, valid
12
+ end
13
+ end
@@ -0,0 +1,34 @@
1
+ package main
2
+
3
+ // #cgo darwin LDFLAGS: -Wl,-undefined -Wl,dynamic_lookup
4
+ // #cgo !darwin LDFLAGS: -Wl,-unresolved-symbols=ignore-all
5
+ // #cgo CFLAGS: -IHEADER/ -IARCH/
6
+ // #include <stdlib.h>
7
+ // #include "ruby/ruby.h"
8
+ import "C"
9
+
10
+ import (
11
+ "strings"
12
+ )
13
+
14
+ func HandleUpcase(things []string) (upperCased []string) {
15
+ for _, thing := range things {
16
+ upperCased = append(upperCased, strings.ToUpper(thing))
17
+ }
18
+ return
19
+ }
20
+
21
+ //export callUpcase
22
+ func callUpcase(data *C.char) C.VALUE {
23
+ things := []string{}
24
+ err := Unmarshal(C.GoString(data), &things)
25
+ if err != nil {
26
+ str := err.Error()
27
+ cstr := GOSTRING_PTR(str)
28
+ return C.rb_utf8_str_new(cstr, C.long(len(str)))
29
+ } else {
30
+ str := Marshal(HandleUpcase(things))
31
+ cstr := GOSTRING_PTR(str)
32
+ return C.rb_utf8_str_new(cstr, C.long(len(str)))
33
+ }
34
+ }
@@ -0,0 +1,12 @@
1
+ require 'pathname'
2
+ module Rails
3
+ Engine = {}
4
+ def self.root
5
+ Pathname.new(File.join(Dir.pwd, 'test', 'dummy'))
6
+ end
7
+ class Railtie
8
+ def self.rake_tasks; end
9
+
10
+ def self.initializer(_); end
11
+ end
12
+ end
@@ -0,0 +1,4 @@
1
+ require 'rails_stub'
2
+ require 'malachite'
3
+ require 'minitest/autorun'
4
+ require 'minitest/pride'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: malachite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zack Hubert
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-11 00:00:00.000000000 Z
11
+ date: 2016-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '5'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '5'
69
+ - !ruby/object:Gem::Dependency
70
+ name: activesupport
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '4'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '4'
55
83
  description: A RubyGem which enables calling Go code from Rails.
56
84
  email:
57
85
  - zhubert@gmail.com
@@ -78,6 +106,12 @@ files:
78
106
  - lib/malachite/tasks/malachite.rake
79
107
  - lib/malachite/version.rb
80
108
  - malachite.gemspec
109
+ - test/client_test.rb
110
+ - test/dummy/app/go/upcase.go
111
+ - test/file_compiler_test.rb
112
+ - test/fixtures/valid_upcase.go
113
+ - test/rails_stub.rb
114
+ - test/test_helper.rb
81
115
  homepage: http://www.zhubert.com
82
116
  licenses:
83
117
  - MIT