Giter Club home page Giter Club logo

xjava's Introduction

xJava Build Status Join the chat at https://gitter.im/exercism/xjava

Source for Exercism Exercises in Java.

Contributing Guide

For general information about how to contribute to Exercism, please refer to the Contributing Guide.

Table of Contents

Overview

This guide covers contributing to the Java track. If you are new, this guide is for you.

If, at any point, you're having any trouble, pop in the Gitter exercism/dev room for help.

Contributing With Minimal Setup

First things first: by contributing to Exercism, you are making this learning tool that much better and improving our industry as a whole... thank you!!!

To submit a fix for an existing exercise or port an exercise to Java with the least amount of setup:

  1. Ensure you have the basic Java tooling installed: JDK 1.8+, an editor and Gradle 2.x.

    (see exercism.io: Installing Java)

  • Setup a branch on a fork of exercism/xjava on your computer.

    See GitHub Help: Forking. Use those instructions (in conjunction with Exercism Contributing Guide) to:

    • "fork" a repository on GitHub;
    • install git;
    • "clone" a copy of your fork;
    • configure an "upstream remote" (in this case, exercism/xjava);
    • create a branch to house your work
  • Write the codes. Do your work on that branch you just created.

    The Getting Familiar With the Codebase section, below, is an orientation.

  • Commit, push and create a pull request.

    Something like:

    $ git add .
    $ git commit -m "(An intention-revealing commit message)"
    $ git push
    

    Exercism Contributing Guide :: Commit Messages provides practical advice on crafting meaningful commit messages.

  • Verify that your work passes all tests. When you create a pull request (PR), GitHub triggers a build on Travis CI. Your PR will not be merged unless those tests pass.

Getting Familiar With the Codebase

There are two objectives to the design of this build:

  1. when a problem is built from within the xjava repo, the tests run against the "example" code (i.e. when you, the contributor, are developing the exercise);
  2. when a problem is built outside the xjava repo (when a participant is solving the exercise), the tests run against the "main" code.

This repo is a multi-project gradle build.

The exercises Module

This is the top-level module, contained in the exercises directory. It is a container for the problem sub-modules.

  • it's build.gradle points the "main" sourceset to the example code.
  • it's settings.gradle names each of the subprojects, one for each problem in the set.

The Problem Submodules

The exercises subdirectory contains all of the problem submodules. Each problem/submodule is a subdirectory of the same name as its slug.

  • it's build.gradle names dependencies required to work that problem.

Each problem/submodule has three source sets:

  • src/test/java/ — a test suite defining the edges of the problem
  • src/example/java/ — an example solution that passes all the tests
  • src/main/java/ — starter source files, if required/desired (this directory usually only has a .keep file in it).

Advanced: Complete Local Setup

If you are going to make significant contribution(s) to the track, you might find it handy to have a complete local install of exercism on your computer. This way, you can run the full suite of tests without having to create/update a PR.

The easiest way to achieve this is simply use the bin/journey-test.sh script. However, you may want to perform other tests, depending on what you are doing. You can do so by duplicating the setup performed by the bin/journey-test.sh script.

Tip: gradle clean before exercism fetch

If you exercism fetch after doing a build, the CLI will fail with the following error message:

$ exercism fetch java bob
2015/09/06 15:03:21 an internal server error was received.
Please file a bug report with the contents of 'exercism debug' at: https://github.com/exercism/exercism.io/issues

and if you review the logs of your x-api, you'll find:

127.0.0.1 - - [06/Sep/2015:15:20:56 -0700] "GET /v2/exercises/java/bob HTTP/1.1" 500 514949 0.2138
2015-09-06 15:21:01 - JSON::GeneratorError - source sequence is illegal/malformed utf-8:

This is because some files generated by the build can't be served from the x-api. This is by design: the CLI does not serve binaries. To fix this, simply make sure you do a clean in your xjava repo before you fetch:

cd ~/workspace/exercism/xjava/exercises
gradle clean
cd ~/workspace/exercism/exercises
exercism fetch java bob

License

The MIT License (MIT)

Copyright (c) 2014 Katrina Owen, [email protected]

xjava's People

Contributors

fridatveit avatar stkent avatar jtigger avatar morrme avatar kytrinyx avatar smarticles101 avatar matthewmorgan avatar javaeeeee avatar michaelspets avatar sit avatar odzeno avatar mraediaz avatar rado-radoev avatar vasouv avatar counterleft avatar wdjunaidi avatar di72nn avatar jmluy avatar rohit1104 avatar paulnoth avatar neovalkyrion avatar ultra-mk avatar t0tec avatar samilaine avatar sagarsane avatar dkinzer avatar davethomas11 avatar weibeld avatar bronhuston avatar austinlyons avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.