コード例 #1
0
ファイル: test_general.py プロジェクト: samuelcolvin/harrier
def test_execute_different_dir(tmpworkdir):
    mktree(tmpworkdir, {
        'path/different_root': {
            'foo': 'C_foo',
            'lib/test.js': 'C_test.js',
        },
        'harrier.yml': """\
root: path/different_root
execute:
  commands:
    -
      command: 'cp {ROOT}/lib/test.js {ROOT}/foobar.js'
      generates: ['foobar.js']
  patterns:
    - ./lib/*"""
    })
    config = Config()
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {'foo': 'C_foo', 'foobar.js': 'C_test.js'}
    assert gettree(tmpworkdir.join('path').join('different_root')) == {
        'foo': 'C_foo',
        'lib': {
            'test.js': 'C_test.js',
        }
    }
コード例 #2
0
ファイル: test_jinja.py プロジェクト: samuelcolvin/harrier
def test_jinja_static_missing(tmpworkdir):
    tmpworkdir.join('index.html').write("{{ 'foo.txt'|S }}")
    config = Config()
    config.setup()
    with pytest.raises(HarrierProblem):
        build(config)
    assert gettree(tmpworkdir) == {'index.html': "{{ 'foo.txt'|S }}", 'build': {}}
コード例 #3
0
ファイル: test_assets.py プロジェクト: samuelcolvin/harrier
def test_git_commit(tmpworkdir):
    mktree(tmpworkdir, {
        'test.js': 'X',
        'harrier.yml': """\
root: .
assets:
  active: True"""
    })

    with patch('harrier.tools.subprocess.run') as mock_run:
        mock_run.return_value = CompletedProcess(args=[], returncode=0, stdout=b'commit sha1\n')
        config = Config('harrier.yml')
        config.setup()
        build(config)

    assert gettree(tmpworkdir.join('build')) == {
        'test.js': 'X',
        'assets.json': """\
{
  "commit": "commit sha1",
  "files": {
    "test.js": "/test.js"
  }
}
""",
    }
    assert mock_run.called
コード例 #4
0
ファイル: test_jinja.py プロジェクト: samuelcolvin/harrier
def test_jinja_static(tmpworkdir):
    tmpworkdir.join('foo.txt').write('hello')
    tmpworkdir.join('index.html').write("{{ 'foo.txt'|S }}")
    config = Config()
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {'index.html': 'foo.txt', 'foo.txt': 'hello'}
コード例 #5
0
ファイル: test_assets.py プロジェクト: samuelcolvin/harrier
def test_simple_assets(tmpworkdir):
    mktree(tmpworkdir, {
        'test.js': 'var hello = 1;',
        'deep/static/path': {
            'styles.css': 'body {color: green}',
        },
        'harrier.yml': """\
root: .
assets:
  active: True"""
    })
    config = Config('harrier.yml')
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {
        'test.js': 'var hello = 1;',
        'deep': {'static': {'path': {'styles.css': 'body {color: green}'}}},
        'assets.json': """\
{
  "commit": "unknown",
  "files": {
    "deep/static/path/styles.css": "/deep/static/path/styles.css",
    "test.js": "/test.js"
  }
}
""",
    }
コード例 #6
0
ファイル: test_sass.py プロジェクト: samuelcolvin/harrier
def test_sass_precision_5(tmpworkdir):
    mktree(tmpworkdir, {'styles.scss': 'a { width: (100 / 6)px}'})
    config = Config(config_dict={'sass': {'precision': 5}})
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {
        'styles.css': 'a {\n  width: 16.66667 px; }\n'
    }
コード例 #7
0
ファイル: test_general.py プロジェクト: samuelcolvin/harrier
def test_json_seperate_root(tmpworkdir):
    root_dir = tmpworkdir.mkdir('foobar')
    tmpworkdir.join('harrier.json').write('{"root": "foobar"}')
    root_dir.join('bar').write('hello')
    config = Config('harrier.json')
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {'bar': 'hello'}
コード例 #8
0
ファイル: test_sass.py プロジェクト: samuelcolvin/harrier
def test_build_sass(tmpworkdir):
    mktree(tmpworkdir, {'styles.sass': 'a\n  b\n    color: blue;'})
    config = Config()
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {
        'styles.css': 'a b {\n  color: blue; }\n'
    }
コード例 #9
0
ファイル: test_jinja.py プロジェクト: samuelcolvin/harrier
def test_jinja_static_library_missing(tmpworkdir):
    tmpworkdir.join('index.html').write("{{ 'lib_file.js'|S('libs/lib_file.js') }}")

    config = Config()
    config.setup()
    with pytest.raises(HarrierProblem):
        build(config)
    assert gettree(tmpworkdir) == {'index.html': "{{ 'lib_file.js'|S('libs/lib_file.js') }}", 'build': {}}
コード例 #10
0
ファイル: test_jinja.py プロジェクト: samuelcolvin/harrier
def test_jinja_static_abs_url(tmpworkdir):
    tmpworkdir.mkdir('path')
    tmpworkdir.join('foo.txt').write('hello')
    tmpworkdir.join('path', 'index.html').write("{{ '/foo.txt'|S }}")
    config = Config()
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {'path': {'index.html': '/foo.txt'}, 'foo.txt': 'hello'}
コード例 #11
0
ファイル: test_jinja.py プロジェクト: samuelcolvin/harrier
def test_jinja_live(tmpworkdir):
    tmpworkdir.join('index.html').write('{{ 42 + 5 }}')
    config = Config()
    config.setup('build', True)
    build(config)
    assert gettree(tmpworkdir.join('build')) == {
        'index.html': '47\n<script src="http://localhost:8000/livereload.js"></script>\n',
    }
コード例 #12
0
ファイル: test_general.py プロジェクト: samuelcolvin/harrier
def test_subdirectory(tmpworkdir):
    tmpworkdir.join('test.js').write('X')
    tmpworkdir.join('harrier.yml').write("""\
subdirectory: apples""")
    config = Config('harrier.yml')
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {'apples': {'test.js': 'X'}}
コード例 #13
0
ファイル: test_sass.py プロジェクト: samuelcolvin/harrier
def test_build_scss_bad(tmpworkdir, logcap):
    logcap.set_level(logging.ERROR)
    mktree(tmpworkdir, {'styles.scss': 'x = 42'})
    config = Config()
    config.setup()
    with pytest.raises(HarrierProblem) as excinfo:
        build(config)
    assert excinfo.value.args[0] == 'Error compiling SASS'
    assert logcap.log == """Error: Invalid CSS after "x": expected "{", was "= 42"
コード例 #14
0
ファイル: test_general.py プロジェクト: samuelcolvin/harrier
def test_simple_build(tmpworkdir):
    tmpworkdir.join('test.js').write('var hello = 1;')
    tmpworkdir.join('harrier.yml').write("""\
root: .
target:
  build:
    path: build""")
    config = Config('harrier.yml')
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {'test.js': 'var hello = 1;'}
コード例 #15
0
ファイル: test_jinja.py プロジェクト: samuelcolvin/harrier
def test_jinja_static_library(tmpworkdir, library):
    # here the library directory is inside the config root, shouldn't make any difference
    mktree(tmpworkdir, {
        'bower_components/package/path/lib_file.js': 'lib content',
        'index.html': "{{ 'lib_file.js'|S('%s') }}" % library
    })

    config = Config()
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {'index.html': 'lib_file.js', 'lib_file.js': 'lib content'}
コード例 #16
0
ファイル: test_general.py プロジェクト: samuelcolvin/harrier
def test_execute_not_found(tmpworkdir):
    tmpworkdir.mkdir('lib').join('test.js').write('XX')
    tmpworkdir.join('harrier.yml').write("""\
execute:
  commands: ['cp missing.js foobar.js']
  patterns:
    - ./lib/*.js""")
    config = Config()
    config.setup()
    with pytest.raises(HarrierProblem) as excinfo:
        build(config)
    assert excinfo.value.args[0] == 'command "cp missing.js foobar.js" returned non-zero exit status 1'
コード例 #17
0
ファイル: test_general.py プロジェクト: samuelcolvin/harrier
def test_execute_bad_command(tmpworkdir, logcap):
    tmpworkdir.mkdir('lib').join('test.js').write('XX')
    tmpworkdir.join('harrier.yml').write("""\
execute:
  commands: ['foobar']
  patterns:
    - ./lib/*.js""")
    config = Config()
    config.setup()
    with pytest.raises(HarrierProblem) as excinfo:
        build(config)
    assert excinfo.value.args[0] == 'problem executing "foobar"'
    assert logcap.log == "FileNotFoundError: [Errno 2] No such file or directory: 'foobar'\n"
コード例 #18
0
ファイル: test_general.py プロジェクト: samuelcolvin/harrier
def test_execute(tmpworkdir):
    tmpworkdir.mkdir('lib').join('test.js').write('XX')
    tmpworkdir.join('harrier.yml').write("""\
execute:
  commands:
    -
      command: 'cp lib/test.js foobar.js'
      generates: ['foobar.js']
  patterns:
    - ./lib/*.js""")
    config = Config()
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {'foobar.js': 'XX'}
    assert tmpworkdir.join('foobar.js').check() is False
コード例 #19
0
ファイル: test_general.py プロジェクト: samuelcolvin/harrier
def test_execute_generate_missing(tmpworkdir):
    tmpworkdir.mkdir('lib').join('test.js').write('XX')
    tmpworkdir.join('harrier.yml').write("""\
execute:
  commands:
    -
      command: 'cp lib/test.js foobar.js'
      generates: ['missing.js']
  patterns:
    - ./lib/*.js""")
    config = Config()
    config.setup()
    with pytest.raises(HarrierProblem) as excinfo:
        build(config)
    assert excinfo.value.args[0] == 'command "cp lib/test.js foobar.js" failed to generate missing.js'
コード例 #20
0
ファイル: test_sass.py プロジェクト: samuelcolvin/harrier
def test_sass_exclude(tmpworkdir):
    mktree(tmpworkdir, {
        'src': {
            '_foo.scss': '$primary-colour: #016997;',
            'bar.scss': """\
@import 'foo';
body {
  color: $primary-colour;
}"""
        },
        'harrier.yml': '\nroot: src'
    })
    config = Config()
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {'bar.css': 'body {\n  color: #016997; }\n'}
コード例 #21
0
ファイル: test_jinja.py プロジェクト: samuelcolvin/harrier
def test_simple_frontmatter(tmpworkdir):
    mktree(tmpworkdir, {
        'src': {
            'foo.html': """\
---
test_var: "carrot cake"
---
I would like some {{ test_var }}.""",
        },
        'harrier.yml': '\nroot: src'
    })
    config = Config()
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {
        'foo.html': 'I would like some carrot cake.',
    }
コード例 #22
0
ファイル: test_jinja.py プロジェクト: samuelcolvin/harrier
def test_extends_build(tmpworkdir):
    mktree(tmpworkdir, {
        'src': {
            'foo.html': 'start\n{% block hello %}{% endblock %}',
            'bar.html': """
{% extends 'foo.html' %}
{% block hello %}
body
{% endblock %}""",
        },
        'harrier.yml': '\nroot: src'
    })
    config = Config()
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {
        'foo.html': 'start\n',
        'bar.html': '\nstart\n\nbody\n',
    }
コード例 #23
0
ファイル: test_assets.py プロジェクト: samuelcolvin/harrier
def test_yaml(tmpworkdir):
    mktree(tmpworkdir, {
        'test.js': 'var hello = 1;',
        'harrier.yml': """\
root: .
assets:
  file: assets.yaml
  active: True"""
    })
    config = Config('harrier.yml')
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {
        'test.js': 'var hello = 1;',
        'assets.yaml': """\
commit: unknown
files:
  test.js: /test.js
""",
    }
コード例 #24
0
ファイル: test_jinja.py プロジェクト: samuelcolvin/harrier
def test_extends_exclude_build(tmpworkdir):
    mktree(tmpworkdir, {
        'bower_components/package/path/lib_file.js': 'lib content',
        'src': {
            '_foo.html': """\
{{ 'lib_file.js'|S('lib_file.js') }}
start
{% block hello %}{% endblock %}""",
            'bar.html': """\
{% extends '_foo.html' %}
{% block hello %}
body
{% endblock %}""",
        },
        'harrier.yml': '\nroot: src'
    })
    config = Config()
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {
        'bar.html': 'lib_file.js\nstart\n\nbody\n',
        'lib_file.js': 'lib content'
    }
コード例 #25
0
ファイル: test_assets.py プロジェクト: samuelcolvin/harrier
def test_url_root(tmpworkdir):
    mktree(tmpworkdir, {
        'test.js': 'var hello = 1;',
        'harrier.yml': """\
root: .
assets:
  url_root: http://www.example.com
  active: True"""
    })
    config = Config('harrier.yml')
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {
        'test.js': 'var hello = 1;',
        'assets.json': """\
{
  "commit": "unknown",
  "files": {
    "test.js": "http://www.example.com/test.js"
  }
}
""",
    }
コード例 #26
0
ファイル: test_assets.py プロジェクト: samuelcolvin/harrier
def test_assets_blank_subdirectory(tmpworkdir):
    mktree(tmpworkdir, {
        'test.js': 'var hello = 1;',
        'harrier.yml': """\
root: .
subdirectory: my_static
assets:
  active: True"""
    })
    config = Config('harrier.yml')
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {
        'my_static': {
            'test.js': 'var hello = 1;',
            'assets.json': """\
{
  "commit": "unknown",
  "files": {
    "test.js": "/my_static/test.js"
  }
}
"""}}
コード例 #27
0
ファイル: test_assets.py プロジェクト: samuelcolvin/harrier
def test_url_root_full_path_subdirectory(tmpworkdir):
    mktree(tmpworkdir, {
        'test.js': 'var hello = 1;',
        'harrier.yml': """\
root: .
subdirectory: my_static
assets:
  active: True
  url_root: https://www.foobar.com/whatever"""
    })
    config = Config('harrier.yml')
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {
        'my_static': {
            'test.js': 'var hello = 1;',
            'assets.json': """\
{
  "commit": "unknown",
  "files": {
    "test.js": "https://www.foobar.com/whatever/test.js"
  }
}
"""}}
コード例 #28
0
ファイル: test_assets.py プロジェクト: samuelcolvin/harrier
def test_no_git(tmpworkdir):
    mktree(tmpworkdir, {
        'test.js': 'var hello = 1;',
        'harrier.yml': """\
root: .
assets:
  active: True"""
    })
    with patch('harrier.tools.subprocess.run') as mock_run:
        mock_run.side_effect = FileNotFoundError('testing')
        config = Config('harrier.yml')
        config.setup()
        build(config)
    assert gettree(tmpworkdir.join('build')) == {
        'test.js': 'var hello = 1;',
        'assets.json': """\
{
  "commit": "unknown",
  "files": {
    "test.js": "/test.js"
  }
}
""",
    }
コード例 #29
0
ファイル: test_jinja.py プロジェクト: samuelcolvin/harrier
def test_jinja(tmpworkdir):
    tmpworkdir.join('index.html').write('{{ 42 + 5 }}')
    config = Config()
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {'index.html': '47'}
コード例 #30
0
ファイル: test_general.py プロジェクト: samuelcolvin/harrier
def test_no_config(tmpworkdir):
    mktree(tmpworkdir, {'foo': 'bar'})
    config = Config()
    config.setup()
    build(config)
    assert gettree(tmpworkdir.join('build')) == {'foo': 'bar'}