From 98a7f69137b20a457155a0d5a7a9e010bb1e697b Mon Sep 17 00:00:00 2001 From: Jared K. Smith Date: Feb 18 2016 14:31:20 +0000 Subject: Initial packaging --- diff --git a/.gitignore b/.gitignore index e69de29..5cd12d3 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/call-signature-0.0.2.tgz diff --git a/nodejs-call-signature.spec b/nodejs-call-signature.spec new file mode 100644 index 0000000..ea5c811 --- /dev/null +++ b/nodejs-call-signature.spec @@ -0,0 +1,70 @@ +%{?nodejs_find_provides_and_requires} + +%global packagename call-signature + +# tests disabled due to missing npm(ava) test suite +%global enable_tests 0 + +Name: nodejs-call-signature +Version: 0.0.2 +Release: 1%{?dist} +Summary: Parse / Generate Method Signatures + +License: MIT +URL: https://github.com/jamestalmage/call-signature.git +Source0: https://registry.npmjs.org/%{packagename}/-/%{packagename}-%{version}.tgz +# The test files are not included in the npm tarball. +Source1: https://raw.githubusercontent.com/jamestalmage/call-signature/v%{version}/test.js + + +BuildArch: noarch +%if 0%{?fedora} >= 19 +ExclusiveArch: %{nodejs_arches} noarch +%else +ExclusiveArch: %{ix86} x86_64 %{arm} noarch +%endif + +BuildRequires: nodejs-packaging +%if 0%{?enable_tests} +BuildRequires: npm(ava) +%endif + +%description +Parse / Generate Method Signatures + + +%prep +%setup -q -n package +# setup the tests +cp -p %{SOURCE1} . + +%build +# nothing to do! + +%install +mkdir -p %{buildroot}%{nodejs_sitelib}/%{packagename} +cp -pr package.json index.js \ + %{buildroot}%{nodejs_sitelib}/%{packagename} + +%nodejs_symlink_deps + +%check +%nodejs_symlink_deps --check +%{__nodejs} -e 'require("./")' +%if 0%{?enable_tests} +%{_bindir}/ava +%else +%{_bindir}/echo -e "\e[101m -=#=- Tests disabled -=#=- \e[0m" +%endif + + +%files +%{!?_licensedir:%global license %doc} +%doc *.md +%license license +%{nodejs_sitelib}/%{packagename} + + +%changelog +* Tue Feb 16 2016 Jared Smith - 0.0.2-1 +- Initial packaging diff --git a/sources b/sources index e69de29..e84c5dd 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +89b1909d657e659cb25151e095e84407 call-signature-0.0.2.tgz diff --git a/test.js b/test.js new file mode 100644 index 0000000..5d0d4c3 --- /dev/null +++ b/test.js @@ -0,0 +1,177 @@ +import test from 'ava'; +import support from './'; + +test('parse - handles spaces', t => { + const expected = { + callee: { + type: 'MemberExpression', + object: 't', + member: 'equal' + }, + args: [ + { + name: 'actual', + optional: false + }, + { + name: 'expected', + optional: false + }, + { + name: 'message', + optional: true + } + ] + }; + t.same(support.parse('t.equal(actual,expected,[message])'), expected, 'no spaces'); + t.same(support.parse('t.equal(actual, expected, [message])'), expected, 'standard spacing'); + t.same(support.parse(' t . equal ( actual , expected , [ message ] ) '), expected, 'lots of spaces'); + t.end(); +}); + +test('parse - when callee is an Identifier', t => { + const expected = { + callee: { + type: 'Identifier', + name: 'assert' + }, + args: [ + { + name: 'value', + optional: false + }, + { + name: 'message', + optional: true + } + ] + }; + t.same(support.parse('assert(value,[message])'), expected, 'no spaces'); + t.same(support.parse('assert(value, [message])'), expected, 'standard spacing'); + t.same(support.parse(' assert ( value , [ message ] ) '), expected, 'lots of spaces'); + t.end(); +}); + +test('parse - handles no args', t => { + const expected = { + callee: { + type: 'MemberExpression', + object: 'a', + member: 'fail' + }, + args: [] + }; + t.same(support.parse('a.fail()'), expected, 'no spaces'); + t.same(support.parse(' a . fail ( ) '), expected, 'lots of spaces'); + t.end(); +}); + +test('parse - handles only optional args', t => { + const expected1 = { + callee: { + type: 'MemberExpression', + object: 'assert', + member: 'baz' + }, + args: [ + { + name: 'foo', + optional: true + } + ] + }; + + const expected2 = { + callee: { + type: 'MemberExpression', + object: 'assert', + member: 'baz' + }, + args: [ + { + name: 'foo', + optional: true + }, + { + name: 'bar', + optional: true + } + ] + }; + + t.same(support.parse('assert.baz([foo])'), expected1, '1 arg - no spaces'); + t.same(support.parse(' assert . baz ( [ foo ] ) '), expected1, '1 arg - lots of spaces'); + t.same(support.parse('assert.baz([foo],[bar])'), expected2, '2 args - no spaces'); + t.same(support.parse(' assert . baz ( [ foo ] , [ bar ] ) '), expected2, '2 args - lots of spaces'); + t.end(); +}); + +test('generate - MemberExpression callee', t => { + const parsed = { + callee: { + type: 'MemberExpression', + object: 't', + member: 'equal' + }, + args: [ + { + name: 'actual', + optional: false + }, + { + name: 'expected', + optional: false + }, + { + name: 'message', + optional: true + } + ] + }; + + t.is(support.generate(parsed), 't.equal(actual, expected, [message])'); + t.end(); +}); + +test('generate - Identifier callee', t => { + const parsed = { + callee: { + type: 'Identifier', + name: 'assert' + }, + args: [ + { + name: 'value', + optional: false + }, + { + name: 'message', + optional: true + } + ] + }; + + t.is(support.generate(parsed), 'assert(value, [message])'); + t.end(); +}); + +test('parse->generate round trip', t => { + [ + 'assert(value, [message])', + 't.ok(value, [message])', + 't.notOk(value, [message])', + 't.true(value, [message])', + 't.false(value, [message])', + 't.is(value, expected, [message])', + 't.not(value, expected, [message])', + 't.same(value, expected, [message])', + 't.notSame(value, expected, [message])', + 't.regexTest(regex, contents, [message])' + ].forEach(function (pattern) { + t.is( + support.generate(support.parse(pattern)), + pattern + ); + }); + t.end(); +});