0.0.26 • Published 8 years ago

ti-slag v0.0.26

Weekly downloads
28
License
MIT
Repository
github
Last release
8 years ago

ti-slag

Titanium faker API, Titanium app running on Node.js.

Build Status Coverage Status Dependency Status devDependency Status

WORKING IN PROGRESS If vm crash, Please feedback with the code you run :smile:

Why

  • Want running code of Titanium on Node.js
  • Want to run a unit test in Node.js only
  • Not required simulator/emulator and iOS/Android device

Tasks

  • Full support of Alloy
  • Full support of native module
  • gulp plugin
  • Test

Programmatically

Setup

$ cd path/to/your_app_project
$ npm install ti-slag --save

Using

var path = require('path'),
	slag = require('ti-slag');

slag(path.join(__dirname, 'Resources', 'app.js'), {
	titanium: '4.0.0.GA',
	platform: 'ios'
});

API

IMPORTANT arguments chenged, since 0.0.7

object <vm.context> slag(string <file path>, object <options>)

Classic

slag(path.join(__dirname, 'Resources', 'app.js'), {
	titanium: '4.0.0.GA',
	platform: 'ios'
});

Alloy

Please be Alloy compiled before. $ alloy compile --config platform=ios or $ alloy compile --config platform=android

	var alloy = require('ti-slag/lib/Alloy'),
		Alloy = alloy.load({
			titanium: '4.0.0.GA',							// optional, default 4.0.0.GA
			platform: 'ios',								// optional, default ios
			alloy: 'path/to/alloy.js',						// optional, default Resources/iphone/alloy/alloy.js
			BaseController: 'path/to/BaseController.js',	// optional, default Resources/iphone/alloy/controllers/BaseController.js
			underscore: 'path/to/underscore.js',			// optional, default Resources/iphone/alloy/underscore.js
			backbone: 'path/to/backbone.js',				// optional, default Resources/iphone/alloy/backbone.js
			constants: 'path/to/constants.js',				// optional, default Resources/iphone/alloy/constants.js
			CFG: 'path/to/CFG.js'							// optional, default Resources/alloy/CFG.js
		}),
		context = slag(path.join(__dirname, 'Resources', 'iphone', 'alloy', 'controllers', 'index.js'), {
			titanium:'4.0.0.GA',
			platform: 'ios',
			module: {
				alloy: Alloy.core,
				'alloy/controllers/BaseController': Alloy.BaseController
			}
		});

	context.Controller(); // This is Alloy controller

ti-slag stop the Alloy internal support, since 0.0.14. Alloy loader now support, since 0.0.15.

file path

path/to/example.js

Titanium SDK version
  • 5.2.0.GA
  • 4.1.0.GA
  • 4.0.0.GA
  • 3.5.1.GA
platform
  • ios
  • android
device

Load the device profile.

slag(path.join(__dirname, 'Resources', 'app.js'), {
	titanium: '4.0.0.GA',
	platform: 'ios',
	device: require('ti-slag/lib/device').iPhone5s
});

Your device profile format.

e.g.

var profile = {
	name: 'iPhone OS',
	osname: 'iphone',
	model: 'Simulator',
	version: '8.4',
	architecture: 'x86_64',
	ostype: '64bit',
	displayCaps: {
		density: 'high',
		dpi: 320,
		platformWidth: 320,
		platformHeight: 568
	}
};
module

Native or CommonJS module simulate.

Titanium code
var anymodule = require('be.k0suke.anymodule'),
	anything = anymodule.createAnything();

anything.anyMethod();
ti-slag code
slag('path/to/app.js', {
	titanium: '4.0.0.GA',
	platform: 'ios',
	module: {
		'be.k0suke.anymodule': {
			createAnything: function(){
				return this;
			},
			anyMethod: function(){}
		}
	}
});
strict mode

It throws an exception If you use a custom property.

  • false
  • true (default)
silent

console.*, Ti.API.*, alert quiet.

  • false (default)
  • true
coverage
  • false (default)
  • true

Testing in mocha

And coverage.

Install the mocha, nyc and ti-slag

$ npm install mocha nyc ti-slag --save-dev

Edit the package.json

{
	...
	"scripts": {
		"test": "mocha test.js",
		"coverage": "nyc npm test && nyc report"
	},
	"config": {
		"nyc": {
			"exclude": [
				"test.js",
				"node_modules/",
				"app/"
			]
		}
	},
	...
}

test.js

var assert = require('assert'),
	path = require('path'),
	slag = require('ti-slag');

describe('foo.js', function(){
	it('should does not throw exception', function(){
		assert.doesNotThrow(function(){
			slag(path.join(__dirname, 'Resources', 'foo.js'), {
				titanium: '4.0.0.GA',
				platform: 'ios'
			});
		});
	});
});

Run the test

$ npm test

Result

> Sandbox@1.0.0 test /Users/Kosuke/src/Sandbox
> mocha test.js



  foo.js
    ✓ should does not throw exception


  1 passing (18ms)

Coverage

Edit the test.js

var istanbul = require('istanbul'),
	collector = new istanbul.Collector(),
	reporter = new istanbul.Reporter();

describe('example test', function(){
	it('should does not throw exception', function(){
		assert.doesNotThrow(function(){
			var context = slag('path/to/app.js', {
				titanium: '4.0.0.GA',
				platform: 'ios',
				coverage: true
			});
			collector.add(context.__coverage__);

			reporter.add('text');
			reporter.addAll([ 'lcov', 'clover' ]);
			reporter.write(collector, true);
		});
	});
});

CLI

Install

$ npm install ti-slag -g

Usage

$ cd path/to/your_app_project
$ slag --sdk 4.0.0.GA --platform ios

Generate the faker API

If you want other Titanium SDK version, See the furnace.js. And required api.json.

License

MIT

0.0.26

8 years ago

0.0.25

9 years ago

0.0.24

9 years ago

0.0.23

9 years ago

0.0.22

9 years ago

0.0.21

9 years ago

0.0.20

9 years ago

0.0.19

9 years ago

0.0.18

9 years ago

0.0.17

9 years ago

0.0.16

9 years ago

0.0.15

9 years ago

0.0.14

9 years ago

0.0.13

9 years ago

0.0.12

9 years ago

0.0.11

9 years ago

0.0.10

9 years ago

0.0.9

9 years ago

0.0.8

9 years ago

0.0.7

9 years ago

0.0.6

9 years ago

0.0.5

9 years ago

0.0.4

9 years ago

0.0.3

9 years ago

0.0.2

9 years ago

0.0.1

9 years ago