From 025e035ca09ec9fcac392632d01c5de6d777762b Mon Sep 17 00:00:00 2001 From: Sarah Etter Date: Wed, 16 Sep 2015 17:26:48 -0600 Subject: [PATCH] Initial Commit --- .bowerrc | 3 + .gitignore | 56 +++++++++ .idea/ascribe.iml | 8 ++ .idea/encodings.xml | 4 + .idea/modules.xml | 8 ++ .idea/scopes/scope_settings.xml | 5 + .idea/vcs.xml | 6 + .jshintrc | 20 +++ Gruntfile.js | 172 ++++++++++++++++++++++++++ assets/css/ascribeio.css | 3 + assets/css/ascribeio.min.css | 1 + assets/css/less/ascribeio.less | 3 + assets/css/readme.md | 3 + assets/js/ascribeio.js | 5 + assets/js/ascribeio.min.js | 1 + assets/js/src/ascribeio.js | 13 ++ bootstrap.php.dist | 31 +++++ bower.json | 23 ++++ composer.json | 27 ++++ footer.php | 12 ++ functions.php | 29 +++++ header.php | 15 +++ humans.txt | 21 ++++ images/readme.md | 3 + images/src/readme.md | 3 + includes/functions/core.php | 95 ++++++++++++++ includes/readme.md | 3 + index.php | 18 +++ languages/ttl.pot | 16 +++ package.json | 36 ++++++ phpunit.xml.dist | 21 ++++ screenshot.png | Bin 0 -> 54619 bytes style.css | 19 +++ tests/phpunit/Core_Tests.php | 163 ++++++++++++++++++++++++ tests/phpunit/test-tools/TestCase.php | 75 +++++++++++ tests/qunit/ascribeio.html | 14 +++ tests/qunit/tests/ascribeio.js | 4 + 37 files changed, 939 insertions(+) create mode 100644 .bowerrc create mode 100644 .gitignore create mode 100644 .idea/ascribe.iml create mode 100644 .idea/encodings.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/scopes/scope_settings.xml create mode 100644 .idea/vcs.xml create mode 100644 .jshintrc create mode 100644 Gruntfile.js create mode 100644 assets/css/ascribeio.css create mode 100644 assets/css/ascribeio.min.css create mode 100644 assets/css/less/ascribeio.less create mode 100644 assets/css/readme.md create mode 100644 assets/js/ascribeio.js create mode 100644 assets/js/ascribeio.min.js create mode 100644 assets/js/src/ascribeio.js create mode 100644 bootstrap.php.dist create mode 100644 bower.json create mode 100644 composer.json create mode 100644 footer.php create mode 100644 functions.php create mode 100644 header.php create mode 100644 humans.txt create mode 100644 images/readme.md create mode 100644 images/src/readme.md create mode 100644 includes/functions/core.php create mode 100644 includes/readme.md create mode 100644 index.php create mode 100644 languages/ttl.pot create mode 100644 package.json create mode 100644 phpunit.xml.dist create mode 100644 screenshot.png create mode 100644 style.css create mode 100644 tests/phpunit/Core_Tests.php create mode 100644 tests/phpunit/test-tools/TestCase.php create mode 100644 tests/qunit/ascribeio.html create mode 100644 tests/qunit/tests/ascribeio.js diff --git a/.bowerrc b/.bowerrc new file mode 100644 index 0000000..69fad35 --- /dev/null +++ b/.bowerrc @@ -0,0 +1,3 @@ +{ + "directory": "bower_components" +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dcc034b --- /dev/null +++ b/.gitignore @@ -0,0 +1,56 @@ +node_modules +release +vendor +composer.lock +phpunit.xml +.idea +.ftppass +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion + +*.iml + +## Directory-based project format: +.idea/ +# if you remove the above rule, at least ignore the following: + +# User-specific stuff: +# .idea/workspace.xml +# .idea/tasks.xml +# .idea/dictionaries + +# Sensitive or high-churn files: +# .idea/dataSources.ids +# .idea/dataSources.xml +# .idea/sqlDataSources.xml +# .idea/dynamic.xml +# .idea/uiDesigner.xml + +# Gradle: +# .idea/gradle.xml +# .idea/libraries + +# Mongo Explorer plugin: +# .idea/mongoSettings.xml + +## File-based project format: +*.ipr +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties + + diff --git a/.idea/ascribe.iml b/.idea/ascribe.iml new file mode 100644 index 0000000..c956989 --- /dev/null +++ b/.idea/ascribe.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..d821048 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..20980cc --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/scopes/scope_settings.xml b/.idea/scopes/scope_settings.xml new file mode 100644 index 0000000..922003b --- /dev/null +++ b/.idea/scopes/scope_settings.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 0000000..bb3ff63 --- /dev/null +++ b/.jshintrc @@ -0,0 +1,20 @@ +{ + "curly": true, + "eqeqeq": true, + "immed": true, + "latedef": true, + "newcap": true, + "noarg": true, + "sub": true, + "undef": true, + "boss": true, + "eqnull": true, + "validthis": true, + "globals": { + "exports": true, + "module": false, + "console": true, + "document": true, + "window": true, + } +} diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..734f4be --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,172 @@ +module.exports = function( grunt ) { + + // Project configuration + grunt.initConfig( { + pkg: grunt.file.readJSON( 'package.json' ), + concat: { + options: { + stripBanners: true + }, + main: { + src: [ + 'assets/js/vendor/*/*.min.js', + 'assets/js/vendor/*/*.js', + 'assets/js/src/ascribeio.js' + ], + dest: 'assets/js/ascribeio.js' + } + }, + jshint: { + all: [ + 'Gruntfile.js', + 'assets/js/src/**/*.js', + 'assets/js/test/**/*.js' + ] + }, + uglify: { + all: { + files: { + 'assets/js/ascribeio.min.js': ['assets/js/ascribeio.js'] + }, + options: { + mangle: { + except: ['jQuery'] + } + } + } + }, + + less: { + all: { + options: { + sourceMap: false + }, + files: { + 'assets/css/ascribeio.css': 'assets/css/less/ascribeio.less' + } + } + }, + + + postcss: { + dist: { + options: { + processors: [ + require('autoprefixer-core')({browsers: 'last 2 versions'}) + ] + }, + files: { + 'assets/css/ascribeio.css': [ 'assets/css/ascribeio.css' ] + } + } + }, + + cssmin: { + minify: { + expand: true, + + cwd: 'assets/css/', + src: ['ascribeio.css'], + + dest: 'assets/css/', + ext: '.min.css' + } + }, + watch: { + livereload: { + files: ['assets/css/*.css'], + options: { + livereload: true + } + }, + styles: { + files: ['assets/css/less/**/*.less'], + tasks: ['less', 'autoprefixer', 'cssmin'], + options: { + debounceDelay: 500 + } + }, + scripts: { + files: ['assets/js/src/**/*.js', 'assets/js/vendor/**/*.js'], + tasks: ['jshint', 'concat', 'uglify'], + options: { + debounceDelay: 500 + } + } + }, + 'sftp-deploy': { + build: { + auth: { + host: 'server.territorial.ca', + port: 22, + authKey: 'key1' + }, + cache: 'sftpCache.json', + src: '/Users/sarahetter/Dropbox/_shared/sarahetter/ascribe/', + dest: '/home/ascribe/public_html/wp-content/themes/ascribe/', + exclusions: ['/Users/sarahetter/Dropbox/_shared/sarahetter/ascribe/node_modules', + '/Users/sarahetter/Dropbox/_shared/sarahetter/ascribe/release', + '/Users/sarahetter/Dropbox/_shared/sarahetter/ascribe/vendor', + '/Users/sarahetter/Dropbox/_shared/sarahetter/ascribe/.git', + '/Users/sarahetter/Dropbox/_shared/sarahetter/ascribe/.idea', + '/Users/sarahetter/Dropbox/_shared/sarahetter/ascribe/**/.DS_Store'], + serverSep: '/', + concurrency: 4, + progress: true + }, + css: { + auth: { + host: 'server.territorial.ca', + port: 22, + authKey: 'key1' + }, + cache: 'sftpCache.json', + src: '/Users/sarahetter/Dropbox/_shared/sarahetter/ascribe/assets/css/', + dest: '/home/ascribe/public_html/wp-content/themes/territorial/assets/css', + serverSep: '/', + concurrency: 4, + progress: true + }, + js: { + auth: { + host: 'server.territorial.ca', + port: 22, + authKey: 'key1' + }, + cache: 'sftpCache.json', + src: '/Users/sarahetter/Dropbox/_shared/sarahetter/ascribe/assets/js/', + dest: '/home/ascribe/public_html/wp-content/themes/territorial/assets/js', + serverSep: '/', + concurrency: 4, + progress: true + }, + controller: { + auth: { + host: 'server.territorial.ca', + port: 22, + authKey: 'key1' + }, + src: '/Users/sarahetter/Dropbox/_shared/sarahetter/ascribe/controller/', + dest: '/home/ascribe/public_html/wp-content/themes/territorial/controller/', + serverSep: '/', + concurrency: 4, + progress: true + } + } + } ); + + // Load tasks + require('load-grunt-tasks')(grunt); + + // Register tasks + + grunt.registerTask( 'css', ['less', 'postcss', 'cssmin', 'sftp-deploy:css'] ); + + grunt.registerTask( 'js', ['jshint', 'concat', 'uglify', 'sftp-deploy:js'] ); + + grunt.registerTask( 'controller', ['sftp-deploy:controller'] ); + + grunt.registerTask( 'default', ['css', 'js', 'controller'] ); + + grunt.util.linefeed = '\n'; +}; diff --git a/assets/css/ascribeio.css b/assets/css/ascribeio.css new file mode 100644 index 0000000..ccf22a0 --- /dev/null +++ b/assets/css/ascribeio.css @@ -0,0 +1,3 @@ +h1 { + color: blue; +} diff --git a/assets/css/ascribeio.min.css b/assets/css/ascribeio.min.css new file mode 100644 index 0000000..9cb59d2 --- /dev/null +++ b/assets/css/ascribeio.min.css @@ -0,0 +1 @@ +h1{color:#00f} \ No newline at end of file diff --git a/assets/css/less/ascribeio.less b/assets/css/less/ascribeio.less new file mode 100644 index 0000000..a4c9b4b --- /dev/null +++ b/assets/css/less/ascribeio.less @@ -0,0 +1,3 @@ +h1 { + color: blue; +} \ No newline at end of file diff --git a/assets/css/readme.md b/assets/css/readme.md new file mode 100644 index 0000000..1c34ddd --- /dev/null +++ b/assets/css/readme.md @@ -0,0 +1,3 @@ +# Styles + +Only final CSS styles should exist in this folder. If you are using SASS, LESS, autoprefixer, or some other pre-processor, please place your raw source files in a subdirectory. diff --git a/assets/js/ascribeio.js b/assets/js/ascribeio.js new file mode 100644 index 0000000..2f7c101 --- /dev/null +++ b/assets/js/ascribeio.js @@ -0,0 +1,5 @@ +( function( window, undefined ) { + 'use strict'; + + +} )( this ); diff --git a/assets/js/ascribeio.min.js b/assets/js/ascribeio.min.js new file mode 100644 index 0000000..2dce2ce --- /dev/null +++ b/assets/js/ascribeio.min.js @@ -0,0 +1 @@ +!function(a,b){"use strict"}(this); \ No newline at end of file diff --git a/assets/js/src/ascribeio.js b/assets/js/src/ascribeio.js new file mode 100644 index 0000000..4c404db --- /dev/null +++ b/assets/js/src/ascribeio.js @@ -0,0 +1,13 @@ +/** + * ascribe.io + * http://wordpress.org/themes + * + * Copyright (c) 2015 Territorial + * Licensed under the GPLv2+ license. + */ + +( function( window, undefined ) { + 'use strict'; + + +} )( this ); diff --git a/bootstrap.php.dist b/bootstrap.php.dist new file mode 100644 index 0000000..e499c82 --- /dev/null +++ b/bootstrap.php.dist @@ -0,0 +1,31 @@ +=5.4" + }, + "require-dev": { + "antecedent/patchwork": "1.2.*", + "phpunit/phpunit" : "*@stable", + "brianium/paratest" : "dev-master", + "10up/wp_mock" : "dev-master" + } +} diff --git a/footer.php b/footer.php new file mode 100644 index 0000000..6c2f804 --- /dev/null +++ b/footer.php @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/functions.php b/functions.php new file mode 100644 index 0000000..349c336 --- /dev/null +++ b/functions.php @@ -0,0 +1,29 @@ + + +> + + + + + \ No newline at end of file diff --git a/humans.txt b/humans.txt new file mode 100644 index 0000000..2502fdb --- /dev/null +++ b/humans.txt @@ -0,0 +1,21 @@ +/* TEAM */ + Developer: Territorial + Contact: us@territorial.ca + URI: http://territorial.ca + +/* THANKS */ + Template Design: 10up + URI: http://10up.com + Twitter: @10up + + Template Design: Eric Mann + URI: https://eamann.com + Twitter: @ericmann + + Template Design: Luke Woodward + URI: http://lkwdwrd.com + Twitter: @lkwdwrd + +/* SITE */ + Created: Wed Sep 16 2015 + Template: https://github.com/10up/generator-wp-make \ No newline at end of file diff --git a/images/readme.md b/images/readme.md new file mode 100644 index 0000000..1d13ae2 --- /dev/null +++ b/images/readme.md @@ -0,0 +1,3 @@ +# Project Images + +Only images in-use by the project should be placed in this folder. Wherever possible, combine multiple small images into sprites to be used by CSS. Original (non-sprite) images should be placed in the `/src` subdirectory. \ No newline at end of file diff --git a/images/src/readme.md b/images/src/readme.md new file mode 100644 index 0000000..5d469a9 --- /dev/null +++ b/images/src/readme.md @@ -0,0 +1,3 @@ +# Project Images + +Only source images (i.e. non-sprites, PSDs, raw photos) should be placed in this directory. Source files are meant to serve as a backup for any images that can be edited by an end user. \ No newline at end of file diff --git a/includes/functions/core.php b/includes/functions/core.php new file mode 100644 index 0000000..83ff9a1 --- /dev/null +++ b/includes/functions/core.php @@ -0,0 +1,95 @@ + element. + * + * @uses apply_filters() + * + * @since 0.1.0 + * + * @return void. + */ +function header_meta() { + $humans = ''; + + echo apply_filters( 'ttl_humans', $humans ); +} diff --git a/includes/readme.md b/includes/readme.md new file mode 100644 index 0000000..6a5898a --- /dev/null +++ b/includes/readme.md @@ -0,0 +1,3 @@ +# Includes + +All theme classes, objects, and libraries should be hidden away in this `/includes` directory. \ No newline at end of file diff --git a/index.php b/index.php new file mode 100644 index 0000000..243da76 --- /dev/null +++ b/index.php @@ -0,0 +1,18 @@ + + + + +

+ + + + +\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;" +"_n_noop:1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;_ex:1,2c;" +"esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-SearchPath-0: ..\n" + diff --git a/package.json b/package.json new file mode 100644 index 0000000..963a294 --- /dev/null +++ b/package.json @@ -0,0 +1,36 @@ +{ + "name": "ascribeio", + "title": "ascribe.io", + "description": "ascribe.io theme by Territorial", + "version": "0.0.1", + "homepage": "http://wordpress.org/themes", + "repository": { + "type": "git", + "url": "" + }, + "author": { + "name": "Territorial", + "email": "us@territorial.ca", + "url": "http://territorial.ca" + }, + "devDependencies": { + "autoprefixer-core": "^5.2.1", + "grunt": "^0.4.5", + "grunt-contrib-clean": "^0.6.0", + "grunt-contrib-compress": "^0.13.0", + "grunt-contrib-concat": "^0.5.1", + "grunt-contrib-copy": "^0.8.0", + "grunt-contrib-cssmin": "^0.12.3", + "grunt-contrib-jshint": "^0.11.2", + "grunt-contrib-less": "^1.0.1", + "grunt-contrib-qunit": "^0.7.0", + "grunt-contrib-uglify": "^0.9.1", + "grunt-contrib-watch": "^0.6.1", + "grunt-phpunit": "^0.3.6", + "grunt-postcss": "^0.5.4", + "grunt-sass": "^1.0.0", + "load-grunt-tasks": "^3.2.0", + "qunitjs": "~1.18.0" + }, + "keywords": [] +} diff --git a/phpunit.xml.dist b/phpunit.xml.dist new file mode 100644 index 0000000..a444c41 --- /dev/null +++ b/phpunit.xml.dist @@ -0,0 +1,21 @@ + + + + ./tests/phpunit + + + + + ./includes + + + + + + + + diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..72789f766b2f8180df3550c272cf28e7eec43a73 GIT binary patch literal 54619 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

N?6c-baeTY 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 literal 0 HcmV?d00001 diff --git a/style.css b/style.css new file mode 100644 index 0000000..1297d38 --- /dev/null +++ b/style.css @@ -0,0 +1,19 @@ +/** + * Theme Name: ascribe.io + * Theme URI: http://wordpress.org/themes + * Description: ascribe.io theme by Territorial + * Author: Territorial + * Author URI: http://territorial.ca + * Version: 0.1.0 + * Tags: + * Text Domain: ttl + * + * License: GPLv2+ + * License URI: http://www.gnu.org/licenses/gpl-2.0.html + */ + +/** + * Built using yo wp-make:theme + * Copyright (c) 2014 10up, LLC + * https://github.com/lkwdwrd/generator-wp-make + */ diff --git a/tests/phpunit/Core_Tests.php b/tests/phpunit/Core_Tests.php new file mode 100644 index 0000000..cd6b797 --- /dev/null +++ b/tests/phpunit/Core_Tests.php @@ -0,0 +1,163 @@ +assertConditionsMet(); + } + + /** + * Test internationalization integration. + */ + public function test_i18n() { + // Setup + \WP_Mock::wpFunction( 'load_theme_textdomain', array( + 'times' => 1, + 'args' => array( + 'ttl', + TTL_PATH . '/languages' + ), + ) ); + + // Act + i18n(); + + // Verify + $this->assertConditionsMet(); + } + + /** + * Test scripts enqueue. + */ + public function test_scripts() { + // Regular + \WP_Mock::wpFunction( 'wp_enqueue_script', array( + 'times' => 1, + 'args' => array( + 'ttl', + 'template_url/assets/js/ascribeio.min.js', + array(), + '0.0.1', + true, + ), + ) ); + + scripts(); + $this->assertConditionsMet(); + + // Debug Mode + \WP_Mock::wpFunction( 'wp_enqueue_script', array( + 'times' => 1, + 'args' => array( + 'ttl', + 'template_url/assets/js/ascribeio.js', + array(), + '0.0.1', + true, + ), + ) ); + + scripts( true ); + $this->assertConditionsMet(); + } + + /** + * Test style enqueue. + */ + public function test_styles() { + // Regular + \WP_Mock::wpFunction( 'wp_enqueue_style', array( + 'times' => 1, + 'args' => array( + 'ttl', + 'url/assets/css/ascribeio.min.css', + array(), + '0.0.1', + ), + ) ); + + styles(); + $this->assertConditionsMet(); + + // Debug Mode + \WP_Mock::wpFunction( 'wp_enqueue_style', array( + 'times' => 1, + 'args' => array( + 'ttl', + 'url/assets/css/ascribeio.css', + array(), + '0.0.1', + ), + ) ); + + styles( true ); + $this->assertConditionsMet(); + } + + /** + * Test header meta injection + */ + public function test_header_meta() { + // Setup + $meta = ''; + \WP_Mock::onFilter( 'ttl_humans' )->with( $meta )->reply( $meta ); + + // Act + ob_start(); + header_meta(); + $result = ob_get_clean(); + + // Verify + $this->assertConditionsMet(); + $this->assertEquals( $meta, $result ); + } +} diff --git a/tests/phpunit/test-tools/TestCase.php b/tests/phpunit/test-tools/TestCase.php new file mode 100644 index 0000000..6ea66a6 --- /dev/null +++ b/tests/phpunit/test-tools/TestCase.php @@ -0,0 +1,75 @@ +setPreserveGlobalState( false ); + return parent::run( $result ); + } + + protected $testFiles = array(); + + public function setUp() { + if ( ! empty( $this->testFiles ) ) { + foreach ( $this->testFiles as $file ) { + if ( file_exists( PROJECT . $file ) ) { + require_once( PROJECT . $file ); + } + } + } + + parent::setUp(); + } + + public function assertActionsCalled() { + $actions_not_added = $expected_actions = 0; + try { + WP_Mock::assertActionsCalled(); + } catch ( \Exception $e ) { + $actions_not_added = 1; + $expected_actions = $e->getMessage(); + } + $this->assertEmpty( $actions_not_added, $expected_actions ); + } + + public function ns( $function ) { + if ( ! is_string( $function ) || false !== strpos( $function, '\\' ) ) { + return $function; + } + + $thisClassName = trim( get_class( $this ), '\\' ); + + if ( ! strpos( $thisClassName, '\\' ) ) { + return $function; + } + + // $thisNamespace is constructed by exploding the current class name on + // namespace separators, running array_slice on that array starting at 0 + // and ending one element from the end (chops the class name off) and + // imploding that using namespace separators as the glue. + $thisNamespace = implode( '\\', array_slice( explode( '\\', $thisClassName ), 0, - 1 ) ); + + return "$thisNamespace\\$function"; + } + + /** + * Define constants after requires/includes + * + * See http://kpayne.me/2012/07/02/phpunit-process-isolation-and-constant-already-defined/ + * for more details + * + * @param \Text_Template $template + */ + public function prepareTemplate( \Text_Template $template ) { + $template->setVar( [ + 'globals' => '$GLOBALS[\'__PHPUNIT_BOOTSTRAP\'] = \'' . $GLOBALS['__PHPUNIT_BOOTSTRAP'] . '\';', + ] ); + parent::prepareTemplate( $template ); + } +} \ No newline at end of file diff --git a/tests/qunit/ascribeio.html b/tests/qunit/ascribeio.html new file mode 100644 index 0000000..e07195c --- /dev/null +++ b/tests/qunit/ascribeio.html @@ -0,0 +1,14 @@ + + + + + QUnit Example + + + +

+
+ + + + diff --git a/tests/qunit/tests/ascribeio.js b/tests/qunit/tests/ascribeio.js new file mode 100644 index 0000000..cb590c4 --- /dev/null +++ b/tests/qunit/tests/ascribeio.js @@ -0,0 +1,4 @@ +// Qunit Tests +test( "hello test", function() { + ok( 1 == "1", "Passed!" ); +});