0.0.26 • Published 9 years ago

ti-slag v0.0.26

Weekly downloads
28
License
MIT
Repository
github
Last release
9 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

9 years ago

0.0.25

10 years ago

0.0.24

10 years ago

0.0.23

10 years ago

0.0.22

10 years ago

0.0.21

10 years ago

0.0.20

10 years ago

0.0.19

10 years ago

0.0.18

10 years ago

0.0.17

10 years ago

0.0.16

10 years ago

0.0.15

10 years ago

0.0.14

10 years ago

0.0.13

10 years ago

0.0.12

10 years ago

0.0.11

10 years ago

0.0.10

10 years ago

0.0.9

10 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago